Arduino : accendere un led tramite linea seriale

Giovanni Bernardo | 14 gennaio 2011
Categorie: Arduino

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:

Puoi andare alla fine dell'articolo e lasciare un commento. I trackback e i ping non sono attualmente consentiti.

  1. #1 da gomez85 il 1 novembre 2011

    Leggendo il tuo articolo mi è sorto un dubbio, come poter comunicare una qualsiasi istruzione ad Arduino tramite seriale ovviamente senza utilizzare il suo monitor.
    Esempio ho Arduino connesso tramite USB al mio PC alla COM1 e tramite un software scritto in JAVA ad esempio voglio inviarli il comando per abilitare un PIN digitalWrite(PIN, HIGH) oppure voglio sapere il valore del sensore connesso sull’ingresso analogico analogRead(PIN)
    Sai se una cosa del genere è fattibile? se si quali sono le linee guida?
    Grazie in anticipo

  2. #3 da enzocavallaro il 5 marzo 2017

    Vi pongo una domanda forse banale: è possibile “flashare” il programma in arduino senza usare l’ide.
    Può essere necessario se si sviluppa un progetto per la rivendita, in modo da non fare i sorgenti ma solo l’hex.
    Grazie

Devi essere collegato per lasciare un commento.

  1. Ancora nessun trackback
Settorezero.com e il logo Zroid™ ©2007÷2017 Giovanni Bernardo - E' vietata la copia e la distribuzione anche parziale dei contenuti di questo sito web senza l'esplicito consenso dell'autore. I contenuti di settorezero.com sono distribuiti sotto una licenza Creative Commons Attribuzione-Non Commerciale-Non Opere derivate 2.5 Italia e sono soggetti alle condizioni definite nel disclaimer. Settorezero.com e tutti i suoi contenuti sono tutelati dalla legge sul diritto d'autore per cui i trasgressori sono perseguibili a norma di legge. Settorezero fa uso dei cookie leggi l'informativa estesa. Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche. Per contattare l'autore siete pregati di utilizzare la sezione contatti. Siamo presenti anche su Facebook e, meno assiduamente, anche su Twitter - Tumblr - Google+ - Blogspot - Youtube.
Creative Commons BY-NC-ND 2.5