Far lampeggiare un led o forse un semaforo? Lezione 1 di Arduino Grazie per le slide a Giacomo Magisano, Duilio Peroni, Michele Maffucci
Il circuito Un circuito è un percorso chiuso fatto da conduttore elettrici dotati di una fonte di energia (una pila, o, come oggi, il computer tramite il cavo USB). Lungo di esso sono disposti alcuni componenti che sfruttano la corrente per produrre degli effetti. L elettricità scorre dal punto di maggior energia potenziale (alimentazione, +) a uno di minor energia potenziale (massa, terra, ground, -)
Componenti elettrici Un componente elettrico è un dispositivo che produce un effetto utilizzando la corrente elettrica come fonte. Continuiamo con la nostra analogia: possiamo pensarli come mulini che utilizzano il flusso dell acqua per compiere un lavoro, e produrre effetti diversi a seconda delle caratteristiche di ognuno di loro
L alfabeto di Arduino Tipi di circuiti elettrici Sensori e attuatori I sistemi elettronici per interagire con il mondo fisico, utilizzano: sensori che hanno il compito di percepire quantità fisiche dell ambiente attuatori, dispositivi che compiono un azione in funzione di ciò che è stato rilevato dal sensore ed elaborato da un circuito elettronico. Sensori e attuatori vengono anche detti trasduttori. Un trasduttore è quindi un dispositivo in grado di convertire una grandezza fisica in un altra. In generale i trasduttori che convertono grandezze fisiche in segnali elettrici saranno collocati in ingresso ad un circuito elettronico, come Arduino e vengono denominati sensori. Trasduttori che a partire da segnali elettrici in ingresso permettono di controllare o modificare una grandezza fisica esterna sono detti attuatori. CC-BY-SA Prof. Michele Maffucci
L alfabeto di Arduino Arduino vuol dire 3 cose 1/3 Cos è Arduino Un oggetto fisico CC-BY-SA Prof. Michele Maffucci
L alfabeto di Arduino Elementi di base La scheda Arduino CC-BY-SA Prof. Michele Maffucci
L alfabeto di Arduino Caratteristiche tecniche La scheda Arduino Microcontroller: ATmega328 Tensione di lavoro: 5V Tensione di ingresso (raccomandata): 7-12V Tensione di ingresso (limiti): 6-20V Pin digitalio I/O: 14 (di cui 6 forniscono un'uscita PWM) Pin analogici: 6 Corrente Continua per i pin I/O: 40 ma Corrente continua per l'uscita a 3.3V: 50 ma Flash Memory: 32 KB (ATmega328) di cui 0.5 KB usata per bootloader SRAM: 2 KB (ATmega328) EEPROM: 1 KB (ATmega328) Velocità del clock: 16 MHz CC-BY-SA Prof. Michele Maffucci
L alfabeto di Arduino La scheda Arduino Il microcontrollore Il cuore della scheda Arduino è il microcontrollore, un dispositivo elettronico molto simile ad un computer in miniatura che potete trovare in molti degli elettrodomestici che usate ogni giorno: lavatrice, cellulare, forno a microonde, impianto HiFi, ecc... E' molto probabile che se l'elettrodomestico possiede pulsanti e display e rileva grandezze fisiche (temperatura, pressione, ecc...) abbia al suo interno un microcontrollore. CC-BY-SA Prof. Michele Maffucci
Vogliamo far lampeggiare un LED Collegarlo direttamente tra un pin e la massa non è consigliabile, se non per tempi molto brevi, perché la resistenza interna di un LED è molto piccola, per cui la corrente (I = V/R) che ci passa dentro è molto grande e potrebbe danneggiare il pin di uscita e bruciare il led. E' quindi assolutamente necessario aggiungere una resistenza in serie al LED.
Come calcolare il valore della resistenza necessaria? Poichè I=V/R, e dobbiamo limitare I conoscendo V, dobbiamo usare la formula: R = V/I La V però non è la tensione di lavoro della Arduino, (che conosciamo perché è sempre 5V), ma la differenza tra essa e la caduta di potenziale sui morsetti del LED. Questa è una caratteristica che varia a seconda del colore del LED colore rosso: 1,8 V colore giallo: 1,9 V colore verde: 2,0 V colore arancio: 2,0 V colore blu: 3,0 V colore bianco: 3,0 V Dobbiamo poi conoscere I: questa è la massima corrente che può passare nel LED senza bruciarlo. Anche questo dipende dal LED, ma in genere si considera "sicura" una corrente di massimo 20 ma. Quindi adesso abbiamo tutti i dati. Per il led ROSSO V= 5V - 1,8V = 3,2 V I= 20 ma R=V/I = 3,2 / 20 ma = 0,160 kohm = 160 Ohm. Noi useremo resistenze più grandi, per sicurezza ;)
void setup() { pinmode(13, OUTPUT); } void loop() { digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000); }
L alfabeto di Arduino esercizio 2/4 sketch06 Programmazione Specifiche del programma durata del rosso 10 secondi durata del verde 10 secondi durata del giallo 5 secondi CC-BY-SA Prof. Michele Maffucci
Interfaccia per una navicella spaziale Lezione 2 di Arduino Grazie per le slide, e non solo, a Giacomo Magisano, Duilio Peroni, Michele Maffucci
L alfabeto di Arduino esercizio 2/4 sketch06 Programmazione Specifiche del programma durata del rosso 10 secondi durata del verde 10 secondi durata del giallo 5 secondi CC-BY-SA Prof. Michele Maffucci
const int ROSSO = 13; const int GIALLO = 10; const int VERDE = 8; void setup() { pinmode(rosso, OUTPUT); //led rosso pinmode(giallo, OUTPUT); //led giallo pinmode(verde, OUTPUT); //led verde } void loop() { //rosso digitalwrite(rosso, HIGH); delay(1000); digitalwrite(rosso, LOW); //verde digitalwrite(verde, HIGH); delay(1000); //verde-giallo digitalwrite(giallo, HIGH); delay(1000); //tutto spento per un attimo, prima di ripassare al rosso digitalwrite(verde, LOW); digitalwrite(giallo, LOW); }
Input digitali (pulsanti)
L alfabeto di Arduino HIGH / LOW Input digitali Interruttori e pulsanti consentono di effettuare interruzioni e connessioni del passaggio di corrente all interno di un circuito, ma Arduino per comprendere che un componente o un suo piedino è connesso o non connesso ha necessità di leggere una tensione elettrica e nello specifico: livello logico ALTO > HIGH > equivalente a 5 volt = Vcc livello logico BASSO > LOW > equivalente a 0 volt = GND CC-BY-SA Prof. Michele Maffucci
L alfabeto di Arduino APERTO / CHIUSO Input digitali Interruttori e pulsanti vengono definiti CHIUSI (resistenza tra i terminali minori di 1 Ohm equivalente ad un cortocircuito), quando consentono il passaggio di corrente. Se il passaggio di corrente non è consentito si definisce il collegamento APERTO (resistenza tra i terminali > 10 MOhm) Interruttore pulsante CC-BY-SA Prof. Michele Maffucci
L alfabeto di Arduino collegamento pulsanti 1/2 Input digitali Collegamento di pulsante normalmente aperto (N.O. Normaly Open) Dire un pulsante è normalmente aperto, vuol dire che quando non premiamo il pulsante questo interrompe il circuito (non permette il passaggio di corrente), possiamo avere due tipologie di collegamento N.O.: 1. Con resistenza pull-up in cui la resistenza è collegata direttamente a +Vcc e il pulsante a GND Pulsante premuto > pin Arduino collegato a GND (0 V) > livello logico di uscita 0 Pulsante rilasciato > pin Arduino collegato a +Vcc (5 V) > livello logico di uscita 1 2. Con resistenza pull-down in cui la resistenza è collegata direttamente a GND e il pulsante a +Vcc Pulsante premuto > pin Arduino collegato a +Vcc (5 V) > livello logico di uscita 1 Pulsante rilasciato > pin Arduino collegato a GND (0 V) > livello logico di uscita 0 CC-BY-SA Prof. Michele Maffucci
Arduino mette a disposizione una resistenza di pullup interna, così non dobbiamo metterla noi Altrimenti bisogna ricordarsi di mettere una resistenza MOLTO GRANDE
e
Possibili miglioramenti Far sì che il pulsante funzioni esattamente come un interruttore. Perché ora si comporta così? Suggerimento: usare una seconda variabile di stato per memorizzare lo stato del pulsante al giro precedente Aggiungere più LED e creare effetti (usando ance cicli for, ad esempio) all accensione di Arduino e alla pressione del pulsante Modificare il comportamento a seconda del numero di pressioni del pulsante (cioè usare una variabile per contare quante volte è stato premuto). (*) Realizzare un contatore: con 4 led simulare il numero binario corrispondente al numero di volte che un utente ha premuto. (es 3 = 0011 = due led spenti e due accesi, in ordine) Aggiungere al progetto precedente un secondo pulsante di reset per tornare a 0 (tutti i led spenti).
Non è tutto bianco o nero! Lezione 3 di Arduino Grazie per le slide, e non solo, a Giacomo Magisano, Duilio Peroni, Michele Maffucci
Possibili idee Usare un potenziometro per comandare un led a diverse intensità Usare un LED RGB per realizzare effetti stroboscopici Usare un sensore di rumorosità Creare un test dei riflessi con un pulsante e 4 led Usare un display LCD per comunicare risultati
Output analogici (PWM)
Input analogici
Vedere le slide del Prof. Maffucci. http://www.maffucci.it/area-studenti/arduino/