void loop(){
if (Serial.available() > 0){
int commandByte = Serial.read();
if (commandByte == 'n'){
digitalWrite(LED_PIN, HIGH);
Serial.println("LED on");
} else if (commandByte == 'f') {
digitalWrite(LED_PIN, LOW);
Serial.println("LED off");
} else {
Serial.print("Unknown commandByte: ");
Serial.println(commandByte);
}
}
}
Tale programma, mi permette tramite il serial monitor di controllare l'accensione-spegnimento di un led da tastiera, semplicemente digitando n (per accendere il led) e f (per spegnere il led).
Ora vorrei chiedervi gentilemente se sapresti dirmi come fare accendere il led digitando on e spegnerlo digitando off.
Ho già provato a sostituire le lettere n e f con le parole on e off ma non mi funziona. Avete dei consigli?
nella documentazione del serial dice che:
"Returns
the first byte of incoming serial data available (or -1 if no data is available) - int"
quindi solo il primo byte di tutto il buffer, quindi con un solo read non potrai mai avere due lettere assieme.
devi fare un loop che fa il read n volte, ed ad ogni lettura l'accodi in un tuo buffer, in modo da ricomporre la parola.
Devi scrivere il byte che arrivano dalla seriale in un array e poi fare un confronto tra 2 stringhe.
Le cose non sono cosí semplici come potresti pensare.
Il primo inghippo é la lunghezza differente delle 2 parole.
Ti aiuto starera.
Ciao Uwe
char Data[8];
int i;
unsigned long Tempo;
void setup()
{
Serial.begin(9600);
}
void loop(){
do {
if (Serial.available()) {
Data[i] = Serial.read();
i++;
}
if(i<1)Tempo = millis();
} while (i<7&&(millis()-Tempo) < 500);
Data[i] = 0;
}
Questo codice riceve fino a 7 byte aspettando mezzo secondo il termine della trasmissione.
In questo modo puoi trasmettere un numero diverso di caratteri.
Poi devi controllare se nell#array c'é scritto on o off.
Mi riallaccio a questo discorso per non aprire un nuovo topic.... credo sia possibile fare ciò: con una tastiera e 2 led e se inserisco un codice su tastierino se è esatto mi accende il led verde se errato mi accende il led rosso.... come posso fare? diciamo che i miei dubbi sono più sul collegamento del tastierino ad arduino e sulla scritta del programma...
ps: ma cosa sono le librerie? scusate la mia ignoranza ma non è nemmeno una settimana che pratico con arduino...