Arduino: i primi passi

Arduino Uno Arduino è una piattaforma per lo sviluppo di progetti basati su microcontrollore, principalmente per applicazioni embedded destinate al controllo a alla automazione.

Nato in Italia nel 2005 con l'intento di fornire una ambiente agile e soprattutto economico per scopi didattici, ha avuto negli anni una diffusione mondiale. Arduino è una piattaforma open source, l'hardware e il software sono disponibili e liberamente utilizzabili, solo il marchio è riservato e registrato. Questo significa che chiunque può realizzare un progetto con hardware copiato dal Arduino, ma non ne può usare liberamente il nome.

Il successo di Arduino, però, è dovuto anche alla ampia diffusione di documentazione e librerie.

Ma il successo "da alla testa" e ha portato i creatori di Arduino a dispute legali verso uno di loro cha ha pensato bene di impossessarsi del marchio, almeno in Italia. Da qui, per motivi commerciali,  un nuovo marchio Genuino, per produrre schede del tutto identiche ad Arduino.

L'hardware di base è relativamente semplice e rende disponibile le risorse del processore (che varia in base alla piattaforma). In numerosi casi l' hardware di della scheda Arduino non è adeguato ad interfacciare il mondo esterno. per dare fronte a questi problemi si può ricorrere a numerose schede (dette shield) progettate per essere inserite facilmente e direttamente sulle schede Arduino. Naturalmente nulla vieta di progettare e produrre proprie shield

Arduino è disponibile in varie versioni con vari processori e potenzialità. Arduino Uno è una delle versioni più semplici ed economiche.

Informazioni dettagliate abbondano in rete, ed è inutile divulgarsi in merito. Lo scopo di questo documento è quello di illustrare i primissimi passi per realizzare semplici progetti.

Tags: 

Categoria: 

Arduino: Ambiente di sviluppo.

IDE ArduinoCome qualunque altro sistema a processore, anche Arduino deve sottostare ad un programma. Serve quindi un linguaggio di programmazione, un compilatore, librerie ed un modo per 'scaricare' il programma a bordo del processore.

Viene in aiuto l'ambiente di sviluppo che integra, in una unica interfaccia, le varie funzionalità. L'ambiente di sviluppo, denominato IDE (Integrated Development Environment), raggruppa le principali risorse software, la configurazione per la piattaforma utilizzata, l'editor, il compilatore, il linker e le librerie.

L'editor facilita la scrittura del codice ed è in grado di rilevare e segnalare i principali errori di scrittura del codice. Il linguaggio è il C/C++ con il supporto una libreria (Wiring) necessarie per accedere alle risorse di I/O e alle periferiche.
Il programma viene chiamato sketch (dobbiamo abituarci alla mania di utilizzare questi termini, che sembrano inventati ad hoc per rendere la vita difficile).

L'IDE, sviluppato in Java, si scarica in rete ed è disponibile per Windows, Mac OS X e Linux.
Basta scaricarlo e installarlo, appena avviato si apre con una finestra di editor, pronto per la scrittura di un programma (o meglio sketch).

Naturalmente occorre aver installato java (www.java.com).

Categoria: 

Tags: 

Mi piace: 

0
No votes yet

Arduino: Il programma

Il programma presenta tre sezioni fondamentali:

  • La prima è dedicata alla definizione di costanti di interesse per tutto il programma;
  • La seconda è dedicata al setup delle porte/periferiche. Si definisce, ad esempio, quali porte si utilizzano e in quale modalità: se in ingresso, in uscita, se analogiche o altro.
    void setup() {
    }
  • La terza sezione è il programma principale che verrà eseguito dal processore. Nei sistemi embedded è tipicamente un loop infinito, una serie di operazioni che si ripetono da quando si avvia il programma fino a quando si spegne il sistema.
    void loop() {
    }

Con l'IDE di Arduino le due sezioni sono due funzioni void setup () e void loop().

Ben lontano dal volere entrare nella programmazione in C, sottolineo solo che una funzione altro non è che un insieme di istruzioni che elaborano dei dati ed eventualmente rendono il dato elaborato. Il codice della funzione è distribuito su più righe (in C) e racchiuso fra parentesi quadre.

void setup() definisce la funzione setup(), all'interno della quale va inizializzato  il sistema. La dichiarazione void (mancante, vuoto) indica che la funzione eseguirà azioni ma non renderà nulla.

void loop() è il programma principale: qui va scritto quello che si vuol fare eseguire ad Arduino.

Il programma più semplice che si può immaginare è fare lampeggiare il led a bordo di Arduino Uno.

/* questo è il più semplice programma che si può immaginare:
 *  accendere e spegnere il led a bordo di Arduino.
 */

// il led è sulla porta numero 13
const byte ledPin = 13;

void setup() {
  // put your setup code here, to run once:
  // definisco la porta 13 come porta di OUTPUT
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(ledPin, HIGH);   // accendo il LED
  delay (1000);                 // attendo 1 secondo (1000 millisecondi)
  digitalWrite(ledPin, LOW);    // spegno il LED
  delay (1000);                 // attend0 1 secondo
}

 

// è il commento si una riga.

L'istruzione, su una riga, deve terminare con ;

Un blocco di programma è racchiuso fra parentesi graffe {  ....  }

Categoria: 

Tags: 

Mi piace: 

0
No votes yet

Arduino: verifica e compila

Per scrivere ed eseguire il programma si avvia l'IDE.

Selezione piattaformaCome prima cosa è bene selezionare la piattaforma in uso: dal menu di IDE Strumenti -> scheda Arduino/Genuino UNO

Si scrive il programma. Per un neofilo la situazione migliore è iniziare con semplici programmi copiati de esempi, che sono numerosi in rete e su libri per principianti e non.

Nell'esempio, viene definita la costante ledPin, che occuperà un byte )const byte ledPin = 13;.

In C le librerie devono essere definite o presenti in una libreria. Alcune funzioni, come PinMode(), digitalWrite() e delay(), che sono definite all'interno dell'IDE e quindi immediatamente utilizzabili. digitalWrite, ad esempio, richiede due parametri: il numero della porta e lo stato della porta.

Così come per alcune funzioni, IDE definisce anche costanti come HIGH e LOW (hanno valore di 1 e 0). Utilizzando il menu di aiuto dell'IDE è facile avere un approfondimento. In molte occasioni l'help di IDE rimanda alla rete. Es. https://www.arduino.cc/en/Reference/HomePage

Per preparare il programma si usa il menu Sketch -> Verifica/Compila.

Verifica e compila

L'IDE legge il programma, segnala eventuali errori, compila (traduce in linguaggio macchina il C), ingloba le librerie necessarie, aggrega il tutto (link) per il processore selezionato.

La compilazione riporta informazioni utili come ad esempio, lo spazio che il programma occuperà sul processore.

 

Categoria: 

Tags: 

Mi piace: 

0
No votes yet

Arduino: caricamento ed esecuzione

Caricare il programma su Arduino è possibile tramite un programmatore esterno o più semplicemente tramite il bootloader.

Un processore quando viene alimentato, deve trovare in memoria delle istruzioni adeguate. Normalmente il processore, se nuovo, non ha nulla di ciò. Serve quindi uno strumento per caricare in memoria (la memoria flash che mantiene i dati anche a dispositivo spento). Spesso si usa un programmatore, uno strumento esterno in grado di fare operazioni di scrittura del programma sulla flash. Questo metodo non è molto pratico, specie per lo sviluppo hobbistico.

Arduino adotta una soluzione detta di bootloader. Il processore sulla scheda non è completamente senza programmi, ma è preconfigurato con una procedura in grado ci gestire la porta seriale (USB), ricevere dei comandi e scrivere il programma in memoria.

Allo scopo l'IDE, quando viene installato, predispone alcuni driver USB in grado di colloquiare con la porta USB di Arduino.

Per scaricare il programma basta collegare Arduino ad una USB, attendere che questa venga correttamente riconosciuta, configurare in IDE la porta USB/seriale (Strumenti -> Porta)

Selezione Porta

e cliccare sul manu Sketch -> Carica.

Carica il programma

Completato il caricamento, se tutto è stato fatto correttamente, il programma parte automaticamente e, nel caso del semplice esempio presentato, il led lampeggia!!.

Il Led si accende !

 

Categoria: 

Tags: 

Mi piace: 

0
No votes yet

Arduino: display LCD

Un display LCD è molto utile in tutti i progetti digitali. Comodo per messaggi, ma anche per informazioni di debug, quando non si dispone di un vero e proprio debugger.
L'IDE di Arduino mette a disposizione una libreria per la gestione di display compatibili con lo standard di fatto Hitachi HD44780, che hanno un costo abbordabile e sono molto diffusi.

Il display ha in connettore con 14 o 16 pin. Alcune linee di controllo, Enable (E), Registyer Select (RS), Read/Write (R/!W) e 8 linee dati, anche se abitualmente è pilotato con solo 4 linee dati. A queste linee si aggiungono 3 pin per l'alimentazione, la massa, e il contrasto. Alcuni modelli hanno due pin dedicati ad alimentare un LED per la retro illuminazione.

La libreria mette a disposizione funzioni per la gestione del display. La documentazione è disponibile qui: https://www.arduino.cc/en/Reference/LiquidCrystal

Per includerla nel nostro programma si usa il comando 'C' include: #include <LiquidCrystal.h>
Per inizializzare il display occorre dichiarare quali uscite di Arduino vengono utilizzate per pilotare il display: lo si fa con la funzione LiquidCrystal lcd();
lcd.begin() definisce il numero di colonne e di righe del display (ne esistono di vari modelli).

La funzione lcd.print() riproduce (stampa) una stringa di caratteri sul display.

In questo semplice caso, la funzione di loop() resta vuota, perché l'inizializzazione del display e l'output del messaggio è tutto quello che si desidera fare.

Il programma è un semplice esempio preso da internet e disponibile qui. A dimostrazione della vasta documentazione disponibile in rete.

Ora basta compilare ed inviare il programma ad Arduino. L'alimentazione di tutto il sistema è fornita dalla USB di Arduino.

Naturalmente le funzioni definite dalla libreria sono più numerose di quelle usate in questo esempi e si rimanda alla documentazione citata per un elenco completo.

Lo schema di collegamento è disponibile al link citato e qui, la versione realizzata con kicad.

LCD su Arduino

Questo è il codice:

/*
  LiquidCrystal Library - Hello World

 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.

 This sketch prints "Hello World!" to the LCD
 and shows the time.

  The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * LCD VSS pin to ground
 * LCD VCC pin to 5V
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)

 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom Igoe

 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
 
}

 

 

Categoria: 

Tags: 

Mi piace: 

0
No votes yet