Crea sito

Funzione millis()

By ArduinoTutorial marzo 28th, 2011, under Funzione millis()

Per far lampeggiare un led, al posto di usare la funzione delay() possiamo utilizzare anche la funzione millis(). Questa funzione restituisce il numero di millisecondi da quando la scheda Arduino ha iniziato l’esecuzione del programma. Dopo 50 giorni che la scheda non viene spenta questo numero ritorna a 0. Per usare questa funzione si può ad esempio scrivere int tempo = millis(); dove in pratica la funzione restituisce un numero in millisecondi e lo immagazina all’interno della variabile tempo.

Vediamo ora come possiamo far lampeggiare il led usando questa funzione.

Lo schema elettrico per collegare il led è lo stesso usato nel primo tutorial Hello World mentre il codice da scrivere nell’IDE cambia.

Codice:

#define ledPin 13  //LED connesso al pin digitale 13
#define interval 1000  //Intervallo di tempo per  far lampeggiare il LED(millisecondi)
int value = LOW;  //Valore precedente del LED
long previousMills = 0;  //Memorizza l'ultima volta che il led è stato aggiornato

void setup()
{
     pinMode(ledPin, OUTPUT);  //Impostiamo il led come output
}

void loop()
{
     if (millis() -  previousMills > interval ){
         previousMills = millis();  //Tiene in memoria l'ultimo lampeggio

         //Se il LED è spento lo accende e viceversa
         if (value == LOW)
             value = HIGH;
         else
             value = LOW;

         digitalWrite(ledPin, value);
     }
}

Analisi del codice:

1-Struttura IF/ELSE:

if (variabile < 500)
{
  // Azione A
}
else
{
  // Azione B
}

L’IF è un controllo, tradotto in parole povere significa che controlla se una variabile è minore, maggiore o uguale ad un numero, se la condizione è verificata esegue l’azione A altrimenti esegue l’azione B.

2- if (millis() –  previousMills > interval ): Fà la differenza tra il tempo attuale e il tempo precedente in cui stato acceso il led e controlla se è necessario accendere oppure no il led dopo un tempo (interval) di un secondo.

Hello World!

By ArduinoTutorial marzo 28th, 2011, under Hello World!

Nella maggior parte dei linguaggi di programmazione, il primo programma che  si scrive è la stampa della scritta “Hello World!” sullo schermo. Dal momento che una scheda Arduino non dispone di uno schermo, noi ci limiteremo a far lampeggiare un LED. Avremo bisogno di una scheda Arduino UNO, un led rosso o di altri colori che preferite e di una resistenza da 330 ohm  che andremo a collegare in serie al led.

Il collegamento da effettuare sulla scheda è questo:

In pratica abbiamo collegato il led in serie ad una resistenza, dove il piedino meno del led và messo al GND mentre il piedino della resistenza và collegato al pin digitale 13.

Per comodità vi allego una foto su come collegare i led:

Se il led non si dovesse accendere è perchè, probabilmente, lo avete collegato al contrario.

Ora passiamo ad aprire il nostro IDE per programmare Arduino:

Un consiglio che mi sento di darvi è quello di non fare copia e incolla ma di scrivere le varie parti del codice a mano in modo da poter imparare la sintassi delle varie funzioni.

Il codice da scrivere è il seguente:

#define ledPin 13  //LED connesso al pin digitale 13
void setup()
 {
     pinMode(ledPin, OUTPUT);  //Imposto il LED come output
 }
void loop()
 {
     digitalWrite(ledPin, HIGH);  //Accendo il LED
     delay(1000);  //Aspetto un secondo  1000ms = 1s
     digitalWrite(ledPin, LOW);  //Spengo il LED
     delay(1000);  //Aspetto un secondo
 }

Analisi codice:

1- setup (): E’ una funzione che viene chiamata quando si avvia lo sketch. Si usa per inizializzare le variabili,  i pin,  iniziare ad usare le librerie. La funzione di setup viene eseguita una sola volta, dopo ogni accensione o reset della scheda Arduino.

2-pinMode(): Dice ad un pin specifico come comportarsi,  ossia come ingresso(INPUT) o come uscita(OUTPUT). La sintassi è la seguente: pinMode(pin, mode);

3-loop(): Dopo aver creato la funzione setup (), che inizializza e imposta i valori iniziali, la funzione loop () fa esattamente quello che suggerisce il suo nome, ossia il vostro programma gira all’infinito eseguendo le operazioni che sono state scritte al suo interno.

4-digitalWrite(): Questa funzione scrive sul pin desiderato un valore alto (HIGH) oppure basso (LOW). Dove per valore alto si intende +5V mentre per valore basso si intende 0V. La sintassi è la seguente: digitalWrite(pin, valore);

5-delay(): Questa funzione imposta un ritardo in millisecondi tra una funzione è l’altra. La sintassi è la seguente: delay(ms);

6-#define: Serve a definire una costante. Si definisce sempre all’inizio del programma. La sintassi è la seguente: #define costante valore

Per definire il pin che vogliamo usare possiamo anche dichiararlo nella funzione setup() come int ledPin = 13; così facendo dichiariamo una variabile, il che non ha molto senso visto che un pin non cambia mai il proprio identificativo. Inoltre dichiarare il pin con #define ci consente di risparmiare memoria su arduino.

Cosa è Arduino

By ArduinoTutorial marzo 28th, 2011, under Varie

Arduino è una semplice ma potente piattaforma hardware, basata su una semplicissima scheda I/O che grazie alla libreria Wiring ci consente di programmarla.

Questa è la scheda Arduino UNO

La scheda consiste in un microcontroller della Atmel, nello specifico l’ATmega328. Offre 14 connettori per l’I/O digitale, 6 dei quali possono produrre segnali PWM, mentre 6 sono dedicati a ingressi di segnali analogici.

Il tutto è possibile collegarlo al computer tramite un cavo usb e per poterla programmare abbiamo bisogno di scaricare l’IDE di Arduino, disponibile sul sito ufficiale.

Ciao a tutti!

By ArduinoTutorial marzo 27th, 2011, under Varie

Ciao a tutti, ho voluto creare questo blog in modo da poter mettere tutti i tutorial,  che si possono trovare anche sul sito http://www.arduino.cc/, tradotti in italiano, in modo che le persone che non riescono a capire l’inglese o non hanno voglia di tradurlo possono avere un’altra risorsa web per poter imparare a programmare Arduino. Spero che l’impegno sia da tutti gradito.

Il blog sarà suddiviso in varie sezioni a seconda del tipo di tutorial, datemi solo il tempo di organizzarmi e capire come funziona il blog 😉