Arduino Reloaded

5

Transcript of Arduino Reloaded

Page 1: Arduino Reloaded
Page 2: Arduino Reloaded

Arduino Reloaded

Marco Triverio <[email protected]>

Eccoci al secondo articolo suArduino: la scorsa puntata abbiamo

visto come scrivere i nostri primi dueprogrammi; oggi ci confronteremo conalcuni degli usi piu originali che si possonofare con questa scheda completamenteopen.Se ancora non vi fosse perfettamentechiaro cosa sia possibile fare con Ardui-no, vi invito a convincervi che nulla eimpossibile: l’articolo dello scorso numerodi GiornaLinux e le centinaia di video suYouTube dovrebbero togliervi ogni dubbio!Ecco comunque qualche altro riferimento:

guida introduttiva denomina-ta “Arduino Booklet” (http://www.arduino.cc/en/uploads/Booklet/Arduino_booklet02.pdf);

“reference” completa e aggiornata ri-guardante tutte le funzioni di al-to livello (http://arduino.cc/en/Reference/HomePage);

esempi “pronti all’uso” con tantodi spiegazioni passo passo e im-magini (http://www.arduino.cc/playground/);

per i dettagli di “basso livello”,

come registri e timer, e disponibi-le il datasheet del microcontrolloreATmega (ovvero il cervello elettro-nico) montato su Arduino (http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf).

Musica maestro!

Chi ha detto che arte e informatica nonvadano d’accordo? Come abbiamo vistoArduino e uno strumento flessibile e di fa-cile utilizzo e proprio per questo motivo eutilizzato da designer e artisti di tutto ilmondo.Un esempio? Con Arduino potete costrui-re una tastiera MIDI minimale oppure, piusemplicemente, potete memorizzare qual-che canzoncina e farla suonare non appenaun sensore vi segnala un particolare evento:la cosa piu semplice e sicuramente utiliz-zare un pulsante (“push-button”) ma po-tremmo anche scegliere un sensore di luce,un sensore di distanza, eccetera.Vediamo un semplice esempio che dimo-stra come questo sia possibile con pocherighe di codice. Per questo piccolo pro-getto, oltre ad Arduino, ci servira un buz-zer (lo trovate in un qualsiasi negozio dielettronica) e, nel caso volessimo rendereil tutto piu interattivo, un sensore.

3

Page 3: Arduino Reloaded

Arduino Reloaded 4

#define c 3830 // 261 Hz#define d 3400 // 294 Hz#define e 3038 // 329 Hz#define f 2864 // 349 Hz#define g 2550 // 392 Hz#define a 2272 // 440 Hz#define b 2028 // 493 Hz#define C 1912 // 523 Hz#define P 0 // pausa

// input e outputint buzzer = 9;int sensore = 2;

// melodia e tempoint melodia[] = { c, e, g, P, c,e, g, P};

int battute[] = { 16, 16, 16, 8,16, 16, 32, 16 };

int numNote = sizeof(melodia)/2;long tempo = 10000;int durataPausa = 1000;int contPausa = 100;

int notaCorr = 0;int battutaCorr = 0;long durataNota = 0;

void suonaNotaCorrente() {long tempoTrasc = 0;

// se non e una "P" riproduce// suono ad una certa frequenzaif (notaCorr > 0) {while (tempoTrasc<durataNota){

digitalWrite(buzzer,HIGH);delayMicroseconds(

notaCorr/2);digitalWrite(buzzer, LOW);delayMicroseconds(

notaCorr/2);

// aggiorna tempo trascorsotempoTrasc += notaCorr;

}}// nel caso di una "P"else {for (int j=0; j<contPausa; j++)

delayMicroseconds(durataNota);

}}

void setup() {pinMode(buzzer, OUTPUT);pinMode(sensore, INPUT);

}

void loop() {// la canzone viene suonata// se il bottone e premutoif (digitalRead(sensore)==HIGH){// ciclo su tutte le notefor (int i=0; i<numNote; i++)

Page 4: Arduino Reloaded

5 Arduino Reloaded

{notaCorr = melodia[i];battutaCorr = battute[i];durataNota =

battutaCorr*tempo;suonaNotaCorrente();

}}

}

Per la gestione del volume convie-ne utilizzare una nuova funzione:analogWrite(). Questa permette diimporre su una certo pin un valore analo-gico, ovvero non solo 0 o 5 V ma anchemolti valori intermedi con gradini di circa19mV: cio avviene utilizzando una tecnicanotissima detta PWM, spiegata anche apagina 39 dell’Arduino Booklet.

Wearable computing

Una delle frontiere piu interessanti del-l’informatica e, a mio avviso, il “wearablecomputing”, ovvero l’arte e la scienza didotare i comuni capi d’abbigliamento didispositivi elettronici come speaker, LED,etc... Il risultato si presta quasi sempre aigoliardici e agli esibizionisti ma l’effetto eindubbiamente originale.Arduino, anche in questo campo, sidimostra all’avanguardia proponendo unaversione ridotta, appiattita e alleggeritadella scheda, dal nome LilyPad Arduino.Ogni elemento connesso alla scheda vieneriprogettato da zero, a partire dai cavi:non piu fili metallici coperti da una guainadi plastica ma veri e propri fili da cucitocon capacita conduttive.Per approfondire: http://arduino.

cc/it/Guide/ArduinoLilyPad ehttp://www.arduino.cc/en/Main/ArduinoBoardLilyPad.

Processing

Se Arduino rende facile e immediata la pro-grammazione di un microcontrollore, Pro-cessing (http://www.processing.org/)fa lo stesso con Java. Ma cosa c’entra Ar-duino con Processing?Processing fornisce un’interfaccia graficaalle vostre creazioni con Arduino, facen-do sı che questo venga comandato trami-te un normale programma che gira sul vo-stro computer, oppure che diventi un veroe proprio dispositivo di input per il vostroprogramma; il tutto, naturalmente, scri-vendo pochissime linee di codice!Se ad esempio voleste disegnare sulloschermo del vostro computer utilizzando,al posto di mouse e tastiera, alcuni tragli innumerevoli sensori a disposizione diArduino, Processing vi permetterebbe diricevere ed elaborare con grande facilita(anche grazie ad un linguaggio partico-larmente familiare) i segnali provenientida Arduino. Trovate degli esempi bendocumentati su: http://tinyurl.com/processing-examples.

Page 5: Arduino Reloaded

Arduino Reloaded 6

Arduino e La Fonera

Finora abbiamo sempre visto Arduino co-me il cervello elettronico di ogni progetto:se da un lato questa e un’ipotesi ragio-nevole per la maggior parte delle vostrecreazioni, dall’altro e bene sapere cheArduino puo essere utilizzato anche comeponte verso altri strumenti elettronici.

Negli scorsi mesi ho acquistato su internetuna Fonera (www.fon.com) e, curiosodi capire come questa funzionasse, horimosso il coperchio protettivo e ho notatoil cosiddetto “pettine” maschio che, aseconda del modello, ha una delle dueconfigurazioni mostrate in figura: o 4 o 8pin. Solo 3 di questi piedini sono di nostrointeresse (massa, trasmissione e ricezione);tramite questi e possibile interagire conLa Fonera come se le stessimo attaccandouna tastiera e un monitor. L’unico scoglioda superare e saldare un cavetto pereffettuare il collegamento fisico.Una volta collegati terra de La Fonera conterra di Arduino, TX de La Fonera con RXdi Arduino (pin 0) e RX de La Fonera conTX di Arduino (pin 1) la comunicazionee veicolata tramite una normalissima

seriale a 9600bps e possiamo dunquesfruttare il convertitore Seriale-USB di cuidispone Arduino: perche questa avvengasenza disturbi e necessario rimuovere ilmicrocontrollore (e il chip piu grande sullascheda) facendo delicatamente leva suilati corti dello zoccolo tramite cui e fissato.

Apriamo ora un programma sul computerche permetta di inviare e ricevere dati sul-la seriale, come ad esempio minicom suLinux e Zterm su Mac OS X. A questopunto e possibile esplorare ogni meandrodella vostra Fonera: come prima cosa no-terete con piacere che il sistema operativode La Fonera e Linux! In piu, premendoctrl+C nei primi secondi della fase di avvio,sarete catapultati all’interno del bootloa-der e, facendo molta attenzione ai coman-di che fornite e alle licenze che rischiatedi calpestare, potrete capire come funzio-nino l’aggiornamento e il caricamento delfirmware.