due condizione con un if

Scusa rileggendo il codice nella dichiarazione del pin:

int tempPin = 0;

dovrebbe essere A0, perché penso il sensore sia analogico quindi lo avrai collegato ad A0 e non al pin 0, che fra l'altro è sconsigliato.

Vespucci:
Scusa rileggendo il codice nella dichiarazione del pin:

int tempPin = 0;

dovrebbe essere A0, perché penso il sensore sia analogico quindi lo avrai collegato ad A0 e non al pin 0, che fra l'altro è sconsigliato.

cambiato da A0 a A1 e A2 ma niente da fare ....
comunque prima funzionava lo stesso il monitor seriale...

hai sottomano altri led? per provare se è colpa di arduino o del led rgb

@Vespucci: penso che scrivere analogRead(0) sia equivalente a scrivere analogRead(A0)

:roll_eyes:

qui :wink:

se volete ho un immagine per farti capire la situazione ....

Uhm.... io rgb led non ne ho mai usati ma quei digitalwrite sei sicuro che devi metterli , perché mi sembra un controsenso se poi fai l'analogwrite ti rimangono sempre HIGH quei pin

edit: sto guardano un po in giro ma non mi sembra utilizzino digitalwrite con led rgb

Vespucci:
Uhm.... io rgb led non ne ho mai usati ma quei digitalwrite sei sicuro che devi metterli , perché mi sembra un controsenso se poi fai l'analogwrite ti rimangono sempre HIGH quei pin

quindi secondo te dovrei toglierli ho semplicente mettere un analogWrite (x,0)?

Ma metti // come fossero commenti e prova

edit: per me è un controsenso... ora guardo qualche led rgb in giro e ti dico

ariedit: qui nel codice non ci sono

Vespucci:
Uhm.... io rgb led non ne ho mai usati ma quei digitalwrite sei sicuro che devi metterli , perché mi sembra un controsenso se poi fai l'analogwrite ti rimangono sempre HIGH quei pin

edit: sto guardano un po in giro ma non mi sembra utilizzino digitalwrite con led rgb

poi anche se fosse che rimangono HIGH il led RGB fa un colore (che caso vuole è quello del "freddo")

Vespucci:
Ma metti // come fossero commenti e prova

gia fatto ... ma nulla

prova ad invertire i cavetti del led. se rimane sempre blu hai il led rotto

doppiozero:
prova ad invertire i cavetti del led. se rimane sempre blu hai il led rotto

fatto cambia colore....

ho esaurito le idee.. son sicuro che la soluzione sarà una stupidata, ci staremo perdendo in un bicchiere d'acqua :sweat_smile:

comprerò un arduino nuovo dato che penso sia quello il problema ....
GRAZIE A TUTTI PER L'AIUTO!

Aspetta !! fai prima delle prove.
Prima prova dei led normali sui pin che utilizzi per l'RGB e vedi se almeno il programma funziona.
Seconda cosa e spostare i pin su altri pin pwm tipo il 3,5 e il 6.

  1. hai messo dele resistenze sui LED?
  2. Se é un LEd RGB ha il anodo o il catodo comune?
  3. come hai collegato il LED RGB?

Prego una foto con piú luce dove si vedono i collegamenti dei fili.

Ciao Uwe

il primo test da fare è questo:

float tempC;      //dichiarazione di variabile
int tempPin = 0;  //inizializzazione del pin di Arduino
const int VERDE = 9;  
const int BLU = 10;  
const int ROSSO = 11;  


void setup()
{
  pinMode(VERDE, OUTPUT);  
  pinMode(BLU, OUTPUT);  
  pinMode(ROSSO, OUTPUT);  
  
Serial.begin(9600); 

  digitalWrite(VERDE, HIGH);  
  digitalWrite(BLU, HIGH);  
  digitalWrite(ROSSO, HIGH); 
}

void loop()
{
tempC = analogRead(tempPin);           //lettura valore del sensore
tempC = (5.0 * tempC * 100.0)/1024.0;  //conversione del dato analogico in temperatura
Serial.print(" Celsius ");
Serial.println(tempC);  


if(tempC<18.0)
  {
    digitalWrite( ROSSO, 1);
    digitalWrite( VERDE, 1);
    digitalWrite( BLU,0);
    Serial.println("blu");
  }
  else if(tempC >= 18.0 && tempC <= 22.0)
  {
    digitalWrite( ROSSO, 1);
    digitalWrite( VERDE, 0);
    digitalWrite( BLU,1);
    Serial.println("verde");
  }
  else 
  {
    digitalWrite( ROSSO, 0);
    digitalWrite( VERDE, 1);
    digitalWrite( BLU,1);
    Serial.println("rosso");
  }
}

naturalmente dicci quello che accade

Come prima prova, io la farei ancora più di base, facendo accendere i tre colori alternativamente con un delay in mezzo. Si può fare nel setup, in modo che all'accensione questo svolga la funzione di test del LED.
(Inoltre un bel delay(1000) prima del serial begin fa sempre bene).