Introduction to Arduino

5

Click here to load reader

Transcript of Introduction to Arduino

Page 1: Introduction to Arduino

n. 1 / ottobre 2008

In questo numero:

Scrivere documenti in LATEXLogical Volume Manager

ArduinoLinux nelle aziende

Page 2: Introduction to Arduino

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

Page 3: Introduction to Arduino

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()

Page 4: Introduction to Arduino

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

Page 5: Introduction to Arduino

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!