Archivi tag: arduino duemilanove

Arduino – lezione 03: controlliamo un led con un pulsante

Impariamo in questa lezione ad usare un sensore per controllare l’accensione di un diodo led. Useremo il più semplice dei sensori: il pulsante.

Scopo della lezione:
realizzare un programma che permette di accendere una luce quando premiamo un pulsante e quando viene nuovamente premuto il pulsante spegne la luce, comportamento analogo a quello che si ha per un impianto di illuminazione.

Per controllare lo stato di un pulsante utilizzeremo l’istruzione digitalRead(), questa istruzione legge il valore su uno specifico pin digitale che può assumere due valori, HIGH o LOW, detto in modo meno informatico e più elettronico, verifica se su un determinato pin è applicata una tensione di +5V (definito HIGH) o 0V (definito LOW).

Nella lezione 2 abbiamo realizzato un programma che permetteva di far lampeggiare un led, con la nuova istruzione digitalRead() siamo in grado di eseguire qualcosa di più evoluto, l’accensione di un led solamente se cambia una situazione esterna, in questo esercizio, lo stato di un pulsante.
Quindi con digitalRead() possiamo leggere uno stato di un sensore e memorizzare questo stato nella memoria di Arduino per fare qualcosa.

Per procedere con questa lezione abbiamo necessità di un po’ di hardware elettronico:

  • 1 breadboard
  • 1 pulsante
  • 1 diodo led
  • 1 resistenza da 10 K Ohm
  • filo elettrico per breadboard
  • ed ovviamente Arduino duemilanove 🙂

Il circuito che deve essere realizzato è il seguente.

l’immagine è stata realizzata utilizzando Fritzing

Dettagli sui collegamenti:

Questo l’immagine del circuito reale:

Ricordate di collegare il catodo del diodo LED su GND e l’anodo all’uscita digitale 13.

Questo il codice usato per controllare il LED:

// Esempio 01: accendi il led appena è premuto il pulsante

#define LED 13                // LED collegato al pin digitale 13
#define BUTTON 7              // pin di input dove è collegato il pulsante
int  val = 0;                 // si userà val per conservare lo stato del pin di input

void setup() {
  pinMode(LED, OUTPUT);       // imposta il pin digitale come output
  pinMode(BUTTON, INPUT);     // imposta il pin digitale come input
}

void loop() {
  val = digitalRead(BUTTON);  // legge il valore dell'input e lo conserva

  // controlla che l'input sia HIGH (pulsante premuto)
  if (val == HIGH) {
    digitalWrite(LED, HIGH);  //accende il led
  }
  else {
    digitalWrite(LED, LOW);   //spegne il led
  }
}

Come potete constatare oltre all’istruzione digitalRead() in grado di leggere lo stato di un sensore esterno abbiamo anche l’istruzione if e if…else

L’istruzione if…else consente di prendere delle decisioni in funzione del fatto che una determinata condizione logica sia VERA o FALSA.
Nel caso in cui la condizione sia VERA viene eseguito il primo blocco di istruzioni, nel caso in cui la condizione sia FALSA, viene eseguito il secondo blocco di memoria.
La condizione logica espressa tra parentesi tonde, segue la parola if

Esempio:

if (x < 100)
{
  // blocco A
}
else
{
  // blocco B
}

Se la condizione X<100 è vera viene eseguito il blocco di istruzioni del “blocco A”, se la condizione X<100 è falsa viene eseguito il blocco di istruzioni del “blocco B”.

Nota:
Dire che una condizione è VERA vuol dire che assume un valore binario pari a 1, ma in senso booleano, è VERA qualsiasi condizione diversa da zero, per cui -50, -7, -1, 3, 9 sono tutti considerati VERO in senso booleano.
Per maggiori dettagli si consulti il reference su Arduino.cc

Tornando al codice del programma “Esempio 1” notate che ho usato “==” invece che “=” per confrontare due elementi.

Nel linguaggio di programmazione di Arduino il simbolo “==” (vai al manuale) viene utilizzato per confrontare due entità (confronto logico) e restituisce TRUE o FALSE, mentre il simbolo “=” (vai al manuale) viene utilizzato per assegnare un valore ad una variabile.

Analizziamo il programma

Poiché vogliamo ottenere una funzionalità simile a quello di un interruttore per attivare l’illuminazione in una casa, bisogna in qualche modo ricordare lo stato del pulsante, per far ciò definiamo una variabile intera di nome val a cui assegnamo inizialmente il valore 0.

Come potete vedere nel programma useremo val per conservare il valore di digitalRead()

I valori di qualsiasi variabile usata con Arduino vengono inseriti nella memoria RAM, valori che vengono persi una volta che si toglie l’alimentazione alla scheda Arduino.

All’interno della codice di loop() viene assegnata alla variabile val lo stato del valore di input mediante l’istruzione digitalRead(BUTTON), ovvero l’istruzione legge il valore dell’input (pulsante) e restituisce un valore 0 oppure 1:

// legge il valore dell'input e lo conserva
val = digitalRead(BUTTON);

successivamente viene controllato mediante l’istruzione if…else se il pulsante è premuto:

  // controlla che l'input sia HIGH (pulsante premuto)
  if (val == HIGH) {
    digitalWrite(LED, HIGH);  //accende il led
  }
  else {
    digitalWrite(LED, LOW);   //spegne il led
  }
}

Se il valore di val è HIGH (valore logico 1) vuol dire che il pulsante è premuto e allora, tramite l’istruzione “digitalWrite(LED, HIGH);” viene acceso il LED, se il primo confronto risulta falso, ciò vuol dire che il pulsante non è premuto come conseguenza viene eseguita la parte di codice else che spegne il LED,  ciò viene eseguito con l’istruzione: “digitalWrite(LED, LOW);”

Però lo scopo di questa terza lezione è quello di realizzare un circuito simile a quello di un impianto di illuminazione: “premo il pulsante accendo la luce, premo una seconda volta e spengo la luce”, l’esempio 1, ci costringe a mantenere il dito sul pulsante per mantenere acceso il led.

Questa la prima versione del programma che risolve il problema:

// Esempio 02: accendi il led appena è premuto il pulsante mantenendolo acceso quando si rilascia
// premendo una seconda volta il pulsante spegne il led

#define LED 13                // LED collegato al pin digitale 13
#define BUTTON 7              // pin di input dove è collegato il pulsante
int val = 0;                  // si userà val per conservare lo stato del pin di input
int stato = 0;                // ricorda lo stato in cui si trova il led, stato = 0 led spento, stato = 1 led acceso

void setup() {
  pinMode(LED, OUTPUT);       // imposta il pin digitale come output
  pinMode(BUTTON, INPUT);     // imposta il pin digitale come input
}

void loop() {
  val = digitalRead(BUTTON);  // legge il valore dell'input e lo conserva

  // controlla che l'input sia HIGH (pulsante premuto)
  // e cambia lo stato del led
  if (val == HIGH) {
    stato = 1 - stato;
  } 

  if (stato == 1) {
    digitalWrite(LED, HIGH);   // accende il led
  }
  else {
    digitalWrite(LED, LOW);    //spegne il led
  }
}

Prima di provare il risultato su Arduino vediamo come funziona il programma.

Passo 1: pulsante non premuto – diodo spento

Il valore assunto da val è 0 in quanto il pulsante non è premuto (l’istruzione “digitalRead(BUTTON);” restituisce 0), la condizione logica val == HIGH del prim if restituisce falso e la variabie stato resta al valore iniziale 0.

Poiché il confronto stato == 1 del secondo if restituisce falso, viene eseguito l’else in cui è presente l’istruzione “digitalWrite(LED, LOW);” che spegne il diodo led.

Passo 2: pulsante premuto – diodo acceso

Il valore assunto da val è 1 in quanto il pulsante è premuto (l’istruzione “digitalRead(BUTTON);” restituisce 1), la condizione logica val == HIGH del primo if restituisce vero e la variabie stato viene impostata a stato = 1 – 0, cioè a 1.

Poiché il confronto stato == 1 del secondo if restituisce vero, viene eseguita l’istruzione che segue, cioè: “digitalWrite(LED, HIGH);” che accende il diodo led.

Passo 3: pulsante premuto – diodo spento

Il valore assunto da val è 1 in quanto il pulsante è premuto (l’istruzione “digitalRead(BUTTON);” restituisce 1), la condizione logica val == HIGH del primo if restituisce vero e la variabie stato viene impostata a stato = 1 – 1 (stato è stato impostato ad 1 nel passo precedente), cioè a 0.

Poiché il confronto stato == 1 del secondo if restituisce falso, viene eseguito l’else in cui è presente l’istruzione “digitalWrite(LED, LOW);” che spegne il diodo led.

Se provate il programma noterete un funzionamento molto strano, potrebbe capitare che premendo e rilasciando il pulsante il led non si accende e si spegne correttamente, ad esempio premo e non si accende oppure se acceso premendo il pulsante non si spegne il led. Ciò è dovuto al fatto che Arduino legge le istruzioni del vostro programma ad una velocità di milioni di istruzioni al secondo ciò vuol dire che la lettura dello stato del pulsante viene letta moltissime volte al secondo e l’accensione e lo spegnimento del diodo led potrebbe essere imprevedibile.

Per comprendere questa situazione immaginate che al Passo 3 precedente si continui a mantenere premuto il pulsante, noterete che la variabile stato ad ogni ciclo, assume valori diversi che possono portare ad una situazione di accensione o spegnimento del diodo.

Per ovviare a questo problema bisogna riuscire a identificare il momento esatto in cui il pulsante viene premuto è questo può essere fatto conservando in una variabile lo stato del pulsante al passo precedente:

// Esempio 03: antirimbalzo
// accendi il led appena è premuto il pulsante mantenendolo acceso quando si rilascia
// premendo una seconda volta il pulsante spegne il led

#define LED 13                // LED collegato al pin digitale 13
#define BUTTON 7              // pin di input dove è collegato il pulsante
int val = 0;                  // si userà val per conservare lo stato del pin di input
int vecchio_val = 0;          // si userà vecchio_val per conservare lo stato del pin di input al passo precedente
int stato = 0;                // ricorda lo stato in cui si trova il led, stato = 0 led spento, stato = 1 led acceso

void setup() {
  pinMode(LED, OUTPUT);       // imposta il pin digitale come output
  pinMode(BUTTON, INPUT);     // imposta il pin digitale come input
}

void loop() {
  val = digitalRead(BUTTON);  // legge il valore dell'input e lo conserva

  // controlla se è accaduto qualcosa
  if ((val == HIGH) && (vecchio_val == LOW)){
    stato = 1 - stato;
  } 

  vecchio_val = val;            // ricordiamo il valore precedente di val

  if (stato == 1) {
    digitalWrite(LED, HIGH);   // accende il led
  }
  else {
    digitalWrite(LED, LOW);    //spegne il led
  }
}

In questo caso usiamo la variabile vecchio_val per conservare lo stato al ciclo precedente, in questo modo verifichiamo lo stato effettivo del pulsante verificando se lo stato attuale è “pulsante premuto” E “pulsante non premuto al passo precedente“, se la condizione è vera viene modificato lo stato.
L’operatore boleano utilizzato è AND che nel linguaggio di programmazione si indica con &&.

La cosa più bella nell’applicare l’informatica al mondo reale e che è indispensabile far i conti con le caratteristiche fisiche dei dispositivi su cui operiamo.
Come potete vedere dal filmato, non appena aumentiamo la frequenza con cui premete il pulsante, si ricade in una situazione di incongruenza per cui il led non risponde più ai comandi. Questo problema avviene perché il pulsante è un apparato meccanico costituito da contatti elettrici ed una molla, quando premiamo e rilasciamo, si manifestano situazioni di rimbalzo del contatto che creano dei segnali non corretti, detti spuri, che modificano lo stato del diodo led.

Per risolvere il problema è sufficiente attendere che questi rimbalzi spuri si concludano e quindi bisogna attendere una certa quantità di tempo dopo che è stato rilevato un cambiamento di stato, provate con valori non superiori a 50 millisecondi, nell’esempio ho introdotto un valore di 15 millisecondi di ritardo.

// Esempio 04: antirimbalzo2 - accendi il led appena è premuto il pulsante mantenendolo acceso quando si rilascia
// premendo una seconda volta il pulsante spegne il led

#define LED 13                // LED collegato al pin digitale 13
#define BUTTON 7              // pin di input dove è collegato il pulsante
int val = 0;                  // si userà val per conservare lo stato del pin di input
int vecchio_val = 0;          // si userà vecchio_val per conservare lo stato del pin di input al passo precedente
int stato = 0;                // ricorda lo stato in cui si trova il led, stato = 0 led spento, stato = 1 led acceso

void setup() {                
  pinMode(LED, OUTPUT);       // imposta il pin digitale come output
  pinMode(BUTTON, INPUT);     // imposta il pin digitale come input
}

void loop() {
  val = digitalRead(BUTTON);  // legge il valore dell'input e lo conserva

  // controlla se è accaduto qualcosa
  if ((val == HIGH) && (vecchio_val == LOW)){
    stato = 1 - stato;
    delay(15);                // attesa di 15 millisecondi
  } 

  vecchio_val = val;            // ricordiamo il valore precedente di val

    if (stato == 1) {
    digitalWrite(LED, HIGH);   // accende il led
  } 
  else {
    digitalWrite(LED, LOW);    //spegne il led
  }
}

Ora come esercizio uniamo ciò che abbiamo imparato nella lezione n. 2 e ciò che abbiamo imparato in questa lezione.

Esercizio:
realizzare un programma che esegue questa funzione: quando si preme un pulsante il diodo led lampeggia, quando premo una seconda volta il pulsante il led termina di lampeggiare:

// Esempio 05: led lampeggia se premo il pulsante
// premendo una seconda volta il pulsante si spegne il led

#define LED 13                // LED collegato al pin digitale 13
#define BUTTON 7              // pin di input dove è collegato il pulsante
int val = 0;                  // si userà val per conservare lo stato del pin di input
int vecchio_val = 0;          // si userà vecchio_val per conservare lo stato del pin di input al passo precedente
int stato = 0;                // ricorda lo stato in cui si trova il led, stato = 0 led spento, stato = 1 led acceso

void setup() {
  pinMode(LED, OUTPUT);       // imposta il pin digitale come output
  pinMode(BUTTON, INPUT);     // imposta il pin digitale come input
}

void loop() {
  val = digitalRead(BUTTON);  // legge il valore dell'input e lo conserva

  // controlla se è accaduto qualcosa
  if ((val == HIGH) && (vecchio_val == LOW)){
    stato = 1 - stato;
    delay(15);                // attesa di 15 millisecondi
  } 

  vecchio_val = val;          // ricordiamo il valore precedente di val

    if (stato == 1) {
    digitalWrite(LED, HIGH);  // accende il LED
    delay(1000);              // aspetta un secondo
    digitalWrite(LED, LOW);   // spegne il LED
    delay(1000);              // aspetta un secondo
  }
  else {
    digitalWrite(LED, LOW);    //spegne il led
  }
}

Un piccolo esercizio.
Se provate ad aumentare la frequenza con cui premete il pulsante noterete che non riuscite a spegnere il diodo led, siete in grado di risolvere questo problema?

Buon Lavoro 🙂


Vai alle altre lezioni:

Lezione01: Incominciamo con Arduino Arduino – lezione 02: facciamo lampeggiare un led Arduino – lezione 03: controlliamo un led con un pulsante
Lezione Arduino Lezione Arduino Lezione Arduino
Arduino – lezione 04: realizzare un programma che identifica le variazioni di stato Arduino – lezione 05: controllo presenza
Lezione Arduino Lezione Arduino

Arduino – lezione 02: facciamo lampeggiare un led

A distanza di qualche mese sono riuscito a sistemare gli appunti che ho realizzato in bozza per i miei studenti per continuare il corso su Arduino ed in questa lezione vi propongo il canonico esercizio “blink”, che trovate anche su Arduino.cc.
Farò alcune variazioni ed integrazioni all’esempio in modo che possiate entrare nel dettaglio del linguaggio di programmazione.
Userò in questa lezione la scheda Arduino Duemilanove e la versione dell’IDE n. 21 in ambiente Mac, ovviamente la programmazione è identica per tutti i sistemi operativi.

Il programma, sketch in Arduino, che vi consente di far lampeggiare un led è secondo me il primo programma che dovete realizzare per familiarizzare con l’ambiente di sviluppo ma soprattutto per verificare il funzionamento della scheda.

In questa lezione viene dato per scontato che lo studente conosca i concetti di:

  • corrente
  • tensione
  • resistenza

inoltre sappia cosa sono e come funzionano i componenti:

  • diodi led
  • resistori

Se non avete queste nozioni di base nessun problema! Scrivetemi sarò ben lieto di spiegarvi in modo pratico e sintetico i concetti di elettronica necessari che vi permetteranno di proseguire agevolmente nel corso.

Partiamo!

Come potete notare sulla scheda è presente un piccolo diodo led indicato da una “L” che potete utilizzare come trasduttore per la realizzazione del vostro primo programma.

Se però volete incominciare con la pratica potete sfruttare le uscite digitali per pilotare un led più grande. Come mostrato nell’immagine che segue inserite il CATODO del diodo nel foro indicato con GND e l’anodo nel foro indicato con 13.

Aprite il programma Arduino se è la prima volta che avviate il programma verrà immediatamente aperto uno sketch vuoto, altrimenti dal menù File > New aprite un nuovo sketch e salvatelo con il nome che desiderate nella cartella in cui volete collezionare i vostri programmi. In ambiente Mac in fase di installazione viene creata in modo automatico una cartella di nome Arduino nella cartella “Documents” in questo modo se salvate senza indicare la cartella di destinazione ritroverete lo sketch creato in Documents > Arduino

Il programma blink potete trovarlo sul sito Arduino.cc oppure direttamente dal vostro programma:

File > Examples > 1.Basics > Blink

di seguito vi riporto la mia versione che ho rinominato “lampeggiatore led v01” in cui ho inserito i commenti in italiano, se desiderate potete utilizzare la mia versione.


// Esempio 01: far lampeggiare un led

  #define LED 13            // LED collegato al pin digitale 13

void setup() {
  pinMode(LED, OUTPUT);     // imposta il pin digitale come output
}

void loop() {
  digitalWrite(LED, HIGH);  // accende il LED
  delay(1000);              // aspetta un secondo
  digitalWrite(LED, LOW);   // spegne il LED
  delay(1000);              // aspetta un secondo
}

Di seguito l’immagine della schermata del vostro primo sketch

Ora dovete verificare il vostro programma facendo click su “Verify” e se tutto è corretto in basso all’IDE compare il messaggio “Done compiling” ciò indica che l’IDE Arduino ha tradotto il vostro sketch in un programma eseguibile sulla scheda Arduino.

Ora dovete caricare sulla scheda il vostro programma facendo click su “Upload to I/O Board“, in questo modo la scheda interrompe l’esecuzione di ciò che stava eseguendo, carica il nuovo programma in memoria e lo esegue.

Durante la fase di trasferimento accadono due cose:

01. appare il messaggio: Uploading to I/O Board… e la dimensione in byte del vostro sketch e alla fine compare il messaggio: “Done uploading” che indica che il trasferimento del programma alla scheda ha avuto termine;

02. sulla scheda i led identificati con RX e TX lampeggiano, ogni volta che viene inviato un byte e durante la fase di uploading del programma lampeggiano continuamente.

Analizziamo passo passo il codice

Non abbiate paura l’analisi riga per riga vi porterà alla comprensione del linguaggio di programmazione anche se non siete programmatori.

// Esempio 01: far lampeggiare un led

Cone le due barre “//” indichiamo l’inizio di un commento e il testo che lo segue, in questo caso, identifica il titolo del nostro programma.
Molto spesso è importante indicare subito dopo il titolo, la data dell’ultima variazione e il nome dell’autore, in modo che a distanza di tempo possiamo identificare le versioni di sviluppo ed il nome dell’ultimo programmatore che ha eseguito modifiche:

Ad esempio:

// Esempio 01: far lampeggiare un led
// Data ultima modifica: 16.11.2010
// Autore: Michele Maffucci

notate che ogni linea di commento deve essere preceduta da “//”

Se volete evitare di scrivere per ogni linea “//” potete far precedere il testo commento dai caratteri “/*” e farlo concludere con i caratteri “*/”

Ad esempio:

/* Esempio 01: far lampeggiare un led
Data ultima modifica: 16.11.2010
Autore: Michele Maffucci */
#define LED 13               // LED collegato al pin digitale 13

#define consente di sostituire, in fase di compilazione, all’interno del vostro programma il valore 13 ogni volta che compare la parola LED.
Vi ricordo che la compilazione avviene quando fate click su “Verify” oppure quando effettuate l’upload sulla scheda.

void setup()

void indica ad Arduino che stiamo dichiarando una funzione di nome setup(), cioè un porzione di codice che esegue un’operazione specifica

{

La parentesi graffa aperta indica dove incomincia il codice.

  pinMode(LED, OUTPUT);     // imposta il pin digitale come output

pinMode è un’istruzione che dice ad Arduino come usare un determinato pin.
Tra parentesi tonde vengono specificati gli argomenti che possono essere numeri e lettere.
I pin digitali possono essere utilizzati sia come INPUT che come OUTPUT. Nel nostro caso poiché vogliamo far lampeggiare il diodo LED dobbiamo definire il pin di OUTPUT.
Le parole INPUT e OUTPUT sono costanti definite, che non variano mai nel linguaggio di Arduino.

}

La parentesi graffa chiusa indica la fine della funzione setup().

void loop()

Indica la sezione di codice principale, il nucleo del vostro programma, che verrà ripetuto all’infinito fino a quando non si spegne la scheda.

  digitalWrite(LED, HIGH);  // accende il LED

L’istruzione digitalWrite possiede due argomenti, il primo definisce il pin, il secondo indica lo stato.
digitalWrite è un’istruzione in grado di impostare un pin definito come OUTPUT ad un valore HIGH o ad un valore LOW, in modo più semplice permette di accendere o spegnere un led connesso al pin specificato nel primo argomento, nel nostro caso LED.

Tenete conto che dire che su un determinato pin vi è uno stato HIGHT, vuol dire che su di esso viene applicata una tensione di +5 V, mentre se lo stato e LOW vuol dire che sul pin è applicata una tensione di 0V.

  delay(1000);              // aspetta un secondo

delay() è un’istruzione molto semplice che non fa altro che interrompere per un determinato tempo l’esecuzione del programma.
L’istruzione ha un solo argomento numerico che indica il numero di millisecondi di attesa.
Nel nostro caso con “delay(1000)” diciamo che il programma deve bloccarsi per 1000 millisecondi ovvero 1 secondo.

Quindi guardando insieme le due istruzioni:

  digitalWrite(LED, HIGH);  // accende il LED
  delay(1000);              // aspetta un secondo

Diciamo ad Arduino di accendere il diodo led sul pin 13 per 1 secondo.

  digitalWrite(LED, LOW);   // spegne il LED

Ordiniamo al led sul pin 13 di spegnersi

  delay(1000);              // aspetta un secondo

tiene spento il diodo connesso al pin 13 per 1 secondo.

Ora per concludere questa seconda lezione vi invito ad eseguire i seguenti esercizi:

  1. variate il tempo di accensione e spegnimento, con tempi uguali di accensione e spegnimento
  2. variate il tempo di accensione e spegnimento, con tempi diversi di accensione e spegnimento
  3. provate ad eseguire il programma con tempi inferiori ai 500 millisecondi, cosa succede?

Vai alle altre lezioni:

Lezione01: Incominciamo con Arduino Arduino – lezione 02: facciamo lampeggiare un led Arduino – lezione 03: controlliamo un led con un pulsante
Lezione Arduino Lezione Arduino Lezione Arduino
Arduino – lezione 04: realizzare un programma che identifica le variazioni di stato Arduino – lezione 05: controllo presenza  
Lezione Arduino Lezione Arduino  

lezione 01: Incominciamo con Arduino

Ho deciso di realizzare una serie di dispense per i miei allievi affinché possano operare in maniera semplice con Arduino, un sistema Hardware Open Source di basso costo e grande versatilità programmabile su tutti i sistemi operativi (Mac, Linux e Windows), in grado di controllare luci, motori ed attuatori di ogni genere e realizzare in maniera agevole sperimentazioni in campo robotico.

Queste dispense sono dedicate a tutti i miei allievi.

La realizzazione di questa lezione è basata sul materiale disponibile sul sito di riferimento Arduino.cc

Prerequisiti per seguire il corso:

  • conoscenza del principio di funzionamento di base di un microcontrollore;
  • conoscenza dei costrutti fondamentali della programmazione.

In questa prima lezione vedremo quali sono le parti principali della scheda e come installare l’ambiente di sviluppo.

Poiché sono utente Apple le immagini allegate fanno riferimento a Mac OS X, ma la programmazione non differisce dal sistema operativo utilizzato.

In questa prima parte si assume che voi abbiate a disposizione Arduino Duemilanove, se dovete acquistare la scheda, consultate la sezione “Buy” del sito Arduino.cc

Ho suddiviso l’ingrandimento della scheda in due parti per meglio comprendere i vari elementi presenti sulla scheda:

Per prima cosa, per poter programmare Arduino è indispensabile effettuare il download dell’ultima versione dell’ambiente di sviluppo.

Quando il download è finito effettuate  l’installazione dei driver FTDI.

Se avete un Mac PowerPC  dovete utilizzare i driver PPC: FTDIUSBSerialDriver_v2_1_9.dmg. Se avete un Mac con processore Intel dovete installare FTDIUSBSerialDriver_v2_2_9_Intel.dmg.

Doppio click per montare l’immagine disco ed effettuate l’installazione FTDIUSBSerialDriver.pkg al termine dell’installazione vi verrà richiesto di effettuare il restart del computer:

L’ultima versione dei driver FTDI potete prelevarli sul sito: ftdichip

Connessione della scheda.

Per Arduino Duemilanove la sorgente di alimentazione viene selezionata automaticamente e può avvenire tramite connettore USB o Jack di alimentazione. Appena alimentate la scheda si accenderà il led verde (PWR).

Avvio dell’ambiente di sviluppo.

Mac OSX
Copiate l’applicazione Arduino nella cartella Applicazioni o dove preferite e fate doppio click per avviare.

Windows
Aprite la cartella Arduino e fate doppio click sull’applicazione Arduino.

Questo è ciò che si presenta nella versione Mac:

Eseguire l’upload di un programma

Aprite l’esempio “Blink” che si trova in: File  > Examples > Digital > Blink

si aprirà una nuova finestra con il codice “Blink”:

Selezionate la porta seriale da utilizzare per la comunicazione tra computer ed Arduino:
Tools > Serial Port menu.
Su Mac selezionate /dev/tty.usbserial-A9005fPz.

Selezionate la scheda che possedete nel mio caso Arduino Duemilanove con microcontrollore ATmega168

dal menù Tool > Board >Arduino Diecimila, Duemilanove, or Nano w/ATmega168

Ora fate l’upload del file “Blink” su Arduino facendo click sul pulsante “Upload”

ci vorrà qualche secondo, durante questa operazione vedrete che i led RX e TX (ricezione e trasmissione) lampeggiano, se tutto andrà a buon fine vi verrà restituito il messaggio “Done uploading.” nella staus bar.


Appena terminato l’upload su Arduino il pin 13 (L) corrispondente al led arancione, incomincia a lampeggiare.

Ottimo, avete terminato con successo la prima lezione su Arduino.


Vai alle altre lezioni:

Lezione01: Incominciamo con Arduino Arduino – lezione 02: facciamo lampeggiare un led Arduino – lezione 03: controlliamo un led con un pulsante
Lezione Arduino Lezione Arduino Lezione Arduino
Arduino – lezione 04: realizzare un programma che identifica le variazioni di stato Arduino – lezione 05: controllo presenza  
Lezione Arduino Lezione Arduino