Creative Commons BY-NC-ND 2.5Questo sito e tutto il suo contenuto sono distribuiti sotto la licenza Creative Commons Attribuzione - Non Commerciale - Non opere derivate 2.5 Italia e con le condizioni d'uso definite nel disclaimer: siete pregati di leggere entrambi questi documenti prima di usufruire dei contenuti di questo sito. Per alcuni contenuti è necessaria una registrazione gratuita: non è necessario pagare e non è necessario accumulare punteggi per accedere agli articoli e scaricare i sorgenti. Basta solo essere onesti. Se volete che questo sito continui a rimanere attivo, a contribuire ogni giorno alla diffusione della cultura libera, non copiate il materiale per ripubblicarlo in altri luoghi : chi fa questo è solo un miserabile e un perdente. Se volete partecipare su settorezero e rendere le vostre idee, i vostri progetti, fruibili da tutti senza limitazioni, come dovrebbe essere in un paese civile e acculturato, potete farlo tranquillamente.

Arduino : accendere un led tramite linea seriale

Autore: Giovanni Bernardo | Data pubblicazione: 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:

L'articolo ti è piaciuto o ti è stato utile per risolvere un problema? SettoreZero è realizzato soltanto contenuti originali: tutti gli articoli sono curati con passione dagli autori e nulla viene copiato da altri siti. Supporta e mantieni in vita SettoreZero con una donazione: basta soltanto un caffè o una birra. Puoi supportare SettoreZero anche con uno dei progetti elencati nella sezione servizi o partecipare anche tu con un tuo articolo/progetto personale.

Se desiderate che SettoreZero continui a rimanere gratuito e fruibile da tutti, non copiate il nostro materiale e segnalateci se qualcuno lo fa.

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

Devi essere collegato per lasciare un commento.

  1. Ancora nessun trackback
settorezero.com e il logo Zroid™ ©2007÷2013 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 a cui vanno aggiunte le condizioni d'uso 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.
Creative Commons BY-NC-ND 2.5
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.
Per essere aggiornato con tutte le novità di settorezero.com seguici anche anche su Facebook Twitter Tumblr Blogspot Youtube.