La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Prof.ri Ponte Vincenzo Ovazza Sergio

Presentazioni simili


Presentazione sul tema: "Prof.ri Ponte Vincenzo Ovazza Sergio"— Transcript della presentazione:

1 Prof.ri Ponte Vincenzo Ovazza Sergio
DISPLAY e TELECOMANDI Prof.ri Ponte Vincenzo Ovazza Sergio MAKER-INO Lezione 6°

2 DHT11 sensore umidità e temperatura 2° Parte: visualizziamo i dati su LCD
Attenzione ai PIN del modulo sensore:

3 Visualizzazione dati su monitor
#include <dht11.h> // dalla libreria dht-sensor-library-master dht11 sensore; // sensore è la variabile da utilizzare con la libreria #define sens_pin 4 //sensore collegato al pin 4 int chk;//memorizza valori temperatura e umidità void setup() { //gestione del monitor Serial.begin(9600); Serial.println("DHT TEST PROGRAM "); Serial.println(); Serial.println("Humidity (%),Temperature (C)"); }

4 Visualizzazione dati su monitor
void loop() { chk=sensore.read(4);//leggo i dati,al posto del 4 si può // mettere sens_pin Serial.print(sensore.humidity,1);//,1 indica senza decimali Serial.print(" \t"); Serial.print(sensore.temperature,1); Serial.println(); delay(5000);// attendo 5 secondi }

5 LE LIBRERIE La compilazione dello sketch può generare errori dovuti alla assenza o directory della procedura richiamata: #include <dht11.h> Come procedere: 1) Se la libreria è installata assicurarsi che al suo interno sia presente il file in questione (a volte è scritto in MAIUSCOLO)

6 LE LIBRERIE: installazione
2) Ricercare il file specifico con un motore di ricerca e quindi individuare il link del download della libreria zippata e scaricarla. Da Sketch di Arduino #include libreria Aggiungi libreria da file.zip, selezionare la cartella compressa – OK

7 Display LCD 16x2 Libreria:

8 La piedinatura

9 La libreria LiquidCrystal.h
Contiene le istruzioni principali che consentono di gestire un display LCD. Di seguito analizziamo in dettaglio le principali: LiquidCrystal() È la funzione che attiva la libreria e che crea l'oggetto che ci servirà per comunicare con il display LCD.

10 La libreria LiquidCrystal.h
LiquidCrystal lcd(7,8,9,10,11,12) In questo caso l'oggetto si chiama Icd, ma potrebbe anche avere un nome diverso. La funzione definisce anche quali piedini utilizziamo per comunicare con la scheda Arduino (in questo caso i piedini da 7 a 12). Deve essere sempre scritta per prima e successivamente a questa istruzione faremo sempre riferimento per le altre istruzioni all'oggetto creato (in questo caso Icd).

11 La libreria LiquidCrystal.h
lcd.begin(16,2) ; Questa funzione definisce le colonne e le righe utilizzate nel display, in questo caso 16 colonne e 2 righe. lcd.clear(); Questa funzione "pulisce" lo schermo del display dai caratteri scritti in precedenza lcd.setCursor(2,5); Questa funzione posiziona il cursore nel punto voluto del display. Tra parentesi indichiamo prima la colonna e poi la riga.

12 La libreria LiquidCrystal.h
Icd.print("Hello World!"); È la funzione che scrive il testo indicato tra parentesi, il dato può essere int, float,char oppure anche stringa. lcd.write(48); Scrive sul display il carattere associato a un certo codice esadecimale indicato tra parentesi.

13 La libreria LiquidCrystal.h
Icd.home( ); Questa funzione posiziona il cursore nella casella in alto a sinistra. Cursor(“Hello” ) e noCursor(“World!”) cursor( ) mostra il carattere sottolineato nella casella in cui verrà scritto il prossimo carattere, mentre noCursor ( ) nasconde il cursore. lcd.blink( ) e lcd.noBlink( ) usati prima del print attiva il lampeggiamento del testo, mentre noBlink( ) riporta il testo alla normalità.

14 DHT11 2° Parte: visualizziamo i dati anche su LCD
#include <dht11.h> // dalla libreria dht-sensor-library-master #include <LiquidCrystal.h> // libreria LCD dht11 sensore; // sensore è la variabile da utilizzare con la libreria #define sens_pin 8 //sensore collegato al pin 8 int chk; //memorizza valori temperatura e umidità LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // connessione display (pin) /* pin 12 RS register select: High=dati, Low=istruzioni pin 11 Abilita (High) o disabilita (Low) l’ingresso di un byte pin 5 data bus - bit 4 pin 4 data bus - bit 5 pin 3 data bus - bit 6 pin 2 data bus - bit 7 */ int chk; //memorizza valori temp e umid.

15 DHT11 2° Parte: visualizziamo i dati anche su LCD
void setup() { Serial.begin(9600); Serial.println("DHT TEST PROGRAM "); Serial.println(); Serial.println("Humidity (%),Temperature (C)"); lcd.begin(16, 2); // imposto il tipo di display (colonne,righe) lcd.print("Temperatura"); lcd.setCursor(0,1); lcd.print("Umidita'"); }

16 DHT11 2° Parte: visualizziamo i dati anche su LCD
void loop() { chk=sensore.read(8); //leggo i dati,al posto del 4 si può mettere sens_pin Serial.print(sensore.humidity,1); //,1 indica senza decimali Serial.print(" \t"); Serial.print(sensore.temperature,1); Serial.println(); int t = sensore.temperature; // memorizzo in t la temperatura int h = sensore.humidity; //memorizzo in h umidità lcd.setCursor(14, 0); // posiziono il cursore lcd.print(t); lcd.setCursor(14, 1); lcd.print(h); delay(500); }

17 REALIZZAZIONE PRATICA
Come si presenta il montaggio senza DHT11:

18 Telecomando: RX e TX infrarossi
II ricevitore ad infrarossi è un circuito integrato che riceve i segnali dei telecomandi. Ce ne sono di vari modelli, ma fondamentalmente si differenziano per la frequenza di trasmissione dei dati. Analizziamo due ricevitori disponibili :

19 Telecomando: RX e TX infrarossi
8220-IR38DM Alimentazione: 4,5-5,5V Freq. di ricezione: 38kHz Lunghezza d'onda: 940nm Distanza massima: 10m 7300-TSOP34156 Alimentazione: 2,7-5,5V Freq. di ricezione: 56kHz Distanza massima: 35m

20 Telecomando: RX e TX infrarossi
II dato più importante è la frequenza di ricezione. Se avete un telecomando che non si accoppia in frequenza con il ricevitore possono succedere due cose: 1)il dato che viene ricevuto non ha senso, per cui vi accorgete che c'è un errore; 2) peggio arriva un dato che cambia nel tempo,anche se voi avete premuto sempre lo stesso tasto del telecomando.

21 I RICEVITORI I ricevitori infrarossi hanno 3 pin di cui 2 usati per l'alimentazione e il terzo per i dati ricevuti.

22 Identificare il codice tasti telecomando
La libreria IRremote consente sia la trasmissione che la ricezione. #include <IRremote.h> // usa la library int ricev = 11; // ricevitore to Arduino pin 11 IRrecv Iricev(ricev); // crea un oggetto ricevente Iricev decode_results risultato; void setup() { Serial.begin(9600); // for serial monitor output Iricev.enableIRIn(); // Start the receiver }

23 Identificare il codice tasti telecomando
void loop() { if (Iricev.decode(&risult)) // have we received an IR signal? Serial.println(risult.value, HEX); // visualizza in esadecimale Iricev.resume();// riceve valore successivo }

24 Esempio: accendere e spegnere led
#include <IRremote.h> // usa la library int ricev = 11; // ricevitore to Arduino pin 11 IRrecv Iricev(ricev); // crea un oggetto ricevente Iricev decode_results risultato; void setup() { irrecv.enableIRIn(); // Start the receiver pinMode(9, OUTPUT); // Pin 9 output led rosso pinMode(8, OUTPUT); // Pin 8 output led verde }

25 Esempio: accendere e spegnere led
void loop() { if (irrecv.decode(&results)) // have we received an IR signal? Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal irrecv.resume();// receive the next value } if ( results.value == 0xFF30CF) //codice tasto 1 sul telecomando aggiungere 0x digitalWrite(9, HIGH); // set the LED on if ( results.value == 0xFF18E7) //tasto 2 sul telecomando digitalWrite(8, HIGH); // set the LED on if ( results.value == 0xFF6897){ //tasto 0 sul telecomando digitalWrite(8, LOW); // set the LED 0ff digitalWrite(9, LOW); // set the LED 0ff

26 Esempio: variare velocità del motorino con vol- e vol+
#include <IRremote.h> // use thè library int receiver = 11; // pin 11 of IR receiver IRrecv irrecv(receiver); // create instance of 'irrecv' decode_results results; int Mot=6; // velocità motorino int i=0;//variabile per accelerare

27 Esempio: variare velocità del motorino con vol- e vol+
void setup() { Serial.begin(9600); // for serial monitor output irrecv.enableIRIn(); // Start the receiver pinMode (6, OUTPUT);// Pin collegamento //positivo motorino analogWrite(Mot, i); }

28 Esempio: variare velocità del motorino con vol- e vol+
void loop() { if (irrecv.decode(&results)) // have we received an IR //signal? Serial.println(results.value, HEX); // display it on serial //monitor in hexadecimal Serial.println(i); irrecv.resume();// receive the next value }

29 Aumentiamo velocità con Vol+
if ( results.value == 0xFDD827) // + vol { delay (30); i=i+10; Serial.println(i); analogWrite(Mot, i); if (i>=255) {i=245;} }

30 Diminuire velocità con Vol-
if ( results.value == 0xFD5AA5) // - vol { delay (30); i=i-10; Serial.println(i); analogWrite(Mot, i); if (i<=0) {i=10;} }

31 Esercizi proposti 1)Progetto serra con sensore DHT11
2)Visualizzare messaggi su Display 3)Temperatura e umidità su Display 4)Individuare codici tasti su telecomando ed accendere LED Buon Lavoro Prof.ri Ponte Vincenzo e Ovazza Sergio


Scaricare ppt "Prof.ri Ponte Vincenzo Ovazza Sergio"

Presentazioni simili


Annunci Google