Sto cercando una soluzione da giorni al mio problema e non ho trovato topic simili :~
Sto provando a ricevere una stringa di numeri con arduino da PC via seriale. Il PC con Ubuntu tramite seriale invia dei valori ad arduino connesso via usb. I valori vanno da tot negativo a tot positivo.
Quando arduino riceve il valore lo utilizza per far aumentare o diminuire la luminosità di un led collegato su un pin PWM (ovviamente sto provando con valori fino a 255).
Per valori positivi tutto ok, la luminosità del led varia perfettamente rispetto al valore inviato.
Sono in crisi sui valori negativi.
Come faccio a far distinguere ad arduino per esempio un 150 da un -150?
(ovviamente non voglio far accendere un led con tensione negativa ma è un test che mi serve per capire se arduino riesce a leggere i valori negativi)
Quindi come faccio ad accendere il led A per valori positivi (con PWM) e il led B per valori negativi (con PWM)?
Grazie hard_uino la tua soluzione è proprio quella che fa a caso mio
Ho provato le varie soluzioni appena ho potuto.
Il programma ora con la funzione "Serial.parseInt()" funziona perfettamente ed i led vanno a meraviglia sia per valori positivi che negativi.
Problema risolto
Scrivo qui sotto il programma completo.
Grazie a tutti per le altre risposte
int led1 = 9;
int led2 =11;
void setup() {
Serial.begin(9600); // apro la seriale
delay(1000);
}
void loop() {
if (Serial.available()!=0){
int lettura =Serial.parseInt() ;
//Se lettura ha un valore negativo accendi led 1
if(lettura < 0){
lettura=-lettura;
analogWrite(led1, lettura);
analogWrite(led2, 0);
//altrimenti se lettura ha un valore positivo accendi led 2
}else{
analogWrite(led2, lettura);
analogWrite(led1, 0);
}
}
}