Nei progetti precedenti il PC è stato utilizzato solo per programmare Arduino. Una volta caricato lo sketch in Arduino, la sceda poteva funzionare, eseguendo le istruzioni impartite, anche scollegata dal PC e collegata ad una powerbank o alla batteria da 9 volt tramite l'apposito adattatore presente del kit Arduino.
In questo progetto invece il PC, ed in particolare la tastiera del PC, continuerà ad interagire con Arduino. Infatti la comunicazione seriale può essere usata anche per inviare dati dal PC ad Arduino durante l'esecuzione dello sketch.
In questo caso, premendo il tasto 'a' sulla tastiera, invieremo tale carattere ad Arduino, che potrà leggerlo attraverso l'istruzione 'Serial.read ()', ed interpretato come nostra volontà di accendere il Led.
Analogamente premendo 's' sulla tastiera del PC, imporremo lo spegnimento del Led.
Costruire il seguente circuito:
Leggere, comprendere, trascrivere nell'IDE il seguente codice e dunque caricalo su Arduino:
Se tutto è stato fatto correttamente, aprendo il Monitor seriale nell'IDE e digitando 'a' seguito dal tasto 'Invio', si accende il Led e con 's', sempre seguito dal tasto "Invio", si spegne.
Se però volessimo interpretare un maggior numero di tasti, oltre ad "a" ed "s", si potrebbe usare un altro tipo di istruzione alternativo all'if.
Si tratta delle istruzioni 'switch' e 'case'.
Se poi volessimo programmare il tasto 'l' (elle) per far lampeggiare il Led 10 volte, saremmo costretti a scrivere 10 volte le stesse istruzioni, invece lo facciamo una volta solo attraverso il ciclo 'for'.
Ovvero
'for (int x = 1; x<11; x=x+1) { istruzioni da eseguire 10 volte }'
che significa: per 'x' che va da 1 fino a quando 'x' è minore di 11, incrementando 'x' di una unità ogni volta, ripeti le istruzioni racchiuse tra {}.
Leggere, comprendere, copiare ed incollare nell'IDE il seguente codice e caricalo su Arduino:
Se tutto funziona bene, con il tasto 'a' si accende il Led, con 's' si spegne il Led, mentre con 'l' (elle) si fa lampeggiare 10 volte, sempre premendo successivamente il tasto "Invio" della tastiera del PC.
E' possibile convertire la variabile 'lettera' di tipo char in un valore numerico (corrispondente al codice ASCII) attraverso il comando int(lettera) oppure trasformare lettera in una stringa di testo attraverso il comando String(lettera).
In particolare, se lettera contiene il carattere 'a', int(lettera) restituisce il valore 97, mentre per 's' restituisce il valore 115.
Interessante è scoprire che i caratteri da '1' a '9' restituiscono valori da 49 al 57 e quindi possiamo utilizzare i tasti da '1' a '9' per far lampeggiare il led un numero di volte corrispondente al tasto premuto. in tal caso si potranno aggiungere le seguenti istruzioni prima dell'ultima parentesi graffa:
if (int(lettera)>= 49 & int(lettera)<=57) {
Serial.println ("Led lampeggiante "+String(lettera)+" volte");
for (int x = 1; x<(int(lettera)-47); x=x+1) {
digitalWrite (13,HIGH);
delay(500);
digitalWrite (13,LOW);
delay(500);
}
}