Eccomi quà, di nuovo in forma!
E' riiniziata la scuola, sono passate le vacanze di natale...
Approposito... Buon anno!
Di recente mi sono messo a partecipare un po' alle discussioni sul forum di arduino nella sezione italiana e indovinate un po'... Il mio codice che avevo lasciato tempo fa è servito! :D
In realtà l'ho modificato un po' perchè serviva solo per il seriale, niente LCD, quindi l'ho ridotto e migliorato!
Tutto quà. Non è molto diverso e l'ho commentato il più possibile!
Alla prossima!
Visualizzazione post con etichetta elettronica. Mostra tutti i post
Visualizzazione post con etichetta elettronica. Mostra tutti i post
lunedì 12 gennaio 2015
venerdì 30 maggio 2014
E' ora di rispolverare il codice!
| Funziona! |
Anche se poi non l'ho fatto... ma la tentazione era forte
NOTA: il codice è stato aggiornato. Se vuoi vedere la versione a cui si riferisce questo post vai quì
Iniziamo ad osservare il codice.
All'inizio, come è solito fare includo le librerie che uso; in questo caso solo la liquid crystal è necessaria.
L'LCD si trova collegato sui pin 7, 8, 9, 10, 11, 12.
Con delle variabili indichiamo i pin dei sensori analogici, con mis indico un numero di cicli dopo il quale aggiorniamo i valori delle letture (così da non aggiornare troppo spesso l'LCD che altrimenti diventa illeggibile)
vrif è una variabile che utilizziamo per indicare il voltaggio di riferimento (1.1 V è perfetto perchè molto preciso). Più avanti vedremo dove è stato impostato il valore esterno.
Se vi chiedete a cosa serve un array di byte, vi consiglio di andarvi a vedere la libreria Liquid Crystal; è molto utile per creare caratteri che non esistono. Un tool online per disegnare questi caratteri su schermi con "quadretti" da 5*7 pixel o 5*8 è su questo sito. Mi è stata molto utile varie volte. (il segno del grado non esiste infatti!)
Vedremo più avanti come stampare un carattere creato da noi sull'LCD.
Passiamo al setup.
Il pin 13, dato che a me dà fastidio tenerlo sempre acceso, lo spengo fin dall'inizio del setup.
Ecco: analogReference(INTERNAL); serve per impostare il tipo di riferimento per il voltaggio analogico interno. Vi sono vari valori che possiamo impostare:
- DEFAULT: viene impostato il valore di base: 5V per le schede arduino a 5V e 3.3 per quelle a 3.3V
- INTERNAL: è una riferimento interna, equivalente a 1.1V sull' ATmega168 o ATmega328 (Arduino UNO e MICRO) and 2.56V sull' ATmega8. Non si può utilizzare questo parametro su un arduino MEGA (ATmega2560 o 1280)
- INTERNAL1V1: riferimento a 1.1V SOLO per il MEGA
- INTERNAL2V56: riferimento a 2.56V SOLO per il MEGA
- EXTERNAL: il voltaggio applicato al pin AREF ( solo da 0 a 5V ) è utilizzato come riferimento.
- Dopo aver cambiato il riferimento i primi valori restituiti da analogRead() potrebbero essere "sporchi"
- Se colleghiamo il pin AREF a un voltaggio di riferimento e poi non impostiamo l'analog reference ( prima di utilizzare analogRead() ) o passiamo per il pin un voltaggio superiore a 5 volt o inferiore a 0 volt, manderemo in corto l'AREF e il riferimento interno attivo, danneggiando irreparabilmente il vostro processore.
Se applichiamo 2.5V all'AREF, 2.5 * 32 / (32 + 5) = ~2.2V che il processore riceverà.
Continuando
A questo punto finiamo la funzione setup stampando alcune cose a schermo in seriale (dopo aver utilizzato Serial.begin(baudrate) ) e sull'LCD (indicando la dimensione, prima delle colonne, 20, e poi delle righe, 4).
Il void loop()
Innanzitutto incrementiamo il contatore delle misurazioni ( mis++ ) e poi aggiungiamo alle attuali letture salvate nelle variabili media1 e media2 i valori conversi in gradi Celsius attraverso l'utilissima funzione readTemp() che accetta come parametro il valore del pin analogico che si vuole analizzare.
Analizziamo quindi la funzione:
il calcolo è semplice: moltiplichiamo 100 per il valore di riferimento e per una lettura analogica del sensore. Il tutto poi è diviso per 1024, il valore massimo + 1 leggibile da un processore dell'UNO (il DUE può dare il doppio della precisione, 2048 - 1 valori. -1 per includere lo 0)
Se abbiamo effettuato 5 letture, dividiamo i valori per 5 per effettuare la media; dopodichè li stampiamo sull'LCD e in Seriale se è collegato.
Non dimentichiamo di resettare mis e le medie dei valori.
Tutto quà, non era neanche troppo lungo :)
Spero che vi sia interessato; non sapete quanto tempo mi ci è voluto per ridocumentare tutto x)
Il codice che lascio quà sopra è utilizzabile da chiunque; basta che non sia per opere commerciali, che per definirlo proprio abbiate apportato modifiche grosse allo sketch e che lo condividiate in rete con gli stessi termini.
Alla prossima con un nuovo progetto!
Etichette:
arduino,
atmega328,
caratteri,
codice,
contrasto,
elettronica,
funzione,
grafica,
leonardo,
LM35,
loop,
luminosità,
mega,
progetto,
seriale,
setup,
Termometro,
uno,
void,
voltaggio
Ubicazione:
14100 Asti AT, Italia
Il termometro "tascabile"
L'estate scorsa avevo in mente un piccolo progetto per una specie di condizionatore, utilizzando una cella di peltier (è una piccola cella che se viene alimentata da una parte diventa bollente e dall'altra freddissima) e un sensore di temperatura della Texas Instruments, molto noto con il nome di LM35.
Il tutto controllato da Arduino (ovviamente)
Quei piccoli sensori, che assomigliano ad un transistor BC337 o B331 di quelli piccoli e neri, sono leggermente costosi e, dato che qua ad Asti c'è un solo negozio che fornisce vari componenti di elettronica (ma non moltissimi) e i prezzi sono leggermente alti, ho tentato di richiedere qualche campione gratuito dalla gentilissima TI che in una settimana dal Nevada ha spedito fin qua 6 LM35...
Vi consiglio di provare a richiedere qualche campione, sono molto gentili e non si fanno molte domande (eccetto se i componenti sono indicati come "ad uso militare"; in quel caso non ve li danno se non avete un'azienda), quindi è un ottimo modo per avere qualche integrato o componente gratis...
Quindi l'output che può dare è da circa 0V fino a 5.
Ne ho utilizzati due per poter avere una misurazione più accurata, ma non è il momento giusto per parlarne.
Vicino ho anche aggiunto uno schermo LCD 20 x 4 per poter avere varie informazioni sulle letture.
Da solo l'LCD si mangia 6 pin digitali, senza contare i cavi aggiuntivi per poterlo alimentare e per regolare correttamente il contrasto e la luminosità. Due pin analogici sono stati usati per leggere il voltaggio del pin centrale dei due LM35.
Nel prossimo post vedremo il programma!
Il tutto controllato da Arduino (ovviamente)
Quei piccoli sensori, che assomigliano ad un transistor BC337 o B331 di quelli piccoli e neri, sono leggermente costosi e, dato che qua ad Asti c'è un solo negozio che fornisce vari componenti di elettronica (ma non moltissimi) e i prezzi sono leggermente alti, ho tentato di richiedere qualche campione gratuito dalla gentilissima TI che in una settimana dal Nevada ha spedito fin qua 6 LM35...
Vi consiglio di provare a richiedere qualche campione, sono molto gentili e non si fanno molte domande (eccetto se i componenti sono indicati come "ad uso militare"; in quel caso non ve li danno se non avete un'azienda), quindi è un ottimo modo per avere qualche integrato o componente gratis...
Iniziamo parlando del sensore
E' piuttosto semplice: ha 3 pin; uno è per l'alimentazione a 5V DC, quello centrale è per l'output analogico che indica la temperatura da circa 5° C fino a 150° (non mi fiderei moltissimo a metterlo in formo però), l'ultimo è da collegare alla terra.Quindi l'output che può dare è da circa 0V fino a 5.
Ne ho utilizzati due per poter avere una misurazione più accurata, ma non è il momento giusto per parlarne.
Vicino ho anche aggiunto uno schermo LCD 20 x 4 per poter avere varie informazioni sulle letture.
Da solo l'LCD si mangia 6 pin digitali, senza contare i cavi aggiuntivi per poterlo alimentare e per regolare correttamente il contrasto e la luminosità. Due pin analogici sono stati usati per leggere il voltaggio del pin centrale dei due LM35.
Nel prossimo post vedremo il programma!
Etichette:
20,
4,
arduino,
Asti,
blog,
contrasto,
elettronica,
Jumper,
lcd,
LM35,
luminosità,
microcontrollore,
pin,
pinouts,
progetto,
Termometro,
Texas Instruments,
voltaggio
Iniziamo!
Oggi sono andato finalmente ap rendere Mario Kart 8 dal Gamestop...
Che divertimento! Il gioco fin da subito si presenta veloce e molto bello, anche graficamente
Non sono quì però per parlare di Nintendo (o forse sì?) ma per inziare un nuovo blog che cercherò di aggiornare il più possibile per tenere aggiornato chi si interessa di elettronica, Arduino, stampanti 3D, giochi, su quello che sto facendo e sui miei progetti o di quelli con su cui sto lavorando insieme degli amici.
Presto le prime informazioni su qualche progettino che avevo fatto un po' di tempo fa, per iniziare!
Che divertimento! Il gioco fin da subito si presenta veloce e molto bello, anche graficamente
Non sono quì però per parlare di Nintendo (o forse sì?) ma per inziare un nuovo blog che cercherò di aggiornare il più possibile per tenere aggiornato chi si interessa di elettronica, Arduino, stampanti 3D, giochi, su quello che sto facendo e sui miei progetti o di quelli con su cui sto lavorando insieme degli amici.
Presto le prime informazioni su qualche progettino che avevo fatto un po' di tempo fa, per iniziare!
Iscriviti a:
Post (Atom)