Corso base su arduino Terza parte

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso base su arduino Terza parte"

Transcript

1 orso base su arduino Terza parte Gli ingressi analogici caratteristiche hardware Il microcontrollore di arduino Uno possiede al suo interno un convertitore analogico digitale con 10 bit di risoluzione. Questo convertitore, d ora in poi denominato D (analog to digital converter), riceve l ingresso tramite un multiplexer analogico che fa capo ai piedini da 0 ad 5 della scheda. La tensione di riferimento dello D è la tensione stessa di alimentazione della scheda: 5 V, però è possibile modificarla inserendo la tensione desiderata (da 0 a max 5V) sul piedino ref (nalog reference) e impartendo una speciale istruzione software. on la tensione di riferimento predefinita (5 V), gli ingressi analogici accettano tensioni comprese tra 0 V e +5 V e le convertono in un valore intero compreso tra 0 e La risoluzione effettiva dello D è quindi pari a 5V / 1024 = 4,88 mv (circa). Esiste anche la possibilità di usare una tensione di riferimento interna di 1,1 V; in tal caso la risoluzione raggiunge 1,074 mv (circa), ma la precisione dipende molto dalla tensione di alimentazione. Inoltre, non si possono dare in ingresso allo D tensioni superiori alla tensione di riferimento. on le funzioni predefinite di arduino, il tempo di conversione è pari a 108 µs, che corrisponde a 9259 conversioni al secondo. Si possono raggiungere valori più elevati di conversioni al secondo, ma bisogna ricorrere alla programmazione dei registri interni del micro e, comunque, si riduce la risoluzione. Inoltre, molti sensori analogici hanno tempi di risposta lenti (temperatura, pressione, umidità, fotoresistori, ecc ) pertanto il convertitore risulta adeguato per applicazioni che ne prevedono l uso. Gli ingressi analogici sono ad elevata impedenza, quindi occorre fare attenzione ad eventuali disturbi elettrici che possono alterare il valore acquisito. Gli ingressi analogici software Per leggere un dato da un ingresso analogico si usa la funzione analogread(piedino_analogico), dove piedino_analogico identifica uno degli ingressi da 0 ad 5. La funzione ritorna un valore intero compreso tra 0 e 1023, come detto in precedenza. Esempi: int valore = analogread(0); legge da 0 e ritorna un valore da 0 a 1023 nella var. valore int fotoresistore = 0; int luce; luce = analogread(fotoresistore); come prima, ritorna da 0 a 1023 nella variabile luce float tensione; int sensore = 1; tensione = analogread(sensore) / * 5.0; ritorna la tensione applicata ad 1 (0 5 V) ome fare per cambiare la tensione di riferimento dello D e quindi il fondoscala? Si usa la funzione analogreference(), con questi possibili parametri: 1

2 analogreference(internl); tensione di rif. e fondoscala a 1,1 V (generati internamente) analogreference(externl); tensione di rif. e fondoscala esterni, inseriti in ref analogreference(defult); tensione di rif. e fondoscala predefiniti a 5V (Vcc) Se si usa il riferimento a 5 V non serve chiamare la funzione analogreference() a meno che non si passi da una tensione di riferimento esterna / interna a quella standard di 5V. Dopo la chiamata alla funzione analogreference( ) è necessario effettuare una lettura a vuoto per dare tempo allo D di assestarsi sul nuovo valore (basta chiamare la funzione analogread() e scartarne il valore). lcune applicazioni laboratoriali ominciamo con un semplice esempio: la lettura di un potenziometro da 10 KΩ e la visualizzazione di un valore proporzionale alla posizione del cursore tramite monitor seriale. 2

3 int cursore = 0; void setup() pinmode(cursore, INPUT); dichiaro 0 come ingresso (facoltativo) Serial.begin(9600); inizializzo la seriale a 9600 baud void loop() int valore = analogread(cursore); leggo la posizione del cursore (0-1023) Serial.print( posizione = ); Serial.println(valore); mostro valore e vado a capo float volt = valore / * 5.0; converto la lettura in volt Serial.print( Tensione = ); Serial.println(volt); mostro la tensione corrispondente delay(1000); aspetto un secondo per dare tempo di leggere e riparto con la lettura successiva Variante possibile: invece di mandare i dati al monitor seriale, visualizzarli su display LD. Seconda esperienza: lettura dell intensità luminosa tramite fotoresistore e accensione di una fila di 10 LED in proporzione alla quantità di luce acquisita. 3

4 Per chi lo preferisce, ecco lo schema elettrico dei collegamenti: V 5.0V 0 R11 6.8kΩ R9 LED9 IO11 LED10 R8 LED8 IO10 R7 LED7 IO9 R6 LED6 R5 LED5 IO8 R4 IO7 LED4 IO6 R3 LED3 IO5 R2 LED2 IO4 R1 IO3 LED1 IO2 R10 ccende da uno a 10 LED proporzionalmente all' intensità luminosa che colpisce un fotoresistore. pin2 = LED -significativo, pin11 = LED +significativo Fotoresistore tra pin 0 e Vcc, R = 6k8 tra 0 e GND const int const int LED[] = 2,3,4,5,6,7,8,9,10,11; SENSORE = 0; void setup() for (int i = 0; i < 10; i++) pinmode(led[i], OUTPUT); pinmode(sensore, INPUT); void loop() int luce = analogread(sensore); if (luce > 1020) luce = 1020; luce = luce / 102; for (int j = 0; j < luce; j++) digitalwrite(led[j], HIGH); for (int k = luce; k < 10; k++) digitalwrite(led[k], LOW); delay(200); se luce tra 1021 e 1023 allora luce = 1020 = 102 * 10 porto il valore da a 0-10 accendo tutti i LED da 0 a luce-1 spengo gli altri LED il tempo per vederli accesi rduino ha anche la funzione map() che converte un intervallo di interi in un altro intervallo: 4

5 int valore; valore = map(valore, in_min, in_max, out_min, out_max); converte valore dal range (in_min, in_max) al range (out_min, out_max) llora il programma può essere riscritto in questo modo: const int const int LED[] = 2,3,4,5,6,7,8,9,10,11; SENSORE = 0; void setup() for (int i = 0; i < 10; i++) pinmode(led[i], OUTPUT); pinmode(sensore, INPUT); void loop() int luce = analogread(sensore); luce = map(luce, 0, 1023, 0, 10); for (int j = 0; j < luce; j++) accendo tutti i LED da 0 a luce-1 digitalwrite(led[j], HIGH); for (int k = luce; k < 10; k++) digitalwrite(led[k], LOW); spengo gli altri LED delay(200); il tempo per vederli accesi l posto del fotoresistore si può usare un NT, in tal caso il numero di LED accesi sarà proporzionale alla temperatura. Per vedere la variazione è sufficiente avvicinare la punta di un saldatore acceso allo NT (senza toccarlo!). Un ulteriore variante prevede la visualizzazione del valore di luminosità (da 0 a 1023) su un display LD. U1 V 5.0V D7 D6 D5 D4 D3 D2 D1 D0 FR E RS RW 5.0V V V GND V 0 R2 6.8kΩ IO5 IO4 IO3 IO2 R1 10kΩ 50 % Key= IO12 IO11 Notate che nello schema circuitale riportato qui sopra non è presente la retroilluminazione ed i piedini del display non sono ordinati in senso crescente (Vcc è il piedino 2, non l 1, ecc ). Lo schema di cablaggio riportato nella pagina seguente riporta la retroilluminazione ed i piedini del display sono nell ordine corretto. 5

6 #include <Liquidrystal.h> Liquidrystal lcd(12, 11, 5, 4, 3, 2); RS, E, D4, D5, D6, D7 int SENSORE = 0; void setup() lcd.begin(16, 2); display 16 colonne 2 righe pinmode(sensore, INPUT); void loop() int luce = analogread(sensore); lcd.clear(); pulisci display lcd.print("luce = "); lcd.print(luce); delay(2000); aggiorna la lettura ogni 2 secondi 6

7 Termometro digitale Viene utilizzato un sensore integrato LM35, caratterizzato da una sensibilità di 10 mv/, tensione di alimentazione da 4V a 30V, accuratezza 0,5 a 25. Se alimentato con tensioni positive, ha un range da 0 a Gli esemplari che abbiamo in laboratorio hanno un contenitore plastico TO92 e la piedinatura, visto da sotto, è riportata nella figura seguente. Lo schema di cablaggio utilizzato è : 7

8 Schema elettrico: U1 V V GND 5.0V 1 5.0V D7 D6 D5 D4 D3 D2 D1 D0 V E RS RW V Vs 0 2 Vout U2 LM35 3 Gnd IO5 IO4 IO3 IO2 R1 10kΩ 50 % Key= IO12 IO11 lcune note riguardanti il programma. Data la sensibilità del sensore, alla temperatura di 100, l uscita è pari a 1V, pertanto viene usato solo 1/5 della scala dello D. onviene allora, usare come tensione di riferimento quella interna di 1,1V. La precisione di questa tensione è legata alla precisione della tensione di alimentazione, che nelle prese USB difficilmente è pari a 5,000 V. L ideale sarebbe di fornire al piedino ref di arduino una tensione stabile e precisa proveniente da un apposito integrato generatore di tensione di riferimento. La costante 9,31 si ricava tramite una proporzione. Dato che il fondo scala dello D è 1,1V, che corrisponde ad una temperatura di 110 (10mV/ ) e ad un valore in uscita dallo D di 1024, allora: X 110 = cioè val 1024 X = val 110 val = #include <Liquidrystal.h> Liquidrystal lcd(12, 11, 5, 4, 3, 2); RS, E, D4, D5, D6, D7 int lm35pin = 0; ingresso sensore temperatura void setup() lcd.begin(16, 2); pinmode(lm35pin, INPUT); analogreference(internl); analogread( lm35pin); lcd.clear(); void loop() lcd.home(); float temperatura = 0.0; int val = 0; float somma = 0.0; int num_letture = 5; 8 display 16 colonne 2 righe Vriferimento = 1,1 V lettura a vuoto per assestare adc pulisce il display singolo valore letto dal sensore (0-1023) viene fatta la media di 5 letture

9 for ( int i = 0; i < num_letture; i++) val = analogread( lm35pin); temperatura = val / 9.31; 9,31 unità per grado elsius somma += temperatura; temperatura = somma / num_letture; lcd.print( temp = ); lcd.print(temperatura); lcd.print( ); delay(5000); aggiorna ogni 5 secondi Termostato con regolazione manuale della temperatura ltro esempio proposto agli studenti delle mie classi. Il sensore è ancora uno LM35 e la regolazione della temperatura avviene tramite potenziometro i cui terminali estremi sono collegati rispettivamente a GND e ref, da cui esce una tensione di 1,1V (riferimento interno). Il cursore va collegato all ingresso analogico 1. i piedini 2 e 3 di arduino sono collegati 2 LED; il primo visualizza lo stato di caldaia in funzione, il secondo di caldaia spenta. l loro posto si può usare un relé, come nei termostati commerciali. Nel programma è inserita un isteresi di ±1 per non provocare un eccessivo numero di commutazioni dello stato della caldaia. ome al solito, prima propongo lo schema di cablaggio e poi il programma. U1 V V GND 5.0V 1 5.0V D7 D6 D5 D4 D3 D2 D1 D0 V E RS RW V Vs 2 0 Vout U2 LM35 Gnd IO5 IO4 IO3 IO2 R1 3 10kΩ Key= 50 % IO12 REF IO11 LED1 R2 10kΩ Key=B 50 % R3 1 LED2 R4 9 IO9 IO8

10 #include <Liquidrystal.h> #define ONPin 8 #define OFFPin 9 LED rosso = caldaia in funzione LED verde = caldaia in standby #define LM35 0 #define POT 1 sensore LM35 su pin 0 cursore potenziometro su pin 1 float readtemp(void); prototipo della funzione che legge dal sensore int acceso = 0; inizialmente, caldaia spenta Liquidrystal lcd(12, 11, 5, 4, 3, 2); void setup() pinmode(lm35,input); pinmode(pot,input); 10

11 analogreference(internl); per l'd usiamo il Vref interno da 1,1V (migliore risoluzione) analogread(lm35); Prima lettura "a vuoto" (serve per l'assestamento dell'd) pinmode(onpin,output); LED rosso in uscita pinmode(offpin,output); LED verde in uscita lcd.begin(16,2); lcd.setursor(3,0); su LD appare il titolo per 2 secondi lcd.print("termostato"); lcd.setursor(4,1); lcd.print("digitale"); delay(2000); void loop() float tamb = readtemp(); legge il valore della temperatura e la memorizza nella variabile temp. lcd.clear(); pulisce lo schermo LD lcd.print("tamb: "); lcd.print(tamb,1); Stampa la parte intera e un decimale della temp lcd.print(' '); Stampa uno spazio lcd.print(''); lcd.setursor(0,1); cursore in posizione: colonna 0, riga 1 lcd.print("tprog: "); int tprog = analogread(pot); tprog = map(tprog,0,1023,4,30); tmin=4, tmax=30 lcd.print(tprog); Stampa il valore di tprog sullo schermo /* accensione dei LED con isteresi */ if(tamb < tprog-1) digitalwrite(onpin, HIGH); digitalwrite(offpin, LOW); acceso = 1; if(tamb > tprog+1) digitalwrite(onpin, LOW); digitalwrite(offpin, HIGH); acceso = 0; if (acceso == 1) lcd.setursor(14,0); lcd.print('*'); quando la caldaia è accesa, appare un * su LD else lcd.setursor(14,0); lcd.print(' '); delay(1000); attende 1 secondo /* Funzione che legge la temperatura dal sensore */ float readtemp() float temp = 0.0; valore convertito in temperatura ( ) int val = 0; valore quantizzato dall'd [ ] int nread = 5; numero di letture (consigliabile da 5 a 8) float somma = 0.0; somma delle letture for (int i=0; i<nread; i++) 11

12 val = analogread(lm35); legge il dato della tensione sul pin 'LM35' temp = val / 9.31; converte la temperatura in somma += temp; aggiunge alla somma delle temperature lette return ( somma / nread ); calcola il valore medio Uno studente mi ha presentato una soluzione che prevedeva di regolare la temperatura desiderata mediante due pulsanti: con il primo si aumenta di 1 alla volta, con il secondo la si diminuisce della stessa quantità. Possibile variante: impostare la temperatura programmata e visualizzare la temperatura ambiente tramite smartphone, via Bluetooth. Materiale extra Sensore ad ultrasuoni H-SR04 Si tratta di un sensore che contiene due capsule ad ultrasuoni: una trasmittente e l altra ricevente. E particolarmente economico (costa qualche euro) e abbastanza preciso. Dato che invia un cono di ultrasuoni, funziona meglio con ostacoli piani e non eccessivamente piccoli (>0,5 mq). Ha una portata massima di 4 metri e lo si utilizza spesso come rilevatore di ostacoli in piccoli robot. Il sensore dispone di 4 terminali: GND e Vcc vanno collegati all alimentazione a 5V, su Trig si deve fornire un impulso di almeno 10 microsecondi che farà partire un treno di ultrasuoni (8 impulsi a 40 Khz), su Echo riceveremo un impulso a livello alto pari alla durata del tragitto andata e ritorno degli ultrasuoni. Lo schema seguente, tratto dal datasheet del componente, ne esemplifica il principio di funzionamento. 12

13 L esempio che propongo è la realizzazione di un metro ad ultrasuoni con visualizzazione sul monitor seriale. La velocità del suono nell aria alla temperatura di 20 è di circa 343,4 m/s, qui useremo la velocità approssimata di 340 m/s per semplicità; se è necessaria una maggior precisione si può usare la seguente legge in funzione della temperatura: V = 331,4 + 0,62*T. Nel programma si possono notare due nuove funzioni di arduino: delaymicroseconds(costante o variabile) che genera un ritardo specificato in microsecondi e pulsein(piedino, livello logico) che ritorna la durata di un impulso in microsecondi, al livello logico specificato (HIGH o LOW) sul piedino d ingresso specificato. lternativamente, invece del monitor seriale, si può usare un display LD per visualizzare la distanza. 13

14 H SR04 Sensore ultrasuoni int triggerport = 7; int echoport = 8; void setup() pinmode( triggerport, OUTPUT ); piedino trigger in uscita pinmode( echoport, INPUT ); piedino echo in ingresso Serial.begin( 9600 ); inizializza porta seriale a 9600 baud Serial.println( "Sensore ultrasuoni: "); scrivi titolo void loop() porta a livello basso l'uscita del trigger digitalwrite( triggerport, LOW ); invia un impulso di 10microsec su trigger digitalwrite( triggerport, HIGH ); delaymicroseconds( 10 ); digitalwrite( triggerport, LOW ); long duration = pulsein( echoport, HIGH );pulsein aspetta che echoport vada alto e poi ritorni basso e restituisce la durata dell'impulso in microsecondi long r = * duration / 2; 340 m/s velocità del suono = cm, la durata è secondi x 10 alla -6 = 0,034 cm/us e viene divisa per 2 perché comprende il tempo di andata e di ritorno Serial.print( "durata: " ); 14

15 Serial.print( duration ); Serial.print( ", " ); Serial.print( "distanza: " ); dopo 38ms è sicuramente fuori dalla portata del sensore if( duration > ) Serial.println( "fuori portata"); else Serial.print( r ); Serial.println( "cm" ); aspetta 1.5 secondi delay( 1500 ); e ripeti la lettura Materiale extra La funzione millis( ) Quando s inizia a programmare arduino c è la tendenza a usare molto la funzione delay, ma dopo un po ci si scontra con un esigenza particolare: come fare per eseguire più attività contemporaneamente, o almeno che procedano indipendentemente una dall altra? d esempio, come far lampeggiare due LED con frequenze diverse? Dovremmo accendere il primo LED, dopo un certo tempo spegnerlo, attendere un altro po di tempo e riaccenderlo. E il secondo LED? E se i LED fossero 5? hiariamo subito che l ambiente di sviluppo di arduino non è multi tasking; è vero che esistono delle librerie, reperibili in rete, che implementano sistemi operativi real time, ma occupano parecchio spazio nella memoria flash lasciandone poca a disposizione del nostro programma. Una soluzione più avanzata consiste nell usare i 3 timer di cui è dotato il microcontrollore in unione con gli interrupt, ma risulta troppo difficile per un neofita perché bisogna agire sui registri interni. Il problema è che la funzione delay è bloccante: finché non è trascorso il tempo in millisecondi passato come argomento arduino non può fare nulla, ad esempio, non può leggere lo stato di un pulsante, il valore di un sensore o aggiornare un display LD. Fortunatamente, esiste la funzione millis( ) che ritorna, su una variabile unsigned long, il valore in millisecondi del tempo trascorso da quando la scheda è stata alimentata ed è aggiornato automaticamente da un timer interno del microcontrollore. Dato che una variabile unsigned long può contenere un valore che va da 0 a circa 4,3 miliardi, facendo gli opportuni calcoli, si vede che ritornerà a 0 dopo circa 49 giorni. Infatti, 4,3 miliardi diviso 1000 equivale a 4,3 milioni di secondi, diviso 60 fornisce 71666,7 minuti che, divisi a loro volta per 60, danno 1194,44 ore equivalenti a 49,77 giorni. Qualora la nostra applicazione richiedesse di operare con la scheda alimentata 24 ore su 24, non ci si deve comunque preoccupare perché, per il modo in cui funzionano le operazioni sulle variabili unsigned, se calcoliamo il tempo come differenza tra il valore attuale restituito da millis e il valore letto in precedenza, il problema si risolve da solo. Gli esempi chiariranno la modalità d uso di questa funzione. Primo esempio: far lampeggiare il LED interno di arduino con periodo di 2 secondi. Prima richiamiamo brevemente il programma che svolgeva questo compito utilizzando la funzione delay: 15

16 #define LED 13 definizione della costante LED void setup() viene eseguita una sola volta all inizio pinmode(led, OUTPUT); definisco il piedino 13 come uscita digitale void loop() Per sempre finché non stacchi la corrente digitalwrite(led, HIGH); Manda un livello alto (5V) al LED delay(1000); attendi 1000 millisecondi digitalwrite(led, LOW); Manda un livello basso (0V) al LED delay(1000); attendi 1000 millisecondi In questo programma, per la maggior parte del tempo, arduino non fa nulla perché deve attendere il completamento delle due chiamate alla funzione delay. Vediamo allora una possibile soluzione che non fa uso di delay: #define LED 13 definizione della costante LED int statoled = LOW; memorizza lo stato del LED unsigned long previousmillis = 0; memorizza l ultimo istante in cui lo stato del LED è stato modificato unsigned long intervallo = 1000; numero di ms dopo il quale modificare lo stato del LED void setup() viene eseguita una sola volta all inizio pinmode(led, OUTPUT); definisco il piedino 13 come uscita digitale void loop() unsigned long currentmillis = millis(); leggo il valore attuale di ms se il valore attuale quello precedente è >= di intervallo if ((currentmillis previousmillis)>=intervallo) previousmillis = currentmillis; salvo l istante in cui ho modificato lo stato del LED if (statoled == LOW) se il led era spento lo accendo e viceversa statoled = HIGH; else statoled = LOW; digitalwrite(led, statoled); scrivo lo stato sul LED fine if((currentmillis fine loop In questo programma non c è nulla che lo blocchi; se voglio eseguire altre istruzioni è sufficiente metterle dopo la fine dell istruzione if ((currentmillis e prima della fine della funzione loop( ). Lo stesso programma può essere rielaborato in forma più compatta nel modo seguente ( : const int ledpin = 13; piedino a cui è collegato il LED interno int ledstate = 0; stato iniziale del LED unsigned long previousmillis = 0; ultimo istante di aggiornamento LED unsigned long interval = 1000; dopo quanti ms cambiare lo stato del LED void setup() pinmode(ledpin, OUTPUT); imposta il piedino 13 come uscita digitale 16

17 void loop() unsigned long currentmillis = millis(); if(currentmillis - previousmillis >= interval) previousmillis = currentmillis; ledstate ^= 1; ^ è l operazione xor binaria e inverte lo stato digitalwrite(ledpin, ledstate); Secondo esempio: facciamo lampeggiare il LED interno tenendolo acceso per 100 ms e spento per 750 ms: int ledpin = 13; il piedino a cui è collegato il LED interno int ledstate = LOW; stato iniziale del LED = spento unsigned long previousmillis = 0; memorizza l ultimo istante in cui lo long OnTime = 100; long OffTime = 750; void setup() pinmode(ledpin, OUTPUT); stato del LED è stato modificato millisecondi di tempo con LED acceso millisecondi di tempo con LED spento definisco il piedino 13 come uscita digitale void loop() leggo il valore attuale di ms unsigned long currentmillis = millis(); se il LED era acceso e sono trascorsi 100 ms if((ledstate == HIGH) && (currentmillis - previousmillis >= OnTime)) ledstate = LOW; spegni LED previousmillis = currentmillis; salvo l istante in cui ho digitalwrite(ledpin, ledstate); modificato lo stato del LED agisco sul LED spegnendolo altrimenti, se il LED era spento e sono passati 750 ms else if ((ledstate == LOW) && (currentmillis - previousmillis >= OffTime)) ledstate = HIGH; accendi LED previousmillis = currentmillis; salvo l istante in cui ho digitalwrite(ledpin, ledstate); modificato lo stato del LED agisco sul LED accendendolo Vediamo ora un esempio più complesso, sempre tratto dal sito In questo programma vogliamo eseguire due compiti: far lampeggiare il LED interno alla scheda con periodo di 200 ms (100 ms acceso e 100 ms spento) e visualizzare sul monitor seriale un conteggio che si aggiorna ogni secondo. Sono state utilizzate due funzioni per rendere più leggibile il codice. Nota: l ambiente di sviluppo di arduino non ci obbliga a scrivere i prototipi delle funzioni. 17

18 const byte ledpin = 13; piedino a cui è collegato il LED interno byte ledstate = 0; stato iniziale del LED = spento unsigned long previousmillis1 = 0; memorizza l ultimo istante in cui lo stato del LED è stato modificato numero di ms dopo il quale modificare lo stato del LED unsigned long previousmillis2 = 0;memorizza l ultimo istante in cui ho aggiornato la variabile del conteggio unsigned long interval2 = 1000; numero di ms dopo il quale incrementare il conteggio unsigned long interval1 = 100; unsigned int counter = 0; void setup() Serial.begin(9600); delay(2000); pinmode(ledpin, OUTPUT); variabile che memorizza il conteggio inizializzo il monitor seriale a 9600 baud attendo che la seriale sia inizializzata imposto il piedino del LED come uscita void loop() blinkled(); chiama funzione che fa lampeggiare il LED printounter(); chiama funzione che visualizza il conteggio funzione che fa lampeggiare il LED void blinkled() guardo se devo cambiare lo stato del LED da acceso a spento o viceversa if (millis() - previousmillis1 > interval1) previousmillis1 = millis(); salvo l istante in cui ho modificato lo stato del LED se il LED era spento, lo accendo e viceversa: ledstate ^= 1; digitalwrite(ledpin, ledstate); funzione che visualizza il conteggio sul monitor seriale void printounter() guardo se devo visualizzare il nuovo valore if (millis() - previousmillis2 > interval2) previousmillis2 = millis(); salvo l istante in cui ho incrementato il conteggio Serial.println(++counter); incremento il conteggio e lo visualizzo Ultimo esempio: far lampeggiare due LED con frequenze e tempi di accensione e spegnimento differenti. Queste variabili memorizzano le sequenze di accensione e lo stato attuale dei LED int ledpin1 = 12; il primo LED è collegato al piedino 12 int ledstate1 = LOW; variabile che memorizza lo stato del LED1 unsigned long previousmillis1 = 0; ultimo istante di aggiornamento del LED1 long OnTime1 = 250; millisecondi di tempo acceso long OffTime1 = 750; millisecondi di tempo spento int ledpin2 = 11; 18 il secondo LED è collegato al piedino 11

19 int ledstate2 = LOW; variabile che memorizza lo stato del LED2 unsigned long previousmillis2 = 0; ultimo istante di aggiornamento del LED2 long OnTime2 = 330; millisecondi di tempo acceso long OffTime2 = 400; millisecondi di tempo spento void setup() imposta i piedini collegati ai LED come uscite: pinmode(ledpin1, OUTPUT); pinmode(ledpin2, OUTPUT); void loop() leggo il valore attuale di ms unsigned long currentmillis = millis(); if((ledstate1 == HIGH) && (currentmillis - previousmillis1 >= OnTime1)) ledstate1 = LOW; stato LED1 = spento previousmillis1 = currentmillis; Memorizzo l istante in cui l ho spento digitalwrite(ledpin1, ledstate1); gisco su LED1 spegnendolo else if ((ledstate1 == LOW) && (currentmillis - previousmillis1 >= OffTime1)) ledstate1 = HIGH; stato LED1 = acceso previousmillis1 = currentmillis; Memorizzo l istante in cui l ho acceso digitalwrite(ledpin1, ledstate1); gisco su LED1 accendendolo if((ledstate2 == HIGH) && (currentmillis - previousmillis2 >= OnTime2)) ledstate2 = LOW; stato LED2 = spento previousmillis2 = currentmillis; Memorizzo l istante in cui l ho spento digitalwrite(ledpin2, ledstate2); gisco su LED2 spegnendolo else if ((ledstate2 == LOW) && (currentmillis - previousmillis2 >= OffTime2)) ledstate2 = HIGH; stato LED2 = acceso previousmillis2 = currentmillis; Memorizzo l istante in cui l ho acceso digitalwrite(ledpin2, ledstate2); gisco su LED2 accendendolo partire dagli esempi riportati si possono realizzare programmi con eventi temporizzati più complessi, senza dover utilizzare la funzione delay( ). Materiale extra rduino e i numeri casuali volte capita di dover utilizzare numeri casuali all interno dei nostri programmi. lassici esempi possono riguardare la realizzazione di un gioco, la simulazione del lancio di un dado, la variazione casuale dei colori in una serie di LED RGB, ecc L ambiente di sviluppo possiede, a tale scopo, la funzione random che restituisce un intero di tipo long (32 bit) e che può essere usata nelle due seguenti modalità: long random(max); ritorna un valore compreso tra 0 (incluso) e max-1 long random(min,max); ritorna un valore compreso tra min (incluso) e max-1 19

20 Esempi: long casuale; long valoremassimo = 300; casuale = random(valoremassimo); ritorna un valore tra 0 (incluso) e 299 long casuale; long valoremassimo = ; long valoreminimo = 2345; casuale = random(valoreminimo, valoremassimo); ritorna un valore tra 2345 e Prima di chiamare la funzione random è necessario però inizializzare il generatore di numeri casuali utilizzando un altra funzione: randomseed. Quest ultima accetta come parametro un numero intero (long oppure int) e genera una sequenza di numeri pseudo-casuali. Ora, ogni volta che si invocherà la funzione random, si otterrà come risultato un numero pseudo-casuale compreso nel campo di valori specificato in precedenza (tra min e max-1). long casuale; long valoremassimo = ; long valoreminimo = 2345; randomseed(100); casuale = random(valoreminimo, valoremassimo); ritorna un valore tra 2345 e Il problema è che la sequenza dipende dal valore passato alla funzione randomseed; se faccio ripartire il programma, otterrò sempre la medesima sequenza. Si può risolvere mettendo come argomento della funzione randomseed una lettura ad un ingresso analogico non utilizzato. Infatti, essendo gli ingressi analogici ad alta impedenza, la lettura da uno di essi non utilizzato fornirà numeri abbastanza a caso che potremo usare per generare ogni volta una sequenza diversa di numeri pseudo-casuali. L esempio, preso dal sito e leggermente modificato, visualizza sul monitor seriale una sequenza di numeri pseudo-casuali con la tecnica esposta sopra: long randnumber; void setup() Serial.begin(9600); Se l ingresso analogico 0 è scollegato, il rumore elettrico captato farà in modo che randomseed() generi sequenze pseudo-casuali differenti ogni volta che il programma viene eseguito. randomseed(analogread(0)); void loop() visualizza un numero random number tra 0 e 299 randnumber = random(300); Serial.println(randNumber); visualizza un numero pseudo-casuale tra 10 e 19 randnumber = random(10, 20); 20

21 Serial.println(randNumber); delay(500); 21

14^ parte : Sensore a ultrasuoni HC SR04 e Arduino. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

14^ parte : Sensore a ultrasuoni HC SR04 e Arduino. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) 14^ parte : Sensore a ultrasuoni HC SR04 e Arduino Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) La GPRS Shield Un sensore a ultrasuoni come il HC SR 04 misura il tempo impiegato dalle onde

Dettagli

I SENSORI DI PROSSIMITA

I SENSORI DI PROSSIMITA I SENSORI DI PROSSIMITA In questa lezione su Arduino, parleremo di un interessante trasduttore, che può essere utile per tantissimi progetti: il sensore di presenza o di prossimità I sensori di prossimità

Dettagli

Corso di programmazione Arduino DI MALVEZZI DAVIDE

Corso di programmazione Arduino DI MALVEZZI DAVIDE Corso di programmazione Arduino DI MALVEZZI DAVIDE Argomenti Pin digitali e pin analogici Gestione di timer e bottoni Utilizzo della porta seriale Oggetto String Controllo di schermi LCD Utilizzo dell

Dettagli

Tipologie dei dati nell SDK di Arduino come in un vero LP ad alto livello :

Tipologie dei dati nell SDK di Arduino come in un vero LP ad alto livello : Questa è una breve guida alla sintassi di base della famosa scheda a microprocessore Arduino. Maggiori informazioni potrete trovarle sul sito ufficiale a questo link Tipologie dei dati nell SDK di Arduino

Dettagli

Corso Base Arduino ed Elettronica

Corso Base Arduino ed Elettronica Corso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com Sensore di temperatura LM35 Il sensore di temperatura LM35 Possiede

Dettagli

ACCENDERE E SPEGNERE UN DIODO LED

ACCENDERE E SPEGNERE UN DIODO LED ACCENDERE E SPEGNERE UN DIODO LED ACCENDERE E SPEGNERE UN DIODO LED ACCENDERE E SPEGNERE UN DIODO LED ACCENDERE E SPEGNERE UN DIODO LED CON UN PULSANTE ACCENDERE E SPEGNERE UN DIODO LED CON UN PULSANTE

Dettagli

Facciamo lampeggiare un led

Facciamo lampeggiare un led Facciamo lampeggiare un led Passiamo a fare qualche esercizio, il più semplice per iniziare a programmare con Arduino è il canonico esercizio blink, che trovate anche negli esempi del programma. Si tratta

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

ARDUINO. Colleghiamolo al PC/MAC - FUNZIONA?

ARDUINO. Colleghiamolo al PC/MAC - FUNZIONA? ARDUINO Colleghiamolo al PC/MAC - FUNZIONA? DUE LED PREINSTALLATI led L è connesso al pin13. PWR indica se l alimentazione c è, e implicitamente se la porta USB è corretta ARDUINO Composizione del codice

Dettagli

Termometro digitale. Ivancich Stefano

Termometro digitale. Ivancich Stefano Termometro digitale Ivancich Stefano 11 Gennaio 2015 SOMMARIO Di seguito si illustra il progetto di un termometro digitale. Il progetto è molto utile per capire il funzionamento delle dinamiche interne

Dettagli

Display numerico con i LED

Display numerico con i LED Display numerico con i LED Ferrari, Porti, Zannetti 1 febbraio 2016 1 Scheda Questo progetto prevede l unione di più caratteristiche prese dai vari progetti fatti in precedenza, per riuscire a formare

Dettagli

CORSO ARDUINO. Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM Jacopo Belli Giulio Fieramosca Luca Mattii

CORSO ARDUINO. Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM Jacopo Belli Giulio Fieramosca Luca Mattii CORSO ARDUINO Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM 2016 1 FAQ time domande e risposte? 2 Iterazioni: while Si usa per ripetere un blocco di codice finché una condizione è vera, ma senza tenere

Dettagli

FC-51: IR Infrared Obstacle Detection Sensor Module 2-30cm

FC-51: IR Infrared Obstacle Detection Sensor Module 2-30cm FC-51: IR Infrared Obstacle Detection Sensor Module 2-30cm Giorgio De Nunzio Giovanni Marsella 0 Premessa: i raggi infrarossi (IR) Fig. 0 Lo spettro delle onde elettromagnetiche, in cui è presente la porzione

Dettagli

SENSORE AD ULTRASUONI HC-SR04 E ARDUINO

SENSORE AD ULTRASUONI HC-SR04 E ARDUINO SENSORE AD ULTRASUONI HC-SR04 E ARDUINO Giorgio De Nunzio Giovanni Marsella http://randomnerdtutorials.com/complete-guide-for-ultrasonic-sensor-hc-sr04/ (con piccole modifiche) http://www.giuseppecaccavale.it/arduino/sensore-ad-ultrasuoni-hc-sr04-arduino/

Dettagli

SENSORI OTTICI - FOTORESISTENZE

SENSORI OTTICI - FOTORESISTENZE SENSORI OTTICI - FOTORESISTENZE ComponentI elettronici con resistenza inversamente proporzionale alla quantità di luce che lo colpisce. La corrente che attraversa una fotoresistenza è direttamente proporzionale

Dettagli

Far lampeggiare un led o forse un semaforo?

Far lampeggiare un led o forse un semaforo? 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

Dettagli

Corso Base Arduino ed Elettronica

Corso Base Arduino ed Elettronica Corso Base Arduino ed Elettronica Terzo incontro Sensori e comunicazione con il computer Relatore: Roberto Beligni rbeligni@altratecnoloiga.com Il comunicazione seriale Per comunicare con la seriale abbiamo

Dettagli

Lezione 6 su Arduino: I sensori di presenza PIR

Lezione 6 su Arduino: I sensori di presenza PIR Lezione 6 su Arduino: I sensori di presenza PIR In questa sesta lezione su Arduino, parleremo di un interessante trasduttore, che può essere utile per tantissimi progetti: il sensore di presenza. Ecco

Dettagli

La piattaforma hardware e software Arduino Corso completo di autoapprendimento Aggiornato a Arduino Yun

La piattaforma hardware e software Arduino Corso completo di autoapprendimento Aggiornato a Arduino Yun 1 La piattaforma hardware e software Arduino Corso completo di autoapprendimento Aggiornato a Arduino Yun Angelo Monfroglio 2 (tempo di apprendimento previsto circa 2-3 ore) Introduzione Parte I Prof.

Dettagli

CORSO ARDUINO. Corso ASEV Giulio Fieramosca Stefano Panichi. Stefano Panichi e Giulio Fieramosca

CORSO ARDUINO. Corso ASEV Giulio Fieramosca Stefano Panichi. Stefano Panichi e Giulio Fieramosca CORSO ARDUINO Giulio Fieramosca Stefano Panichi Corso ASEV 2015 Pulsanti e interruttori Pushbutton Momentary button Pulsante monostabile A B Switch Interruttore bistabile C A B C D C B A Pulsanti e interruttori

Dettagli

7^ parte : Acquisizione della temperatura con LM35 e visualizzazione su display LCD. Author: Ing. Sebastiano Giannitto (ITIS M.

7^ parte : Acquisizione della temperatura con LM35 e visualizzazione su display LCD. Author: Ing. Sebastiano Giannitto (ITIS M. 7^ parte : Acquisizione della temperatura con LM35 e visualizzazione su display LCD Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) Esperienzan 6 Lo scopo del progetto è realizzare un termometro

Dettagli

CORSO ARDUINO. Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM Jacopo Belli Giulio Fieramosca Luca Mattii

CORSO ARDUINO. Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM Jacopo Belli Giulio Fieramosca Luca Mattii CORSO ARDUINO Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM 206 Di cosa parliamo oggi... Generazione di suoni Sensoristica complessa: i protocolli di comunicazione; Shield per Arduino: circuiti avanzati

Dettagli

FONDAMENTI DI ARDUINO

FONDAMENTI DI ARDUINO FONDAMENTI DI ARDUINO LEZIONE 1: LE BASI 8 novembre 2016 presso POLIFACTORY il makerspace del Politecnico di Milano PROGRAMMA DEL CORSO 8/11 Le basi, corrente elettrica, led, resistenze 10/11 Ingressi

Dettagli

PRIMI PASSI CON ARDUINO

PRIMI PASSI CON ARDUINO PRIMI PASSI CON ARDUINO 1) Accensione e spegnimento del led presente sulla scheda Arduino. La scheda Arduino presenta, a bordo, alcuni led uno dei quali può essere controllato dal pin digitale 13; quando

Dettagli

ARDUINO Course.

ARDUINO Course. ARDUINO Course http://ieeessb.unisalento.it RICHIAMI http://ieeessb.unisalento.it Reset Arduino UNO 14 PIN di input/output digitali Porta USB Connettore alimentazione 9V Microcontrollore ATmega328 6 PIN

Dettagli

Per controllare un motore DC (funzionante in corrente continua) con Arduino, devi utilizzare il circuito integrato Ponte H (nel mio caso un L293NE

Per controllare un motore DC (funzionante in corrente continua) con Arduino, devi utilizzare il circuito integrato Ponte H (nel mio caso un L293NE Controllo di velocità e verso di un motore DC con Arduino con L293NE Per controllare un motore DC (funzionante in corrente continua) con Arduino, devi utilizzare il circuito integrato Ponte H (nel mio

Dettagli

Il Theremin con il microcontrollore

Il Theremin con il microcontrollore Il Theremin con il microcontrollore Possiamo costruire uno strumento simile al Theremin utilizzando un dispositivi programmabile come il microcontrollore e un sensore di distanza (ultrasuoni). A secondo

Dettagli

6^ parte : Acquisizione della temperatura con LM35. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

6^ parte : Acquisizione della temperatura con LM35. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) 6^ parte : Acquisizione della temperatura con LM35 Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) Esperienzan 5 Lo scopo è quello di far accendere due LED in base ad una soglia di temperatura

Dettagli

void setup() // funzione di configurazione dei Input/Output { pinmode(pin, OUTPUT); // setta il 'pin' come uscita (output) } 1

void setup() // funzione di configurazione dei Input/Output { pinmode(pin, OUTPUT); // setta il 'pin' come uscita (output) } 1 Primi passi con la programmazione in linguaggio C con la scheda Arduino Traduzione del libro: Arduino programming notebook di Brian W. Evans con modifiche e aggiunte di G. Carpignano e C. Busso Prefazione

Dettagli

Corso Arduino Maggio Riccardo Binetti Lezione 2 - Il calore dell analogico

Corso Arduino Maggio Riccardo Binetti Lezione 2 - Il calore dell analogico Corso Arduino 2014 28 Maggio 2014 Riccardo Binetti punkerbino@gmail.com Lezione 2 - Il calore dell analogico Riccardo Binetti Arduino 2014 Lezione 2 1 / 27 Segnali analogici L altra volta abbiamo lavorato

Dettagli

IL SUONO E GLI ULTRASUONI DI MARIANGELA MONE

IL SUONO E GLI ULTRASUONI DI MARIANGELA MONE IL SUONO E GLI ULTRASUONI DI MARIANGELA MONE INTRODUZIONE Il suono si propaga nei corpi mediante la vibrazione elastica degli atomi e delle molecole che lo compongono ad una velocità dipendente dalle caratteristiche

Dettagli

Corso Arduino Maggio Riccardo Binetti Lezione 1 - Blinking LEDs with style

Corso Arduino Maggio Riccardo Binetti Lezione 1 - Blinking LEDs with style Corso Arduino 2014 21 Maggio 2014 Riccardo Binetti punkerbino@gmail.com Lezione 1 - Blinking LEDs with style Riccardo Binetti Arduino 2014 Lezione 1 1 / 24 Fate domande Riccardo Binetti Arduino 2014 Lezione

Dettagli

Prof. Capuzzimati Mario - ITIS Magistri Cumacini - Como MICROCONTROLLORE

Prof. Capuzzimati Mario - ITIS Magistri Cumacini - Como MICROCONTROLLORE Microcontrollori MICROCONTROLLORE I Microcontrollori (MCU: MicroController Unit) sono dispositivi integrati su un singolo chip, che interagiscono direttamente col mondo esterno, grazie a un programma residente.

Dettagli

Genere DATA Generalità Note Distribuzione

Genere DATA Generalità Note Distribuzione UTILIZZO DISPLAY 16X2 SU BREAD-BOARD ARDUINO RIFERIMENTI GENERALITA Genere DATA Generalità Note Distribuzione radio Feb 16 laboratorio af Utilizzare ARDUINO con efficacia per prove in laboratorio richiede

Dettagli

Arduino. Led, pulsanti, PWM, tastierino, display sette segmenti, display LCD

Arduino. Led, pulsanti, PWM, tastierino, display sette segmenti, display LCD Arduino Led, pulsanti, PWM, tastierino, display sette segmenti, display LCD Accendere e spegnere i led in void setup() { for(int i=2;i

Dettagli

CORSO ARDUINO. Corso ASEV Giulio Fieramosca Stefano Panichi. Lezione 3 PWM e motori. Stefano Panichi e Giulio Fieramosca

CORSO ARDUINO. Corso ASEV Giulio Fieramosca Stefano Panichi. Lezione 3 PWM e motori. Stefano Panichi e Giulio Fieramosca CORSO ARDUINO Giulio Fieramosca Stefano Panichi Corso ASEV 2015 Lezione 3 PWM e motori PWM modulazione a larghezza d'impulso Formule e Dati Ton = 1/3 del periodo Toff = 2/3 del periodo Duty Cycle = Ton

Dettagli

La Keyes 4 relay non è proprio una shield nel senso classico definito nel mondo arduino in quanto una shield dovrebbe essere concepita per essere

La Keyes 4 relay non è proprio una shield nel senso classico definito nel mondo arduino in quanto una shield dovrebbe essere concepita per essere La Keyes 4 relay non è proprio una shield nel senso classico definito nel mondo arduino in quanto una shield dovrebbe essere concepita per essere impilata all arduino creando il classico castello o panettone.

Dettagli

CTU Presenta. Contest Automation con Arduino. IK0XBX - Francesco

CTU Presenta. Contest Automation con Arduino. IK0XBX - Francesco CTU Presenta Contest Automation con Arduino IK0XBX - Francesco Arduino cosa è??? Arduino Uno lo standard Arduino Mega più in/out e 4 seriali Arduino Nano quello tascabile Arduino è una piattaforma open-source

Dettagli

5^ parte : Controllare un LED RGB con 3 potenziometri. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

5^ parte : Controllare un LED RGB con 3 potenziometri. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) 5^ parte : Controllare un LED RGB con 3 potenziometri Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) Esperienzan 3 Lo scopo è riuscire a controllare i tre canali di un led RGB attraverso dei

Dettagli

Comprendere il funzionamento dei convertitori Saper effettuare misure di collaudo

Comprendere il funzionamento dei convertitori Saper effettuare misure di collaudo SCH 35 Convertitore A/D Obiettivi Comprendere il funzionamento dei convertitori Saper effettuare misure di collaudo Strumenti e componenti IC1 LM 35 IC2 LM 158 IC3 ADC 0804 IC4 74LS244 R 1 = 75 Ω R 2 =

Dettagli

SEA Descrizione. Centralina Controllo Strip LED RGB

SEA Descrizione. Centralina Controllo Strip LED RGB Descrizione La centralina di controllo consente di pilotare Strip LED RGB o Bianchi fino ad un massimo di 10 Mt per Strip da 60 LED/mt o 20 Mt per Strip da 30 LED/Mt. La centralina puo essere configurata

Dettagli

Corso base su arduino Seconda parte

Corso base su arduino Seconda parte Corso base su arduino Seconda parte Gli ingressi digitali Gli stessi piedini utilizzati come uscite digitali possono essere impiegati come ingressi digitali. I livelli logici sono ancora di tipo TTL (livello

Dettagli

Sezione di Analog/Digital

Sezione di Analog/Digital Corso di BASCOM AVR - (33) Corso Teorico/Pratico di programmazione in BASCOM AVR. Autore: DAMINO Salvatore. Sezione di Analog/Digital Converter. Schema a Blocchi della Sezione di A/D Converter. Una delle

Dettagli

Programmazione di Base Variabili Array Funzioni Strutture di controllo. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Programmazione di Base Variabili Array Funzioni Strutture di controllo. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) Programmazione di Base Variabili Array Funzioni Strutture di controllo Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) 3^ parte Com è fatto Arduino Programmazione da USB Nota: Firmware: Insieme

Dettagli

Macchina con Arduino Uno comandata tramite dispositivo Android e sensore ultrasuoni per fermarsi istantaneamente di fronte ad un ostacolo

Macchina con Arduino Uno comandata tramite dispositivo Android e sensore ultrasuoni per fermarsi istantaneamente di fronte ad un ostacolo Macchina con Arduino Uno comandata tramite dispositivo Android e sensore ultrasuoni per fermarsi istantaneamente di fronte ad un ostacolo Progetto di fine anno Gruppo C, A.S 2015/2016 Realizzato da Classe:

Dettagli

Relazione attività di laboratorio - Arduino

Relazione attività di laboratorio - Arduino Relazione attività di laboratorio - Arduino Bertini Filippo, Feher Francesco, Monti Lucio, Ungari Alessandro 23 febbraio 2016 Contenuti teorici preliminari,scheda e codice Sono due le parti fondamentali

Dettagli

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico ISTITUTO TECNICO STATALE MARCHI FORTI Viale Guglielmo Marconi n 16-51017 PESCIA (PT) - ITALIA PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico Docente PARROTTA GIOVANNI

Dettagli

12 - timer da cucina display a 4 cifre

12 - timer da cucina display a 4 cifre 12 - timer da cucina display a 4 cifre Il display led da 4 cifre utilizzato in questo esercizio e il modello HS410561K-32. Questo modello, e caratterizzato da 4 anodi (uno per ogni cifra) e dai 8 catodi,

Dettagli

Circuiti antirimbalzo

Circuiti antirimbalzo Circuiti antirimbalzo La figura seguente mostra una semplice applicazione di un latch SR per l'accensione o lo spegnimento di un LED mediante due pulsanti "con ritorno": Le due resistenze R sono resistenze

Dettagli

Realizzate il circuito come indicato nello schema seguente:

Realizzate il circuito come indicato nello schema seguente: Esercizio 1 Fare lampeggiare contemporaneamente due diodo LED collegati rispettivamente al pin 12 e 11 di Arduino con tempi di accensione e spegnimento pari ad 1 secondo. Realizzate il circuito come indicato

Dettagli

Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio.

Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio. Lampeggio di 8 led Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio. Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Contatore asincrono esadecimale

Contatore asincrono esadecimale Contatore asincrono esadecimale Il contatore asincrono è un circuito composto da un generatore di onde quadre (clock), quattro Flip Flop JK con Preset e Clear attivi a fronte logico basso. Preset, J e

Dettagli

COMPONENTI PER L ELETTRONICA INDUSTRIALE E IL CONTROLLO DI PROCESSO. Misuratori ed indicatori digitali da pannello DAT9550, DAT8050 e SERIE DAT700

COMPONENTI PER L ELETTRONICA INDUSTRIALE E IL CONTROLLO DI PROCESSO. Misuratori ed indicatori digitali da pannello DAT9550, DAT8050 e SERIE DAT700 COMPONENTI PER L ELETTRONICA INDUSTRIALE E IL CONTROLLO DI PROCESSO Misuratori ed indicatori digitali da pannello DAT9550, DAT8050 e SERIE DAT700 La serie di misuratori e indicatori digitali è costituita

Dettagli

CONTASECONDI CON DISPLAY A 7 SEGMENTI ARDUINO LIKE

CONTASECONDI CON DISPLAY A 7 SEGMENTI ARDUINO LIKE SCHEDA DI LABORATORIO N 3 CONTASECONDI CON DISPLAY A 7 SEGMENTI ARDUINO LIKE Si vuole realizzare un contasecondi con display a 7 segmenti utilizzando la scheda Arduino. Materiale occorrente: N 1 Bread

Dettagli

Tesina di Maturità. Gianfriddo Giuseppe Classe: 5^B I.T.I.S Indirizzo: Elettronica ed elettrotecnica Anno: 2014/15. Autore: Gianfriddo Giuseppe

Tesina di Maturità. Gianfriddo Giuseppe Classe: 5^B I.T.I.S Indirizzo: Elettronica ed elettrotecnica Anno: 2014/15. Autore: Gianfriddo Giuseppe 1 Tesina di Maturità Gianfriddo Giuseppe Classe: 5^B I.T.I.S Indirizzo: Elettronica ed elettrotecnica Anno: 2014/15 2 3 Premesse 4 L obiettivo che mi sono prefissato, inizialmente era quello di progettare,

Dettagli

Internetworking V a nno

Internetworking V a nno Internetworking V anno Introduzione ad Arduino Introduzione La scheda Arduino nasce nel 2005 dall idea di alcuni giovani ricercatori guidati da Massimo Banzi. Il loro obiettivo era quello di creare una

Dettagli

Relazione progetto Arduino

Relazione progetto Arduino Relazione progetto Arduino A cura di Francesca Cella e Andrea Marras Il progetto che abbiamo realizzato è un dispositivo in grado di leggere la temperatura, l umidità presente nell aria e di tenere il

Dettagli

Ultrasonic Level Meter USM-02. (Estratto dal manuale operatore)

Ultrasonic Level Meter USM-02. (Estratto dal manuale operatore) Ultrasonic Level Meter USM-02 (Estratto dal manuale operatore) Ultrasonic Level Meter USM-02 Estratto dal manuale operatore Pag. 2 Introduzione La misura del livello gioca un ruolo fondamentale in molte

Dettagli

Alunna: Gennuso Ylenia classe VB a.s. 2014/2015

Alunna: Gennuso Ylenia classe VB a.s. 2014/2015 Alunna: Gennuso Ylenia classe VB a.s. 2014/2015 Arduino è una piattaforma di sviluppo open-source basata su una semplice scheda I / O con un µc e un ambiente di sviluppo che implementa hardware e software

Dettagli

TERMOMETRO LCD BASATO SUL TRASDUTTORE DI TEMPERATURA ANALOGICO LM 35

TERMOMETRO LCD BASATO SUL TRASDUTTORE DI TEMPERATURA ANALOGICO LM 35 ESERCITAZIONE CON ARDUINO N 5 TERMOMETRO LCD BASATO SUL TRASDUTTORE DI TEMPERATURA ANALOGICO LM 35 Con il presente circuito, si vuole realizzare un termostato ambientale per un caseificio, che utilizza

Dettagli

ARDUINO. Misurare e controllare. Riccardo Barberi. Dip. di Fisica Univ. Della Calabria Rende (CS), Italy

ARDUINO. Misurare e controllare. Riccardo Barberi. Dip. di Fisica Univ. Della Calabria Rende (CS), Italy ARDUINO Misurare e controllare Riccardo Barberi Dip. di Fisica Univ. Della Calabria Rende (CS), Italy Misurare In ambito scientifico le misure di grandezze fisiche permettono di studiare i fenomeni, verificare

Dettagli

Controllo di una soglia analogica

Controllo di una soglia analogica Controllo di una soglia analogica CONTROLLO DI UNA SOGLIA ANALOGICA Questo esempio mostra il procedimento di acquisizione di un ingresso analogico ed il controllo del segnale rispetto ad una soglia con

Dettagli

La programmazione di Arduino

La programmazione di Arduino La programmazione di Arduino Si analizza la sintassi delle principali istruzioni per Arduino mediante alcuni esempi applicativi (sketch); per la sintassi completa del linguaggio di programmazione di Arduino

Dettagli

I.P.S.I.A. Di BOCCHIGLIERO. ----Misure sui converitori A/D---- Materia: Elettronica, Telecomunicazioni ed applicazioni. prof. Ing.

I.P.S.I.A. Di BOCCHIGLIERO. ----Misure sui converitori A/D---- Materia: Elettronica, Telecomunicazioni ed applicazioni. prof. Ing. I.P.S.I.A. Di BOCCHIGLIERO a.s. 2011/2012 -classe IV- Materia: Elettronica, Telecomunicazioni ed applicazioni ----Misure sui converitori A/D---- Alunna: Lautieri Mariacaterina prof. Ing. Zumpano Luigi

Dettagli

Progetto per il corso di Microcontrollori: Gestore Ambientale

Progetto per il corso di Microcontrollori: Gestore Ambientale UNIVERSITÀ DEGLI STUDI DELL INSUBRIA Corso di Laurea Magistrale in Informatica Progetto per il corso di Microcontrollori: Gestore Ambientale Studente: Bonizzi Mauro Matr. 711020 Anno Accademico 2013/2014

Dettagli

M320 ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE

M320 ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE Pag. 1/2 Sessione ordinaria 2008 Seconda prova scritta M320 ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE CORSO DI ORDINAMENTO Indirizzo: ELETTRONICA E TELECOMUNICAZIONI Tema di: ELETTRONICA (Testo valevole

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 2ª) ver. Classe 3BN (elettronica) marzo 22 Giorgio Carpignano I.I.S. Primo LEVI - TORINO Il menù per oggi Lettura dei pulsanti Comunicazione

Dettagli

Corso Arduino Maggio Riccardo Binetti Lezione 1 - Blinking LEDs with style

Corso Arduino Maggio Riccardo Binetti Lezione 1 - Blinking LEDs with style Corso Arduino 2015 18 Maggio 2015 Riccardo Binetti arduino@rbino.com Lezione 1 - Blinking LEDs with style Riccardo Binetti Arduino 2015 Lezione 1 1 / 34 Fate domande Riccardo Binetti Arduino 2015 Lezione

Dettagli

Sezione di Analog/Digital

Sezione di Analog/Digital Corso di BASCOM 8051 - (Capitolo 3 3 ) Corso Teorico/Pratico di programmazione in BASCOM 8051. Autore: DAMINO Salvatore. Sezione di Analog/Digital Converter. Una delle risorse più interessanti dei Mini

Dettagli

CORSO ARDUINO. Corso ASEV Giulio Fieramosca Stefano Panichi. Stefano Panichi e Giulio Fieramosca

CORSO ARDUINO. Corso ASEV Giulio Fieramosca Stefano Panichi. Stefano Panichi e Giulio Fieramosca CORSO ARDUINO Giulio Fieramosca Stefano Panichi Corso ASEV 2015 Elettronica di base Differenza di potenziale (o tensione): Spinge gli elettroni a muoversi Si misura in Volt [V] Intensità di Corrente: Flusso

Dettagli

E labirinto cronaca di un fallimento

E labirinto cronaca di un fallimento E labirinto cronaca di un fallimento Non tutte le ciambelle riescono con il buco e questa e la relazione di un fallimento, poiche il risultato finale non e stato raggiunto. Ma il prototipo funziona correttamente

Dettagli

D sistema d allarme con sensori magnetici

D sistema d allarme con sensori magnetici D sistema d allarme con sensori magnetici Il sistema di allarme proposto in questa nota prevede l utilizzo di sensori reed per rilevare l apertura di porte e/o finestre. Il programma prevede due sensori,

Dettagli

Acquisizione Dati. Introduzione

Acquisizione Dati. Introduzione UNIVERSITÀ DEGLI STUDI DI CAGLIARI Dipartimento di Ingegneria Meccanica, Chimica e dei Materiali Corso di Sperimentazione sulle Macchine Acquisizione Dati Introduzione Introduzione In campo scientifico

Dettagli

Arduino: manuale di programmazione wiring

Arduino: manuale di programmazione wiring Arduino: manuale di programmazione wiring Introduzione Che cosa e, come si progetta e come si scrive un programma Struttura di un programma Ortografia, grammatica e sintassi Le parole chiave Le istruzioni

Dettagli

Capitolo IX. Convertitori di dati

Capitolo IX. Convertitori di dati Capitolo IX Convertitori di dati 9.1 Introduzione I convertitori di dati sono circuiti analogici integrati di grande importanza. L elaborazione digitale dei segnali è alternativa a quella analogica e presenta

Dettagli

Questo sistema si è poi diffuso in tutto il mondo, soprattutto in ambito didattico e hobbistico. Arduino mette a disposizione:

Questo sistema si è poi diffuso in tutto il mondo, soprattutto in ambito didattico e hobbistico. Arduino mette a disposizione: Arduino L utilizzo di un microcontrollore presenta talvolta alcune difficoltà per chi si avvicina per la prima volta alla progettazione. I costruttori, per agevolare il lavoro ai progettisti, in genere

Dettagli

Radio Stereo FM. Descrizione Pannello di controllo. A.E.S. Elettronica di Urbani Settimio & C. Snc. 6 tasti: Radio ON/OFF : accende e spegne la Radio

Radio Stereo FM. Descrizione Pannello di controllo. A.E.S. Elettronica di Urbani Settimio & C. Snc. 6 tasti: Radio ON/OFF : accende e spegne la Radio Radio Stereo FM Descrizione Pannello di controllo 6 tasti: Radio ON/OFF : accende e spegne la Radio Search : attiva la ricerca di un emittente Memory : attiva la memorizzazione dei programmi, a Radio spenta

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 4ª) giugno 2013 Giorgio Carpignano I.I.S. PRIMO LEVI C.so Unione Sovietica 490 (TO) Materiale didattico: www.iisprimolevi.it Conversione

Dettagli

ARDUINO. Ing. Francesco Giurlanda francesco.giurlanda@iet.unipi.it

ARDUINO. Ing. Francesco Giurlanda francesco.giurlanda@iet.unipi.it ARDUINO Ing. Francesco Giurlanda francesco.giurlanda@iet.unipi.it Cos'è ARDUINO? Il progetto nasce ad Ivrea, nel 2005. Obiettivo: realizzare un sistema di prototipizzazione economico. Al Maggio del 2011

Dettagli

La piattaforma hardware e software Arduino: parte I. Corso di autoapprendimento

La piattaforma hardware e software Arduino: parte I. Corso di autoapprendimento La piattaforma hardware e software Arduino: parte I (tempo di apprendimento previsto circa 2-3 ore) Introduzione Corso di autoapprendimento Prof. Angelo Monfroglio Questa è la prima parte di un corso di

Dettagli

STRUTTURA BASE PER SISTEMA DI ACQUISIZIONE DATI DA BANCO

STRUTTURA BASE PER SISTEMA DI ACQUISIZIONE DATI DA BANCO STRUTTURA BASE PER SISTEMA DI ACQUISIZIONE DATI DA BANCO - Alimentazione 220Vac 50hz 80VA - Contenitore da tavolo in alluminio 471 x 147 x 312 mm (grado di protezione IP20) oppure montaggio a rack 19"

Dettagli

17^ parte : Utilizzare il modulo Bluetooth JY-MCU. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

17^ parte : Utilizzare il modulo Bluetooth JY-MCU. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) 17^ parte : Utilizzare il modulo Bluetooth JY-MCU Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) Premessa : I piedini 0 ed 1 sono quelli collegati al convertitore Seriale USB... quindi,

Dettagli

Comprendere il funzionamento dei convertitori V/f Saper effettuare misure di collaudo

Comprendere il funzionamento dei convertitori V/f Saper effettuare misure di collaudo SCH 32 Convertitore tensione/frequenza Obiettivi Strumenti e componenti Comprendere il funzionamento dei convertitori V/f Saper effettuare misure di collaudo R1 = 1,2 KΩ; R2 = 3,6 KΩ; R4 = 180 Ω; R5 =

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

Gestione dell'interrupt con il microcontrollore ATMega328 (scheda Arduino)

Gestione dell'interrupt con il microcontrollore ATMega328 (scheda Arduino) Gestione dell'interrupt con il microcontrollore ATMega328 (scheda Arduino) Un microcontrollore normalmente esegue le istruzioni nella sequenza definita in fase di programmazione (fig. 1). Comunque, il

Dettagli

Configurazione di Visualino 01. Collegate la scheda Arduino alla porta USB del computer

Configurazione di Visualino 01. Collegate la scheda Arduino alla porta USB del computer Configurazione di Visualino 01. Collegate la scheda Arduino alla porta USB del computer 02. Doppio click sull icona Visualino L ambiente di sviluppo grafico è suddiviso in tre sezioni, da sinistra verso

Dettagli

STRUTTURE DI CONTROLLO DEL C++

STRUTTURE DI CONTROLLO DEL C++ STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto

Dettagli

SVOLGIMENTO SECONDA PROVA 2017 SISTEMI AUTOMATICI: PARTE 1

SVOLGIMENTO SECONDA PROVA 2017 SISTEMI AUTOMATICI: PARTE 1 SVOLGIMENTO SECONDA PROVA 2017 SISTEMI AUTOMATICI: PARTE 1 Tema svolto Il testo non precisa l'estensione della rete sperimentale della fase di strong motion dei terremoti. Si può quindi ragionevolmente

Dettagli

File binari e file di testo

File binari e file di testo I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file

Dettagli

8^ parte: Pilotare Motori passo-passo bipolari usando l integrato SN754410NE. Author: Ing. Sebastiano Giannitto (ITIS M.

8^ parte: Pilotare Motori passo-passo bipolari usando l integrato SN754410NE. Author: Ing. Sebastiano Giannitto (ITIS M. 8^ parte: Pilotare Motori passo-passo bipolari usando l integrato SN754410NE Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) Esperienzan 7 Lo scopo del progetto è riuscire a gestire un motore

Dettagli

HP LED Driver Shield. EtherMania di Signorini Marco Via Cadore 9 21046 MALNATE (VA) P.I. 03111760124 REA VA-324137 http://www.ethermania.

HP LED Driver Shield. EtherMania di Signorini Marco Via Cadore 9 21046 MALNATE (VA) P.I. 03111760124 REA VA-324137 http://www.ethermania. HP LED Driver Shield Introduzione Lo HPLEDDriverShield e' uno shield per Arduino (UNO e Mega 2560) che permette di pilotare fino a 4 stringhe di LED High Power. Ogni canale e' dotato di un preciso generatore

Dettagli

Relazione progetto Arduino

Relazione progetto Arduino Relazione progetto Arduino Alberini Virginia Alinovi Alessia Andrei Sandro Antonio Buzzi Massimo 12 febbraio 2016 1 Contenuti teorici Arduino è una piattaforma hardware programmabile, con cui è possibile

Dettagli

TM1638 BOARD con ARDUINO

TM1638 BOARD con ARDUINO TM1638 BOARD con ARDUINO 8-Bit LED 8-Bit Digital 8-Bit Key TM1638. Ci sono solo tre linee di controllo.c'è una libreria e la scheda ha solo 3 pin di controllo, più alimentazione e la terra. I pin di controllo

Dettagli

Cablaggio ponte H con integrato L293B

Cablaggio ponte H con integrato L293B ISTITUTO SUPERIORE Fossati - Da Passano A.S. 2012/2013 Relazione Tecnica Cablaggio ponte H con integrato L293B Redatori: Bianchi Claudia Gjoni Juela Manfredi Francesca Musso Giada Pelati M. Chiara INDICE

Dettagli

Conversione Analogico/Digitale

Conversione Analogico/Digitale Conversione Analogico/Digitale Le grandezze fisiche che vogliamo misurare variano con continuità in un dato intervallo ed in funzione del tempo: sono descrivibili come una funzione continua di variabile

Dettagli

QUADRO DI CONTROLLO AMBIENTALE

QUADRO DI CONTROLLO AMBIENTALE MAKER FAIRE ROME - OTTOBRE 2014 QUADRO DI CONTROLLO AMBIENTALE Realizzato dagli studenti dell I.T.I. - L.S. "Francesco Giordani" di Caserta Classe 2 a Q Trasporti e Logistica Costruzione del mezzo: aereo,

Dettagli

My First Robot. My First Robot. I m Learning Robotics. 1 Scarica l ultima versione della Arduino IDE (https://www.arduino.cc/en/main/software)

My First Robot. My First Robot. I m Learning Robotics. 1 Scarica l ultima versione della Arduino IDE (https://www.arduino.cc/en/main/software) Card1of 10 1 Scarica l ultima versione della Arduino IDE (https://www.arduino.cc/en/main/software) 2 Ora apri Arduino e seleziona File->Preferences (File -> Impostazioni) e copia questa url nel campo Additional

Dettagli

ARDUINO WORKSHOP Bologna, 30 Maggio Relatore: Ing. Paolo Guidorzi

ARDUINO WORKSHOP Bologna, 30 Maggio Relatore: Ing. Paolo Guidorzi Bologna, 30 Maggio 2017 Relatore: Ing. Paolo Guidorzi pag.2 Terza parte - Una realizzazione completa: il naso elettronico - Display grafico - ADC 16 bit - Sensore pressione temperatura umidità - Salvataggio

Dettagli

Corso di BASCOM (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM Autore: DAMINO Salvatore. D I S P L A Y L C D (3).

Corso di BASCOM (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM Autore: DAMINO Salvatore. D I S P L A Y L C D (3). Corso di BASCOM 8051 - (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM 8051. Autore: DAMINO Salvatore. D I S P L A Y L C D (3). GESTIONE DI UNA SEMPLICE CALCOLATRICE. Questo programma

Dettagli