Corso Arduino Introduzione

Page 1


CHI SONO




COSA E' ARDUINO ●

ARDUINO E' UNA SCHEDA ELETTRONICA NATA PER LA PROTOTIPAZIONE VELOCE

ARDUINO E' OPEN-SOURCE

IL PAPA' DI ARDUINO E' MASSIMO BANZI

Il Team Arduino è composto da: Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, and David Mellis.


SITO ISTITUZIONALE

www.arduino.cc


MODELLI


MODELLI LE SHIELDS ARDUINO UNO Rev 3 La versione più usata per la quale sono state sviluppate la maggior parte di schede accessorie. Le cosiddette shields. Ce ne sono per tutti i “gusti” e per tutte le necessità.

SCHEDA RETE

SCHEDA WIFI

SCHEDA MOTORI


Esempi di Utilizzo

Immagini da Kickstarter.com


Esempi di Utilizzo

Immagini da Kickstarter.com


Esempi di Utilizzo

Immagini da Kickstarter.com


Esempi di Utilizzo

Immagini da Kickstarter.com


Esempi di Utilizzo


I PIN ●

Pin Analogici La scheda Arduino ha 6 Pin Analogici

Pin Digitali La scheda Arduino ha 14 Pin Digitali


I SEGNALI DIGITALI


I SEGNALI DIGITALI linee 1-7: commento multilinea linea 9: dichiaro la funzione setup(), è fondamentale per Arduino, serve a settare tutti i valori di partenza, una vera e propria inizializzazione del programma linea 10: utilizzando il comando begin( 9600 ) dell’oggetto Serial comunichiamo ad Arduino che vogliamo utilizzare il suo canale di comunicazione seriale, potremo scrivere informazioni sul monitor del computer o leggere degli input attraverso questo canale, per adesso l’importante è sapere che Serial.begin(9600) apre un canale di comunicazione seriale a 9600 baud tra Arduino ed il computer a cui è connesso. linea 11: questo e' il comando più utilizzato pinMode(2,INPUT) che imposta il pin 2 come INPUT, ossia abilita la ricezione di informazioni provenienti da questo pin. Essendo il pin 2 un pin di tipo digitale i segnali che riceveremo saranno di tipo digitale cioè ( 0 o 1 ) linea 14: dichiariamo la funzione loop(), la funzione che Arduino ripeterà continuamente fino al suo Reset linea 15: qui sono utilizzate due istruzioni combinate int sensorValue; // così inizializziamo una variabile non ancora dichiarata sensorValue in cui memorizzeremo il valore letto su pin 2 sensorValue = digitalRead(2); // con il comando digitalRead(2) leggiamo il valore del pin 2 ad ogni ciclo del loop() e assegnamo tale valore alla variabile sensorValue dichiarata sopra. linea 16: A questo punto, per poter visualizzare il valore assegnato alla variabile sensorValue,e utilizzo il metodo println(sensorValue, DEC) dell' oggetto Serial. in particolare il comando println (print line) scrive il valore contenuto nella variabile sensorValue sul monitor seriale di Arduino andando a capo ad ogni scrittura,il parametro DECconvertee il valore letto in formato DECIMALE.


I COMANDI PRINCIPALI Comando

// /*

*/ void setup() loop() int pinMode(pin,mode) digitalWrite(pin,level) delay(second)

Significato Commento monoriga es.: // Il mio primo programma per Arduino

Apertura commento multiriga; /* * Questo è il mio primo * programma per Arduino */ Chiusura commento Multiriga; es.: vedi sopra dichiarazione di funzione senza ritorno, ossia la funzione esegue delle operazioni ma non restituisce alcun valore dopo l’elaborazione funzione base (obbligatoria) di ogni programma Arduino funzione base (obbligatoria) di ogni programma Arduino dichiarazione di variabile di tipo integer (intero); utilizzato anche per dichiarare le funzioni che restituiscono valori interi funzione di configrazione di un piedino Arduino, in modo che sia utilizzabile come INPUT o come OUTPUT invia un comando di output sul piedino selezionato (pin) di tipo digitale, pe cui 0 o 1; in sostituzione dello 0 e dell’1 si possono utilizzare le costanti LOW (0) e HIGH (1) funzione utile per introdurre un dalay (attesa) tra una istruzione e la successiva, il paramero second è esperesso in millesimi di secondo.


Programmazione Blink


CIRCUITO ELETTRICO BLINK


I SEGNALI PWM Un segnale PWM (Pulse Width Modulation ovvero modulazione a variazione della larghezza d'impulso) è un' onda quadra di duty cycle variabile che permette di controllare l'assorbimento (la potenza assorbita) di un carico elettrico, variando (modulando) il duty cycle.


I SEGNALI PWM - DIGITALI Un segnale PWM è caratterizzato dalla frequenza (fissa) e dal duty cycle (variabile); come si deduce dalla Figura, il duty cycle è il rapporto tra il tempo in cui l'onda assume valore alto e il periodo T (l'inverso della frequenza: T=1/f) ne segue che un duty cycle del 50% corrisponde ad un'onda quadra che assume valore alto per il 50% del tempo, un duty cycle dell'75% corrisponde ad un'onda quadra che assume valore alto per l'75% del tempo e basso per il restante 25%, un duty cycle del 100% corrisponde ad un segnale sempre alto e un duty cycle dello 0% ad un segnale sempre basso.


FADE – CIRCUITO


FADE – CIRCUITO linee 1-9: commento multimilea linea 10: imposta una variabile di tipo intero ( integer ) in cui memorizzerà il valore di luminosità raggiunto del led nel corso del ciclo di loop, La variabile tipo (integer) si utilizza:

int nome_variabile = valore;

linea 11: imposta una variabile di tipo intero ( integer ) e le assegna il valore 5 che, nel nostro caso, rappresenta l’incremento di luminosità (e poi il decremento, nella seconda metà del programma) che il led avrà ad ogli ciclo ( loop ) linee 13-16: definizione della funzione setup() in cui alla linea 14 trovi il commento alla linea successiva la 15, in cui imposta il pin 9 come pin di tipo OUTPUT: pinMode(9, OUTPUT); la linea 16 chiude la funzione setup(). linea 18: definizione della funzione loop() che sarà terminata alla linea 31. linea 20: utilizzando il comando analogWrite imposta il duty-cycle 0 al piedino 9, il duty-cycle è 0 in quanto brightness non è stato ancora variato dalla sua inizializzazione alla linea 11. linea 23: incrementa il valore della variabile brightness del valore di fadeAmount ad ogni ciclo la variabile brightness si incrementa di un valore 5 fino a raggiungere il valore 255, come vedrai alla linea 26. linea 26: esegue un doppio test sulla variabile brightness confrontandola sia con il valore 0 che con il valore massimo che possiamo passare al comando analogWrite: 255; il confronto in Arduino lo si può effettuare con il comando if e utilizzando l’operatore OR la cui rappresentazione nella sintassi del linguaggio Arduino è il ||; al raggiungimento del valore 0 o del valore 255 esegue quanto alla linea successiva. linea 27: inverte il segno della variabile fadeAmount questo trucco comporta che ai successivi cicli quando eseguirà i comandi alla linea 23: brightness = brightness + fadeAmount; in raltà esegue una operazione del tipo brightness = brightness + ( -fadeAmount ); decrementando invece di incrementare il valore di luminosità (brightness) al raggiungimento della soglia 0 il valore di fadeAmount viene nuovamente invertito. linea 30: introduce un tempo di attesa di 30 millisecondi prima di ripetere il ciclo.


I SEGNALI ANALOGICI


I SEGNALI ANALOGICI


I SEGNALI ANALOGICI linee 01-08: contiene un commento multilinea, con in fondo la frase che autorizza all’uso libero il codice esposto linea 10: definisce le operazioni di impostazione della scheda arduino NOTA: in questo esempio non abbiamo definito il pin 0 come input. linea 11: indichiamo ad Arduino che utilizzeremo la comunicazione seriale a 9600 baud linea 14: definizione della funzione loop(), quella eseguita ciclicamente da Arduino. linea 15: dichiarazione della variabile sensorValue Assegnazione del valore alla variabile sensorValue con il risultato letto sul pin A0 analogico, per leggere il valore del pin A0 utilizziamo il comando analogRead(A0). il valore analogico rilevato sul pin A0 varia tra 0 e 1023. linea 16: il comando Serial.prinln(sensorValue, DEC) scrive sul canale seriale di arduino che mostra i risultati nel monitor seriale.


Un esempio pratico Come leggere una tensione con Arduino STRUMENTI UTILI: ●

Arduino

Breadboard

Potenziometro – resistenza variabile

Collegamento USB con Pc/Mac


Un esempio pratico /* ReadAnalogVoltage Reads an analog input on pin 0, converts it to voltage, and prints the result to the serial monitor. Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. This example code is in the public domain. */ // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V): float voltage = sensorValue * (5.0 / 1023.0); // print out the value you read: Serial.println(voltage); }


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.