Introduction to Arduino
Click here to load reader
Transcript of Introduction to Arduino
n. 1 / ottobre 2008
In questo numero:
Scrivere documenti in LATEXLogical Volume Manager
ArduinoLinux nelle aziende
Arduino
Marco Triverio <[email protected]>
Che cos’e Arduino?
Vi piacerebbe comandare l’iPod viaBluetooth? Vi piacerebbe comanda-
re la macchina del caffe dal computer?Sapete poco o niente di elettronica e diprogrammazione? Allora Arduino fa pervoi!
Arduino e una piattaforma di sviluppoopen-source e si presenta nelle fattezzedi una piccola scheda delle dimensioni diun pacchetto di sigarette. Su di essasono saldati tutti i componenti che viservono: il “cervello elettronico” (ovve-ro un microcontrollore ATmega), i com-ponenti per collegare Arduino al compu-ter (in pratica una porta USB e un con-vertitore seriale-USB) e le connessioni ver-
so l’esterno (digital input/output e analoginput).
Cosa si puo fare con
Arduino?
Dopo aver spiegato alle persone cosa siaArduino, queste mi domandano cosa esat-tamente si possa fare con questa scheda:la risposta non e cosı facile perche Ardui-no e davvero molto flessibile e le possibilitasono pressoche infinite.Per cercare di soddisfare la vostra curio-sita vi propongo alcuni esempi di oggettirealizzati con Arduino:
• macchina del caffe Gaggia controllata daArduino e collegabile al computer: final-mente potrete dire “Il mio PC fa ancheil caffe!”:http://www.blog.nashlincoln.com/espresso/gaggia-espresso-pid-arduino-mod
• 3D Modelling prendendo a calci unasacca da boxe:http://www.fluidforms.at/de/CassiusVideo.php
• schermo interattivo:http://it.youtube.com/watch?v=a0QkrciZDf4
10
11 Arduino
• comandare un’interfaccia fatta in Flashutilizzando Arduino e dei sensori didistanza:http://it.youtube.com/watch?v=4VgqolVKOzM
• Arduino fa anche parte del mio progettodi tesi di primo livello; ho infatto costrui-to “Arduway”, un robot con due ruo-te poste sullo stesso asse (proprio co-me un Segway) in grado di rimanere inequilibrio.
Come vedete le possibilita sono piu omeno sterminate... (se invece non neavete ancora abbastanza, date un occhio ahttp://www.arduino.cc/playground/Projects/ArduinoUsers).
Ma e davvero possibile creare tutto que-sto con conoscenze di elettronica e infor-matica basilari? La risposta e: sı! Co-me avete forse notato dagli esempi prece-denti, uno degli utilizzi principali di Ardui-
no e quello che ne fanno artisti e disegnerall’interno di esposizioni animate.
Incominciamo!
La prima cosa da fare e acquistare unArduino (andate su www.arduino.cc ecliccate su “Buy”) o farvene prestareuno da qualche vostro amico: dovre-te installare tutto il software necessa-rio, solitamente l’IDE (disponibile ancheper Linux su http://www.arduino.cc/playground/Learning/Linux) e un dri-ver. A questo punto siete pronti a fare ilvostro primo esperimento: far lampeggiareun led. Se possedete un Arduino poco re-cente (come “Arduino NG” o precedenti)dovrete acquistare un LED in un qualun-que negozio di elettronica; se invece aveteun Arduino piu recente (come ad esempio“Arduino Diecimila”) potete saltare questopasso e passare alla creazione del software.
A questo punto aprite il programma escrivete il seguente codice:
// il LED e collegato al digital// pin 13int ledPin = 13;
// eseguito una sola voltavoid setup(){// imposta il 13esimo pin// come uscitapinMode(ledPin, OUTPUT);
}
// ripetuto all’infinitovoid loop()
Arduino 12
{// accende il LEDdigitalWrite(ledPin, HIGH);
// attende un secondodelay(1000);
// spegne il LEDdigitalWrite(ledPin, LOW);
// attende un secondodelay(1000);
}
(ulteriori informazioni su http://www.arduino.cc/en/Tutorial/Blink)
Non scappate! Se conoscete il C que-ste istruzioni dovrebbero esservi familiari;in caso contrario non preoccupatevi: impa-rerete in fretta. Tutti i programmi per Ar-duino sono divisi in due sezioni, chiamatesetup() e loop(): la prima contiene tut-te le istruzioni che devono essere eseguiteappena Arduino viene acceso; la secondainvece contiene le istruzioni che verrannoeseguite dopo la prima fase e verranno ri-petute all’infinito (a meno che non si stac-chi la corrente).Nel caso in esame la funzione setup() in-clude una singola istruzione che impostail tredicesimo I/O digitale (quello su cuiverra attaccato il led) come uscita. Se in-vece avessi voluto leggere il valore presente(magari perche impostato da qualche altrodispositivo) su quella porta avrei dovuto di-gitare "pinMode(ledPin, INPUT);". Leistruzioni presenti nella funzione loop()invece servono a far lampeggiare il led:
• la funzione digitalWrite() impostaun determinato valore di tensione, che
puo essere alto (circa 5 Volt) o basso(circa 0 Volt): il valore HIGH fara dun-que accendere il led, un valore basso lomanterra invece spento; chi conosce unpochino di elettronica potrebbe obietta-re che 5 V potrebbero bruciare il LED,ma in realta la tredicesima porta digita-le ha in serie una resistenza che limita lacorrente e permette di non danneggiarlo;
• l’istruzione delay() invece mette il pro-cessore di Arduino in attesa per un nu-mero di millisecondi specificato (in que-sto caso 1000, pari dunque a un secon-do): siccome il LED viene acceso e spen-to con pause di un secondo, lo si vedralampeggiare.
Installate a questo punto il led nella tre-dicesima porta, collegate Arduino alla por-ta USB (dovrebbe accendersi un picco-lo LED) e selezionate dai menu “Tools”> “Serial Port” > “/dev/tty.usbserial” e“Tools” > “Board” > “Nome del vostroArduino”.
Compilate a questo punto il program-ma premendo “Verify” (il tasto che asso-miglia ad un play) e caricatelo cliccando su“Upload to I/O Board”; solo nel caso in
13 Arduino
cui abbiate un Arduino meno recente nonapppena avete cliccato resettate l’Arduinopremendo il pulsante presente a fianco delmicrocontrollore. Se non avete fatto erroridopo pochi istanti il LED lampeggera.
Comunicazione con il com-
puter
Se vi state chiedendo come comunicare conil computer basta imparare la “procedurastandard”:
• nella sezione setup() includetel’istruzione Serial.begin(9600);
• usate Serial.print("Stringa...");o Serial.println("Stringa...");tutte le volte che volete stampareandando eventualmente a capo;
• per leggere i valori inviati da Ardui-no avviate il programma e cliccate sulpulsante della toolbar “Serial Monitor”.
In basso compariranno tutti i carat-teri ricevuti; potrete anche inviarnedi vostri ad Arduino: perche peroquesti vengano gestiti correttamente ilprogramma dovra includere l’istruzio-ne incomingByte = Serial.read();che memorizza all’interno della variabileincomingByte il valore ricevuto.Ecco un piccolo programma di esempio:
// memorizza valore in ingressoint incomingByte = 0;
void setup() {// apre la comunicazione// seriale impostando un data
// rate di 9600 bpsSerial.begin(9600);}
void loop() {// manda dati solo quando// vengono ricevuti datiif (Serial.available() > 0){// legge il byte inviatoincomingByte = Serial.read();
// rispedisce il byte lettoSerial.print("Ho ricevuto: ");Serial.println(incomingByte,
DEC);}}
E ora?
Ora date sfogo alla vostra fantasia e at-tendete con ansia il prossimo numero delGiornaLinux, in cui spieghero una tema-tica leggermente piu avanzata. Buondivertimento!