Matrice di led con HT1632C (6)

by luca
4 comments

Alcuni utenti mi hanno scritto chiedendomi esempi “reali” di utilizzo del display… in questo articolo vi mostrerò uno sketch per realizzare un termometro.

Il sensore

Per ottenere la temperatura ambiente, ho scelto di utilizzare il sensore DS18B20 di Maxim Integrated.

Il collegamento con Arduino è molto semplice: il sensore ha 3 pin (VDD, GND e DQ); ho scelto di collegare DQ al pin 2:

Il sensore DS18B20 supporta due modalità di alimentazione:

  • tramite il pin VDD
  • parassita, tramite il pin DQ (in questo caso il pin VDD va collegato a massa)

In entrambi i casi, il pin DQ richiede una resistenza di pull-up da 4.7Kohm.

La liberia

Miles Burton ha sviluppato una comoda libreria per dialogare con il sensore di Maxim… il suo utilizzo è molto semplice:

– includiamo nello sketch le due librerie  OneWire e DallasTemperature:

#include <OneWire.h>
#include <DallasTemperature.h>

– inizializziamo la libreria indicando il pin a cui è collegato il sensore:

#define ONE_WIRE_BUS  2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&amp;oneWire);

– leggiamo il valore (float) della temperatura (avendo un solo sensore collegato, questo avrà indice 0):

sensors.requestTemperatures();
float float_temp = sensors.getTempCByIndex(0);

Il display

Per visualizzare ilvalore letto sul display, utilizziamo la funzione sprintf per creare il testo completo:

sprintf(display_string, "Temperature: %s", string_temp);

Unico piccolo problema è che sprintf non supporta i tipi di dati float; dobbiamo quindi convertire prima tale valore in formato stringa.

Demo

Lo sketch è disponibile su Github, eccolo in azione:

[youtube id=”CweI_vBFeGo” width=”600″ height=”350″]

Related Posts

4 comments

Robert 25 settembre 2013 - 02:23

How would I display scrolling text while the text itself is changing?

For example, let’s say I want a clock with seconds. How would the transition from, say, 8:39:59 to 8:40:00 work?

Reply
Robert 25 settembre 2013 - 02:28

As for your thermometer example: I see the sign shows the temperature in hundredths of a degree — but by the time the sign scrolls around to show the numbers, won’t they already be wrong?

Reply
Thongchai 14 agosto 2014 - 06:49

Hi
If I want to add the date to the code here?

Reply
kevin 13 novembre 2015 - 15:39

Hi Luca,

I have problem, if the temperature is 20c, and i only want the led to light up when temperature reach 22c, how could I change it?

Reply

Rispondi a Thongchai Cancel Reply

quattro × 2 =