|  |   ultimo aggiornamento 27 maggio 2013 |  | 
Per utilizzare il sensore Sensirion SHT11 
(per le caratteristiche vedere questa pagina)  
con la scheda Arduino occorre seguire 
gli schemi sotto riportati.
Sono disponibili schemi di collegamento e programmi per mostrare i dati misurati 
sia nella finestra de monitor seriale per cui con la scheda Arduino connessa al 
PC, oppure mostrati su un display LCD con la scheda Arduino e sensore autonomi.   
Le versioni dei programmi sono realizzati sia per la versione dell'IDE versione 
0023 che per la 1.0.X.
1) Visualizzazione su monitor seriale, versione IDE 1.0.X - scheda Arduino 
UNO
2) 
Visualizzazione su display LCD versione IDE 1.0.X - scheda Arduino UNO 
3) Visualizzazione su monitor seriale, versione IDE 0023 - scheda Arduino NANO
2) Visualizzazione su display LCD seriale versione IDE 0023 - scheda Arduino 
NANO
Libreria per lettura sensore
I programmi utilizzano per semplificare la lettura del sensore la libreria che può essere scaricata all'indirizzo https://github.com/practicalarduino/SHT1x scritta da Jonathan Oxer
Libreria per il sensore SHT1x temperatura/umidità per Arduino scritta daJ onathan Oxer e Maurice Ribble
		
		
		La libreria fornisce una semplice interfaccia per i sensori di 
temperatura / umidità prodotti dalla Sensirio serie SHT1x (SHT10, SHT11, SHT15) 
e serie SHT7x (SHT71, SHT75).
Questi sensori utilizzano un bus di comunicazioni "2-wire" che è simile a I2C e 
		possono coesistere sullo stesso cavo fisico come dispositivi I2C.
		
		
		Installazione
		
		
		Scaricare la directory "SHT1x" e spostarlo nella cartella "librerie" 
		dentro la directory di lavoro del programma, quindi riavviare l'IDE di 
		Arduino. 
		La libreria si vedrà, quindi, sotto l'elenco File-> Esempi-> SHT1x.
		
		
		Utilizzo
		
		
		La libreria viene utilizzata come un oggetto con comandi per 
		leggere umidità relativa e temperatura. Occorre 
		Includerla nel vostro 
		sketch e quindi creare un oggetto, specificando i pin da 
		utilizzare per la comunicazione con il sensore:
#include <SHT1x.h>
#define dataPin  10
#define clockPin 11
SHT1x sht1x(dataPin, clockPin);
		
		
		È quindi possibile richiamare i comandi  all'interno del 
		programma. Nell'esempio 
		è stato creato un oggetto chiamato "SHT1x", ma avrebbe 
		potuto essere chiamato anche in altri modi. 
		Un programma completo di esempio è incluso con la biblioteca e si può accedere 
		da File-> Esempi-> Menu SHT1x.
		
		
		readTemperatureC ()
		
		
		Restituisce un valore float all'interno del campo valido del sensore di 
		-40 a 123,8 C. 
		Un valore di -40 viene restituito in caso di errore di comunicazione con il 
		sensore.
		
		Esempio: 
float temp_c = sht1x.readTemperatureC();
		
		readTemperatureF ()
		
		
		Restituisce un valore float all'interno del campo valido del sensore di 
		-40 a 254,9 F. 
		Un valore di -40 viene restituito in caso di errore di comunicazione con il 
		sensore.
		
		Esempio:
float temp_f = sht1x.readTemperatureF();
		
		readHumidity ()
		
		
		Restituisce un 
		
		valore float
		all'interno del campo valido del sensore da 
		0 a 100%. 
		Un valore negativo viene restituito in caso di errore di comunicazione con il 
		sensore.
		
		Esempio:
float humidity = sht1x.readHumidity();
| Programma di test con lettura 
					dei dati tramite monitor seriale, verificare che la velocità 
					della posta sia settata a 38400 baud, la versione del 
					programma è per la versione dell'IDE 1.0.4, necessita della 
					nuova versione di libreria scaricabile da 
 https://github.com/practicalarduino/SHT1x 
					 | 

|  |  | 
Listato del programma
| #include <SHT1x.h> // Specifica i pin a cui è collegato il sensore #define dataPin 10 #define clockPin 11 SHT1x sht1x(dataPin, clockPin); void setup() { Serial.begin(38400); // Apertura della connessione seriale per la trasmisione dei dati Serial.println("Avvio della misura...."); delay (1000); } void loop() { // Lettura dei valori dal sensore float temp_c = sht1x.readTemperatureC(); float humidity = sht1x.readHumidity(); // Scrive i valori sul monitor seriale Serial.print("Temperatura: "); Serial.print(temp_c,1); Serial.print(" C / "); Serial.print("Umidita': "); Serial.print(humidity, 1); Serial.println("%"); delay(2000); //Intervallo di misura | 
	
		
					
					Programma di test con lettura 
					dei dati tramite LCD, il display è connesso utilizzando una 
mini scheda, la ci descrizione è presente in 
questa 
pagina.
 

| Collegamento LCD con scheda Arduino | |||
| Funzione LCD | Pin mini shield | Pin Arduino | Colore | 
| VDD | +5V | pin +5V | Rosso | 
| RS (Register Selec) | RS | digitale 12 | Verde | 
| EN (Enable) | EN | digitale 11 | Arancio | 
| Data Bus line 4 | D4 | pin digitale 5 | Giallo | 
| Data Bus line 5 | D5 | pin digitale 4 | Ciano | 
| Data Bus line 6 | D6 | pin digitale 3 | Viola | 
| Data Bus line 7 | D7 | pin digitale 2 | Blu | 
| GND-VSS | GND | pin GND | Nero | 
| Collegamento sensore con scheda Arduino | |||
| Funzione sensore | Pin sensore | Pin Arduino | Colore | 
| VDD | 8 | pin +5V | Rosso | 
| Data | 1 | pin digitale 9 | Rosa | 
| Clok | 3 | pin digitale 10 | Verde chiaro | 
| VSS | 4 | pin GND | Nero | 

Listato del programma
| #include <SHT1x.h> //Libreria lettura sensore #include <LiquidCrystal.h> //Libreria LCD // Inizializza la libreria con i numeri dei pin d'interfaccia LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Specifica i pin a cui è collegato il sensore #define dataPin 9 #define clockPin 10 SHT1x sht1x(dataPin, clockPin); void setup() { lcd.begin(16, 2); //Imposta il numero di righe e colonne del LCD delay (1000); } void loop() { // Lettura dei valori dal sensore float temp_c = sht1x.readTemperatureC(); float humidity = sht1x.readHumidity(); temp_c = temp_c-3; // Scrive i valori sul monitor seriale lcd.setCursor(0, 0); lcd.print("Temp. :"); lcd.print(temp_c,1); lcd.print(" C "); lcd.setCursor(0, 1); lcd.print("Umidita':"); lcd.print(humidity, 1); lcd.print(" %"); delay(2000); //Intervallo di misura } | 
Programma di test versione IDE 0023 - Versione con lettura tramite monitor porta seriale PC
Versione del programma, i dati letti dalla 
 
scheda Arduino, in questo caso si è utilizzato un 
Arduino Nano V 3.0 
prodotto dalla  
GRAVITECH, che 
è montato su una piccola breadboard
I valori letti sono mostrati nella finestra del monitor della porta seriale
| Programma di test con lettura dei dati 
			tramite monitor seriale, verificare che la velocità della posta sia 
			settata a 38400 baud, la versione del programma è per la versione 
			dell'IDE sino alla 0023. 
 | 
Listato del programma
| #include <SHT1x.h> // Specify data and clock connections and instantiate SHT1x object #define dataPin 10 #define clockPin 11 SHT1x sht1x(dataPin, clockPin); void setup() { Serial.begin(38400); // Open serial connection to report values to host Serial.println("Starting up"); } void loop() { float temp_c; float temp_f; float humidity; // Read values from the sensor temp_c = sht1x.readTemperatureC(); humidity = sht1x.readHumidity(); // Print the values to the serial port Serial.print("Temperatura: "); Serial.print(temp_c, 1); Serial.print("C / "); Serial.print("Umidita': "); Serial.print(humidity,1); Serial.println("%"); delay(2000); } | 
Programma di test versione IDE 0023 Lettura mostrata su display LCD connesso in seriale alla scheda Arduino
| Versione del programma, i cui dati letti dalla scheda Arduino Nano sono mostrati tramite un display LCD 16x2 connesso in seriale alla scheda Arduino 
 |  Scarica programma | 
|  |  | 
| 
 | 
 | ||||||||||||||||||||||||||||||||||||||||||||
Listato del programma
| #include <SHT1x.h> // Inclusione della libreria SoftwareSerial in // modo da poter utilizzare le sue funzioni: #include <SoftwareSerial.h> #define rxPin 3 #define txPin 4 // Imposta una nuova porta seriale SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin); byte pinState = 0; // Specfica pin per data e clock connessi al senosre SHT1x #define dataPin 10 #define clockPin 11 SHT1x sht1x(dataPin, clockPin); void setup() { pinMode(rxPin, INPUT); // definisce i pin per tx, rx: pinMode(txPin, OUTPUT); // imposta la velocità della porta mySerial.begin(9600); } // Resetta il display, annullando qualsiasi scorrimento // e la rimozione di tutto il testo void clearLCD(){ mySerial.print(0xFE, BYTE); //command flag mySerial.print(0x01, BYTE); //Comando clear // delay(50); } // Avvia il cursore all'inizio della prima linea void firstrow(){ mySerial.print(0xFE, BYTE); mySerial.print(128, BYTE); delay(2); } // Avvia il cursore all'inizio della seconda linea void secndtrow(){ mySerial.print(0xFE, BYTE); mySerial.print(128+64, BYTE); delay(2); } void loop() { float temp_c; float humidity; // Lettura valori dal sensore temp_c = sht1x.readTemperatureC(); humidity = sht1x.readHumidity(); // Scrittura valori letti su LCD clearLCD(); firstrow(); mySerial.print("Temperatura:"); mySerial.print(temp_c,DEC); delay(500); secndtrow(); mySerial.print("Umidita' :"); mySerial.print(humidity,DEC); delay(1000); } | 
| Elenco revisioni | |
| 27/05/2013 | Aggiornato pagina, inserito programmi per versione IDE 1.x.x | 
| 06/01/2013 | Aggiornato pagina | 
| 27/08/2011 | Emissione preliminare |