Far lampeggiare un led… o forse un semaforo? · Un trasduttore è quindi un dispositivo in grado...

31
Far lampeggiare un led… o forse un semaforo? Lezione 1 di Arduino Grazie per le slide a Giacomo Magisano, Duilio Peroni, Michele Maffucci

Transcript of Far lampeggiare un led… o forse un semaforo? · Un trasduttore è quindi un dispositivo in grado...

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

Prof. Michele Maffucci

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.

Sensori e attuatori

Tipi di circuiti elettrici

CC-BY-SA

L’alfabeto di Arduino

Prof. Michele Maffucci

L’alfabeto di Arduino Cos’è Arduino

Arduino vuol dire 3 cose 1/3

Un oggetto fisico

CC-BY-SA

Prof. Michele Maffucci

L’alfabeto di Arduino La scheda Arduino

Elementi di base

CC-BY-SA

Prof. Michele Maffucci

L’alfabeto di Arduino La scheda Arduino

Caratteristiche tecniche

● 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

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);

}

Prof. Michele Maffucci

L’alfabeto di Arduino

esercizio

Programmazione

Specifiche del programma

● durata del rosso 10 secondi● durata del verde 10 secondi● durata del giallo 5 secondi

2/4 sketch06

CC-BY-SA

Interfaccia per una navicella spaziale

Lezione 2 di Arduino

Grazie per le slide, e non solo, a Giacomo Magisano, Duilio Peroni, Michele Maffucci

Prof. Michele Maffucci

L’alfabeto di Arduino

esercizio

Programmazione

Specifiche del programma

● durata del rosso 10 secondi● durata del verde 10 secondi● durata del giallo 5 secondi

2/4 sketch06

CC-BY-SA

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)

Prof. Michele Maffucci

L’alfabeto di Arduino 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

HIGH / LOW

CC-BY-SA

Prof. Michele Maffucci

L’alfabeto di Arduino 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

APERTO / CHIUSO

CC-BY-SA

Prof. Michele Maffucci

L’alfabeto di Arduino 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.:

collegamento pulsanti

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

1/2

CC-BY-SA

• Arduino mette a disposizione una resistenza di pullup interna, così non dobbiamo metterla noi

• Altrimenti bisogna ricordarsi di mettere una resistenza MOLTO GRANDE

Prof. Michele Maffucci

L’alfabeto di Arduino Input digitali

Gli input digitali devono essere provvisti di una resistenza che mantenga i pin su un valore conosciuto, quando il pulsante non viene premuto.

Arduino è dotato di resistenze interne di pull-up che possono essere attivate ponendo ad HIGH un pin che si trova in modalità INPUT.

Attenzione che se si imposta un pin di OUTPUT come HIGH e poi lo si passa in modalità INPUT, la resistenza di pull-up rimane attiva e se si va a leggere il valore del pin si ottiene HIGH.

Se impostiamo il pin su LOW in modalità OUTPUT usando il comando digitalWrite(pin, LOW) e poi si passa questo pin ad INPUT con il comando pinMode(pin, INPUT), la resistenza di pull-up rimane disattivata.

Le resistenze di pull-up interne ad Arduino sono di circa 20 KOhm o più.

Per maggiori informazioni si consulti il seguente link.

eliminiamo la resistenza di pull-up 2/4

CC-BY-SA

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/