Arduino : accendere un led tramite linea seriale

L’esempio forse è banale per i più, ma dato che mi sono ritrovato a scriverlo per aiutare una persona, tanto vale metterlo on-line perchè possa servire ad altri.

In questo semplice esempio andiamo ad accendere/spegnere il led già integrato sulla scheda di Arduino, connesso alla porta n°13. Il led verrà pilotato da comandi inviati sulla linea seriale.

In particolar modo digitando la lettera L (sia maiuscola che minuscola), il led invertirà il suo stato e questa condizione viene anche riportata sulla seriale.

Premendo un pulsante diverso da L, non si avrà nessun effetto e su seriale verrà restituito il tasto premuto.

Il codice è abbastanza commentato per cui non penso ci sia bisogno di spiegarlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
Esempio di accensione del led connesso sulla porta 13
da un comando inviato sulla porta seriale.
 
Bernardo Giovanni
www.settorezero.com
*/
 
#define led 13  // led connesso al pin n°13
byte rx = 0;    // variabile per contenere il carattere ricevuto
 
void setup()
	{
	Serial.begin(9600); // imposto la UART per lavorare a 9600
	pinMode(led, OUTPUT); // imposto il pin sul quale è collegato il led come uscita
	Serial.flush(); // svuoto il buffer di ricezione seriale
	}
 
void loop()
	{
 
	if (Serial.available() >0) // Controllo se il buffer di ricezione contiene qualcosa
		{
		rx = Serial.read(); // leggo il carattere ricevuto e lo memorizzo in rx
		Serial.flush(); // svuoto il buffer di ricezione seriale
 
		if (rx=='L' || rx=='l') // ho ricevuto la L maiuscola o minuscola
			{
 
			if (digitalRead(led) == HIGH) // il led era acceso?
				{
				digitalWrite(led,LOW); // lo spengo
				Serial.println("Led spento");
				}
			else // il led era spento
				{
				digitalWrite(led,HIGH); // lo accendo
				Serial.println("Led acceso");
				}
 
			}
 
		else // non ho ricevuto la L
 
			{
			Serial.print("Hai premuto: ");
			Serial.print(rx,BYTE);
			Serial.println();
			}
		}
	}

La prova di funzionamento la possiamo eseguire dallo stesso terminale seriale di Arduino, accessibile dal menù Tools -> Serial Monitor:

Digitando la lettera L viene invertito lo stato del Led:

Se questo articolo ti è piaciuto, condividilo su un social:
Se l'articolo ti è piaciuto o ti è stato utile, potresti dedicare un minuto a leggere questa pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)