Pilotaggio di Arduino tramite tastiera
Questo progetto permette di comandare un led collegato ad Arduino tramite la tastiera del computer. Il funzionamento è elementare ma consente di capire come la porta seriale comunichi con la scheda Arduino.
Descrizione del progetto
[modifica]Il sistema è composto da un led si accende e spegne tramite opportuni comandi provenienti dal computer.
Comando | Azione |
---|---|
a
|
Accende il led |
s
|
Spegne il led |
Nel caso si scriva una qualsiasi altra lettera il sistema la ignora: infatti, viene specificato nel codice di cancellare ogni dato differente da quelli in tabella.
Schema di montaggio
[modifica]Lo schema di montaggio, naturalmente, è molto semplice. Da sottolineare che - avendo collegato il led al pin 13
- si accenderà anche il led incorporato sulla scheda.
Inoltre - all'avvio del codice - il led lampeggerà più volte per via dei dati inviati dal computer ad Arduino. Pure il led Rx
(corrispondente alla ricezione dati dalla porta seriale) lampeggerà ogni volta che verrà premuto un tasto.
Codice
[modifica]Inizialmente vengono definite tutte le costanti e le variabili
#define led 13
#define bitrate 9600
const char keyOn = 'a';
const char keyOff = 's';
char tastiera;
Nel setup
si specifica quale pin viene usato come uscita per controllare il led, si imposta la comunicazione seriale e la sua velocità di trasmissione.
void setup() {
Serial.begin(bitrate);
pinMode(led, OUTPUT);
}
Nel corpo del programma si specifica che - se la variabile tastiera
- contiene la lettera a
il led viene acceso, se contiene la lettera s
il led viene spento.
Mentre se si preme un qualsiasi altro tasto (o sequenza di tasti) il flusso di dati viene ignorato.
void loop() {
tastiera = Serial.read();
switch(tastiera){
case keyOn:
digitalWrite(led, HIGH);
break;
case keyOff:
digitalWrite(led, LOW);
break;
default:
Serial.flush();
break;
}
}
Decodifica di un testo nel suo codice ASCII
[modifica]Di seguito viene mostrato un codice che quando riceve un messaggio dal monitor seriale dell'IDE di Arduino, restituisce i codici ASCII dei caratteri contenuti.
int ByteRicevuto = 0; // Per i dati seriali acquisiti
void setup() {
Serial.begin(9600); // Inizializza la porta seriale, imposta il bitrate a 9600 bps
}
void loop() {
// Trasferisce dati solo quando li riceve
if (Serial.available() > 0) {
// legge il byte ricevuto
ByteRicevuto = Serial.read();
// Trasmette quello che ha ricevuto
Serial.print("Ho ricevuto: ");
Serial.println(ByteRicevuto, DEC);
}
}
Espansioni suggerite
[modifica]È possibile controllare più led (o altri dispositivi) e inviare anche dati da Arduino al computer (tramite appositi sensori) come pulsanti o altro.