Matrice di led con HT1632C (6)

luca 18 febbraio 2013 2

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:

2 Comments »

  1. Robert 25 settembre 2013 at 02:23 - Reply

    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?

  2. Robert 25 settembre 2013 at 02:28 - Reply

    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?

Leave A Response »