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 una sorta di display con l uso dei LED in grado di accendersi in base a cosa viene rilevato dal potenziometro: L elettricità, come si può facilmente intuire, parte direttamente dai cavi collegati ad arduino, poi l elettricità passerà poi dai LED e infine con dei nuovi cavi (cavi arancioni e gialli laterali della figura iniziale del progetto) arriverà alle due colonne negative della breadboard, nelle quali finirà il ciclo di elettricità. 1
L elemento principale del progetto è il potenziometro, che, collegato direttamente ad arduino (cavo giallo), dà le informazioni che poi faranno attivare i vari LED; esso è inoltre collegato elettricamente dai due piedini laterali, collegati rispettivamente: quello in basso con la carica positiva (cavo rosso) e quello in alto con la carica negativa (cavo bianco). 2
2 Codice int const potpin = A0; int potval; int angle; void setup() { pinmode(2, OUTPUT); pinmode(3, OUTPUT); pinmode(4, OUTPUT); pinmode(5, OUTPUT); pinmode(6, OUTPUT); pinmode(7, OUTPUT); pinmode(8, OUTPUT); pinmode(9, OUTPUT); pinmode(10, OUTPUT); pinmode(11, OUTPUT); void loop() { potval = analogread(potpin); Serial.print("potVal:"); Serial.print(potVal); if(potval < 100){ // 0 digitalwrite(7, LOW); digitalwrite(9, HIGH); else if(potval > 100 && potval < 200){ // 1 digitalwrite(5, LOW); digitalwrite(6, LOW); digitalwrite(7, LOW); digitalwrite(8, LOW); digitalwrite(10, LOW); digitalwrite(11, LOW); 3
else if(potval > 200 && potval < 300){ // 2 digitalwrite(2, LOW); digitalwrite(5, LOW); digitalwrite(9, HIGH); else if(potval > 300 && potval < 400){ // 3 digitalwrite(5, LOW); else if(potval > 400 && potval < 500){ // 4 digitalwrite(8, LOW); digitalwrite(11, LOW); else if(potval > 500 && potval < 600){ // 5 digitalwrite(3, LOW); else if(potval > 600 && potval < 700){ // 6 4
digitalwrite(3, LOW); digitalwrite(9, HIGH); else if(potval > 700 && potval < 800){ // 7 digitalwrite(5, LOW); digitalwrite(7, LOW); digitalwrite(10, LOW); digitalwrite(11, LOW); else if(potval > 800 && potval < 900){ // 8 digitalwrite(9, HIGH); else if(potval > 900){ // 9 5
Elementi del codice: int const potpin = A0 Questo comando implica l inserimento di una variabile e di una costante, che in questo caso è il potenziometro, che come riferito da = A0 è collegato ad arduino nella presa A0; int potval Serve per contenere il valore di ingresso analogico; int angle Serve per contenere l angolo al quale si vuole che si giri; void setup() Nel void setup andremo ad inserire le configurazioni di tutti i piedini digitali, rendendoli ingressi o uscite; in questo caso abbiamo inserito tramite il comando pinmode() i vari LED inserendo prima della virgola a che presa sono collegati e dopo se sono uscite (OUTPUT) o entrate (INPUT), in questo caso sono tutte uscite; void loop () Nel void loop andremo ad inserire tutto il meccanismo del nostro progetto, dato che il loop () è il posto dove si verifica la tensione sugli oggetti e dove si controllano le uscite. potval = analogread(potpin); Serial.print("potVal:"); Serial.print(potVal); Questa serie di comandi inseriscono la variabile del potenziometro che poi andremo ad utilizzare nei successivi comandi; if(potval x){ Questo comando va riscritto per ogni combinazione di LED si vuole fare dato che serve per far accendere i vari LED in sequenza poichè dice se (if) il potenziometro (potval) è maggiore o minore di un qualche valore (x) allora...({); Dopo la parentesi graffa troveremo tutti i vari LED: digitalwrite(y, HIGH/LOW); Questo comando dovremo ripeterlo per ogni LED, dato che va prima inserita la sua "presa" (y) e poi se il LED va acceso bisognerà inserire HIGH, se invece è spento LOW; 6
3 Storia delle costruzioni Le prime costruzioni che abbiamo fatto sono quelle basilari cioè quelle dove si comprende il meccanismo di base: Con questa prima costruzione abbiamo imparato il percorso che compie l elettricità all interno della breadboard; per questo progetto non è presente neanche il codice; Con questa nuova costruzione abbiamo invece imparato l uso del pulsante collegato direttamente al LED in modo tale che esso si accende solo se il pulsante è premuto; da questa costruzione poi siamo passati ad altre con l uso di più pulsanti contemporaneamente; Nella terza costruzione abbiamo iniziato a studiare il codice e le sue caratteristiche, poichè in questa costruzione sia il pulsante che i LED sono collegati direttamente con arduino e quindi è necessario un codice per controllare il tutto; In questa costruzione abbiamo iniziato ad interagire con elementi più complessi come il TMP36, cioè il sensore di temperatura, attraverso il quale in base al calore percepito si accendono i vari LED; Con questa costruzione abbiamo studiato l uso delle fotoresistenze collegate a un LED RGB, cioè un LED a quattro gambe, questo LED in base alla luce assorbita dalle varie fotoresistenze cambia colore e intensità; 7
Nell ultima costruzione che abbiamo fatto in classe abbiamo utilizzato il potenziometro per muovere il servo e con l uso dei condensatori per eliminare i cali di tensione, questo progetto è stato il più complicato sia dal punto di vista del codice che della costruzione; 4 Componenti elettronici Per questo circuito non abbiamo utilizzato molti componenti elettronici, infatti abbiamo: 13 LED un potenziometro 36 ponticelli 5 Problemi del progetto Durante lo svolgimento del progetto abbiamo riscontrato solamente due problemi: il primo problema riguardava i led e la loro posizione sulla breadboard, infatti i LED che si trovavano sulla stessa riga erano collegati dallo stesso cavo ad arduino e di conseguenza in questo modo non si poteva accenderne uno senza accendere anche l altro o viceversa, per risolvere questo problema è bastato allargare i piedini dei led della fila centrale in modo tale che tra i due piedini ci fosse uno spazio, però in questo modo abbiamo dovuto aumentare i cavi collegati ad arduino da 10 a 13, e quindi è spuntato un nuovo problema: Il secondo problema è quindi nato con la soluzione del primo, questo problema consisteva nel fatto che non erano presenti nell arduino 13 "prese" per i cavi collegati ai LED, per questo motivo per risolvere questo problema abbiamo analizzato le combinazioni e abbiamo notato che alcuni LED si accendevano e si spegnevano entrambi in tutte le combinazioni, per questo motivo abbiamo collegato questi LED insieme, riducendo i cavi da 13 a 10; 8
6 NIMT Obiettivo: Produrre una sequenza di numeri da 0 a 9 attraverso l accensione dei led e l utilizzo del potenziometro. Ci prefiggiamo di raggiungere il nostro obiettivo mediante le conoscenze acquisite riproducendo i progetti proposti dal libro, che ci hanno aiutato a capire il meccanismo di funzionamento di Arduino. La nostra idea è nata proprio tramite l analisi di alcune delle attività descritte dal manuale, ne abbiamo preso spunto per il nostro progetto. 6.1 Procedimento Prima di tutto abbiamo progettato un modello cartaceo in modo da capire la struttura che avremmo dovuto creare, attraverso lo studio dei singoli componenti di Arduino. Successivamente abbiamo posizionato sulla breadboard i vari ponticelli su ogni coppia di led, collegato i cavi principali di corrente e inserito il potenziometro. Infine abbiamo realizzato il codice con cui far funzionare Arduino. 7 Conclusione L esperienza di Arduino è stata molto istruttiva, ci ha dato un piccolo assaggio di ciò che significa programmare, inoltre è una attività che stimola l ingegno e la fantasia di chi ci lavora. Abbiamo raggiunto l obiettivo che ci eravamo prefissati all inizio grazie all attenta analisi dei passaggi da effettuare. Il progetto è riuscito alla perfezione. Per le future generazioni di Arduino suggeriamo di prendere atto dei progetti realizzati dalle classi precedenti e di riuscire a creare qualcosa di più articolato e innovativo. 9