Grazie per i complimenti. Per aiutarci a crescere e migliorare, pubblicando i video sempre più interessanti, puoi diventare anche tu un nostro Patreon.
Grazie mille! Tutorial chiaro, conciso e molto professionale. Mi è stato molto di aiuto dato che sono alle prime armi. Sicuramente mi diletterò con altri tutorial altrettanto interessanti!
Seguo il tuo canale molto volentieri perchè spieghi molto facilmente da capire, l'uinca cosa ho fatto un cambio sul tuo sketch per farlo leggere sul mio display LiquidCrystal_I2C lcd(0x3f, 16, 2);
Prova ad eseguire lo sketch i2cdetect (nella 12° puntata del tutorial trovi maggiori dettagli www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c ) per verificare quale sia l'indirizzo I²C dell'interfaccia. Inoltre controlla che i cavetti SDA e SCL non siano invertiti.
Ottimo lavoro. Personalmente la stampa dei messaggi fissi li metterei nella setup ("Temp.:", "Umid" e relativi postfissi), quelli variabili ovviamente nella loop. Inoltre aggiungerei un delay di almeno 1s
Buonasera, io ho eseguito tutti i passaggi collegando anche l'interfaccia I2C ma quando metto in carica lo sketch mi esce scritto "LiquidCrystal_I2C. h: No such file or director"
Verifica che nell'IDE di Arduino la libreria sia installata. Nel nostro video www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c trovi maggiori dettagli.
ciao scusami. ti inoltro il mio messaggio d'errore. aiutami per favore! Arduino:1.8.9 (Windows Store 1.8.21.0) (Windows 10), Scheda:"Arduino/Genuino Uno" C:\Users\vzavatta\AppData\Local\Temp\Temp1_materiale_sensore_dht11.zip\dht11\dht11.ino: In function 'void setup()': dht11:11:7: error: 'class LiquidCrystal_I2C' has no member named 'init' lcd.init(); ^ exit status 1 'class LiquidCrystal_I2C' has no member named 'init'
L'errore dipende dalla versione della libreria LiquidCrystal_I2C. In alcuni casi al posto di init() viene utilizzato begin(). Prova a sostituire il nome del metodo.
Ciao, percaso è possibile collegare un relè che raggiungendo un determinato valore (temperatura umidità) parte. ed in tal caso la programmazione da seguire... grazie
Comandare un relè, dal punto di vista della programmazione, non è diverso dall'accensione del LED. Per cui è sufficiente inserire una condizione (IF), e quando si verifica un certa condizione, mandare un segnale HIGH o LOW per accendere o spegnere il relè.
Ciao, a me da errore nella riga "LiquidCrystal lcd(0×27, 16, 2);", e mi dice "no matching function for call to 'LiquidCrystal::LiquidCrystal(int, int, int)' . Non ho utilizzato l' interfaccia L2c. Come posso risolvere?
Per inizializzare il display senza interfaccia I2C devi usare l'istruzione LiquidCrystal lcd(12, 11, 5, 4, 3, 2); Trovi maggiori informazioni nel video tutorial dedicato al display LCD ( www.italiantechproject.it/arduino/10-usare-display-lcd ).
Ciao. Ho svolto tutti i passaggi ma il display rimane vuoto, solo retroilluminato. L'indirizzo I2C è 27. Ho regolato anche la luminosità e controllato i collegamenti. Tutto ok. Dove potrebbe essere il problema?
Usando lo sketch i2c_detect l'indirizzo I2C viene rilevato? Prova a eseguire l'esempio del video www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c per vedere se il display senza altri componenti collegati funziona correttamente. Hai già provato a regolare il contrasto ruotando il trimmer integrato sull'interfaccia I2C?
Puoi creare una variabile che specifica il sensore da leggere e modificarla tramite dei pulsanti. Successivamente usi questa variabile per decidere quale sensore leggere.
Ciao, potresti dirmi come collegare il dht11 senza il modulo integrato? ho seguito i tuoi step ma non funziona. Il dht11 mi serve a distanza quindi ho usato dei cavi per connettere il sensore alla breadboard ma ho la necessità di riportare tutto su questa perchè non ho più spazio su Arduino (per GND E 5V). Grazie mille per la disponibilità. (Arduino/Genuino Uno, DHT sensor library)
Nel video, dal minuto 1:42 in avanti, viene illustrata la differenza di utilizzo del sensore DHT11 senza il modulo integrato. In pratica uno dei 4 pin non viene utilizzato e il pin del segnale deve essere collegato alla tensione positiva attraverso un resistore da 10kohm.
ciao sapresti dirmi perché il display mi mostra 0 gradi e 0 % di umidita è il mio display nonostante io inserisca 240 di luminosità ha la luminosità molto bassa, grazie!
Verifica che tutti i collegamenti siano corretti e ben fissi. Per aumentare la luminosità, puoi utilizzare un ponticello a 2 pin per collegare i due pin dell'interfaccia al posto del collegamento al pin PWM.
Buoinasera. Ho eseguito lo Sketch di questa lezione ma sul display mi appare sempre il primo carattere di ogni riga (la T di temperatura e la U di umidità). Ho riguardato come consigliato le lezioni 10 e 12 per verificare l'indirizzo dell'interfaccia ma non cambia nulla (una volta era "3f" e un'altra volta "27") ma non ottengo nulla di diverso. Può darmi un suo parere? La ringrazio per una sua cortese risposta.
Occorre installare la libreria LiquidCrystal_I2C. Trovi maggiori informazioni nella 12° puntata del tutorial su questo canale ( www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c ).
io ho un problema. Siccome volevo solo usare il sensore e non lo schermo, ho fatto via serial, però mi da in output solo 0. Ho controllato però mi sembra di aver messo i cavi giusti e ho scritto tutto giusto. Ho anche provato con librerie più vecchie ma niente. Cosa posso fare?
ciao a me fuziona lo schermo e tutto il resto però mi segna zero gradi, magari potrebbe essere rotto il dht? e dopo un po comincia a fare segni dtrani dullo schermo
@@TechMaker anche a me sta facendo la stessa cosa e sto usando lo sketch fatto da te.. non capisco quale sia il problema,l'alimentazione ce ed arriva anche al sensore.. fammi sapere il prima possibile ti prego
sulla scheda di arduino ci sono due pin specifici per SDA e SCL, perché tu usi gli analogici 4 e 5?? ma si potrebbero usare quelli in teoria o servono per tutt'altro?
I due pin SDA e SCL, aggiunti nella revisione 3 della scheda di Arduino UNO, sono collegati direttamente con i pin A4 e A5, quindi è indifferente usare i nuovi pin oppure quelli analogici. In ogni caso i pin A4 e A5 non possono essere usati per altri scopi se si usa il protocollo I²C.
Prova a resettare la scheda attraverso il pulsante integrato e verificare che tutti i collegamenti siano ben fissi. Se il problema persiste prova anche a stampare la temperatura e l'umidità sul monitor seriale per sapere se i dati non vengono letti dal sensore o non siano inviati correttamente al display.
Perchè a me compaiono dei p greca sullo schermo? comunque non ho usato l interfaccia , ho preso il circuito che già avevo fatto come nel video 10 , ho aggiunto il lettore di umidità e temperatura e ho dovuto cambiare i pin digitali
Si, il codice deve essere leggermente modificato. Al posto della libreria LiquidCrystal_I2C va usata LiquidCrystal, e di conseguenza cambia anche l'inizializzazione dell'oggetto "lcd".
ciao, volevo sapere come hai fatto a convertire il simbolo dei gradi in esadecimale? Io vorrei scrivere la "à" accentata ma purtroppo non riesco a convertirla in esadecimale. Mi potresti dare una mano? Grazie in anticipo.
I caratteri utilizzabili con il codice esadecimale dipendono da quali caratteri sono memorizzati all'interno del display. Cercando tra le immagini su google "display lcd ascii" trovi le tabelle dei caratteri più comunemente usate, ma possono variare da display a display. Per disegnare i caratteri non presenti all'interno del display si possono creare manualmente con createChar() www.arduino.cc/en/Reference/LiquidCrystalCreateChar
Nel display a volte la temperatura scende a -10 gradi altre volte 0 o 11 gradi. Quale potrebbe essere il problema ? #include #include #define LED_PIN 3 DHT dht(1, DHT11); LiquidCrystal lcd (12, 11, 5, 4, 3, 2); void setup(){ lcd.begin (16, 2); } void loop(){ delay(1000); int t = dht.readTemperature(); int h = dht.readHumidity(); lcd.clear(); lcd.setCursor(0,0); lcd.print("Temp.: " + String(t) + char(0xDF) + "C"); lcd.setCursor(0,1); lcd.print("Umid.: " + String(h) + "%"); } ho usato il seguente codice dato che non dispongo del modulo I2C i collegamenti li ho revisionati ma pare che non ci sia nulla che non va.
Se possibile, dovresti usare un pin diverso da 1, per il sensore DHT11. I pin 1 e 0 sono condivisi con la porta USB, quindi si possono creare conflitti quando vengono usati contemporaneamente sia la porta USB che i pin digitali 1 e 0.
Complimenti per la chiarezza. Sono riuscito, senza conoscenze particolari, unendo la lezione 10 a questa a far funzionare il tutto con schermo senza modulo Ic2. Mi chiedevo se è possibile avere la temperatura con un decimale, invece che col numero intero.
ottima spiegazione . ho seguito tutte i passaggi . scaricato lo schetc e quando lo carico su arduino mi compare la scritta :exit status errore durante la compilazione per la scheda arduino / genuino. cosa puo essere?
Per avere dei messaggi di errore più esaustivi, prova andare su File -> Impostazioni e cambiare la voce "Warning del compilatore" selezionando "Tutti". L'errore si verifica con tutti gli sketch o solo con quello relativo a DHT11? Inoltre hai installato tutte le librerie usate nello sketch?
Ciao, vorrei chiedere se ci sono specifiche versioni di questi pezzi per fare questo progetto Per esempio se devo prendere una breadboard con più punti
Il numero di punti sulla breadboard dipende da quanti collegamenti si vogliono fare. Con pochi collegamenti è sufficiente anche una breadboard piccola.
Ciao grazie dei video ipoteticamente è possibile collegare sullo stesso Arduino 2 display i2c dello stesso tipo? o gli indirizzi I2C andrebbero in conflitto?
Si può collegare più di un display I2C ad una scheda Arduino, però ogni interfaccia I2C del display deve avere un indirizzo diverso. È possibile modificare l'indirizzo I2C dell'interfaccia unendo i connettori contrassegnati con le sigle A0, A1 e A2.
Controlla che tutti i collegamenti siano ben fissi. Inoltre, prova a stampare i valori del sensore sul monitor seriale per escludere errori nella comunicazione con il display.
@@TechMakerHo ricontrollato i collegamenti e sono tutti giuti e ben saldi. Ho rimosso il display però il problema persiste! Come posso fare? Soluzioni? Grazie!
Controlla che i pin non siano invertiti. Se usi la stessa libreria usata nel video, controlla anche che la costante nello sketch sia DHT11 e non DHT22.
La direttiva #define crea una costante, mentre con la sintassi "int variabile = valore;" viene creata una variabile. La differenza principale è che la costante non può cambiare il suo valore una volta definita, mentre con una variabile è possibile cambiare successivamente il suo valore.
ciao -veramente interessante - ero molto incuriosito da arduino e ho da poco acquistato un leonardo - sino ad ora ho realizzato piccoli progetti con i pic della microchip - una volta testato il programma trasferivo il pic su in circuito - domanda magari banale ma qui come si fa a trasferire il programma su un circuito dedicato, devo acquistare ogni volta un leonardo ?
Per trasferire il programma su un circuito integrato puoi usare dei microcontrollori come per esempio ATtiny o ATmega. In uno dei nostri video tutorial puoi vedere un esempio ( www.italiantechproject.it/arduino/come-programmare-il-microcontrollore-attiny85-usando-la-scheda-di-arduino ).
Ciao, mi puoi confermare per cortesia se questi codici sono scritti correttamente ? I codici dei ricevitori sono commentati perché per il momento non devo utilizzarli. Arduino 1 (con Display I2C 16x2, Sensore SHT31 e Ricevitore RCRX3-434): #include #include #include //#include #define RECEIVER_DATA_PIN 2 Adafruit_SHT31 sht31 = Adafruit_SHT31(); LiquidCrystal_I2C lcd(0x27, 16, 2); //RCSwitch mySwitch = RCSwitch(); void setup() { lcd.begin(16, 2); lcd.print("Temp: "); lcd.setCursor(0, 1); lcd.print("Humidity: ");
@@TechMaker Ti ringrazio molto gentile, scusami riguardo i collegamenti, l'Arduino UNO ha solo un pin SCL e un pin SDA, se non si utilizza una breadboard quando si collega un display LCD I2C 16x2 e un sensore SHT35 i cavi dei due dispositivi andranno entrambi ai pin SDA (A4) e SCL (A5), avendo gli stessi pin in comune (display e sensore) bisogna spellare i due fili e unirli ?
Ciao. Per me che sono novellino, è stato un piacere realizzare questo piccolo progetto. Ti chiedo: è possibile aggiungere il decimale sulla temperatura? Riusciresti a darmi le righe che eventualmente vanno aggiunte nello sketch?
@@TechMaker Grazie 1000 ... in effetti - in attesa di una tua cortese risposta - ho trovato questa info su un blog e ho provato a sostituire il comando int con float e funziona. Una domanda: può aver senso usare double anziché float? sai dirmi che differenza c'è tra i due ai fini pratici della misurazione? Ciao e grazie
Normalmente la variabile "double" occupa più memoria rispetto alla variabile "float", permettendo di memorizzare più cifre di un numero. Considerando però la precisione del sensore DHT11/DHT22 la variabile float è più che sufficiente. Inoltre su molte schede di Arduino, la variabile "double" occupa lo stesso spazio di "float" che la rende praticamente equivalente.
Prova a seguire le istruzioni del video www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c per vedere se il display da solo funziona correttamente.
L'indirizzo I2C lo puoi trovare per esempio tramite lo sketch i2c_detect. Nel video www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c trovi maggiori informazioni.
ciao complimenti ancora una volta per i tuoi video sono molto chiari e alla portata di tutti mi piacerebbe utilizzare questo sistema per attivare una ventola con valori di umidità e temperatura regolabili con uno o due tasti oppure una tastiera, è possibile? continua così sei bravo!!!
Una volta rilevati i valori di temperatura e umidità è possibile eseguire delle azioni a proprio piacere. Tutto dipende dalla creatività nella scrittura dello sketch.
salve, anche io vorrei utilizzare questo sistema per attivare tramite relè una ventola al raggiungimento di una determinata temperatura e un deumidificatore quando l'umidità scende sotto una certa soglia. Per i collegamenti credo di non avere problemi ma avrei bisogno di qualche dritta sulle righe da aggiungere al tuo sketch... in pratica dovrei utilizzare un relè a due moduli dai quali comandare due prese 220.
A livello di codice, pilotare un relè non è molto diverso da accendere un LED. In entrambi i casi è sufficiente mandare il segnale HIGH o LOW sul pin. Quindi devi leggere i valori del sensore e usare i costrutti IF/ELSE per decidere se attivare o disattivare il relè, in base alle misurazioni effettuate.
Ciao complimenti per il tutorial, avrei bisogno di collegare una scheda SMS/GPRS che mi mandi un SMS quando la temperatura e/o umidità raggiungono un determinato valore. Sai aiutarmi? Hai altri video dove spieghi come fare?
Grazie! Volevo solo che mi chiarissi un dubbio, se possibile,. Io ho comprato uno starter kit..e ci sono diversi tutorial, tra questi anche il DHT11, però tira in ballo la funzione millis()...ora da qualche parte ho letto che la millis() dopo quasi 50 giorni va in overflow etc...insomma biosogna gestirla...con le librerie adafruit c'è lo stesso problema ? o è già gestito ? insomma non mi devo preoccupare se il mio codice è in funzione per più di 50 giorni ? Grazie e complimenti per i tuoi tutorial. :)
La funzione millis() una volta raggiunto il limite massimo semplicemente riparte da zero. Per questo motivo non è un'ottima soluzione per creare un orologio, che di conseguenza si resetterebbe ogni circa 50 giorni. Se invece viene usata per misurare l'intervallo di tempo trascorso tra due eventi che non superano 50 giorni può essere usata tranquillamente.
@@TechMaker Ti ringrazio per avermi risposto, ma volevo sapere, per cortesia, se la libreria che usi in questo esempio fa uso della funzione millis(). non vorrei ritrovarmi dopo 50 giorni...che il programma smettesse di funzionare.. :)
Ciao, molto interessante, bravo! Ho riprodotto tutto ma mi da un errore alla riga 10 'class LiquidCrystal_I2C' has no member named 'init'. Da premettere che non sono un esperto di arduino e ho copiato lo sketch dal tuo video, mi puoi aiutare? La riga è "lcd.init();". Grazie
Ho provato a replicare questo progetto solo che, con sketch compilato correttamente, lo schermino non fornisce informazioni (regolando la retroluminazione appaiono solo -nella riga superiore- tutto pieno di triangoli bianchi -cioè tutti i caratteri pieni-). Cosa posso fare? Grazie
Controlla che i collegamenti SDA e SCL non siano invertiti, e verifica che l'indirizzo I²C dell'interfaccia sia corretto. Di solito l'interfaccia ha l'indirizzo 0x27 o 0x3F.
Tra i nostri tutorial puoi trovare i video su come usare un display LCD sia direttamente ( www.italiantechproject.it/arduino/10-usare-display-lcd ) che attraverso l'interfaccia I2C ( www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c ).
Controlla che l'indirizzo I2C nello sketch corrisponda con quello dell'interfaccia. Trovi maggiori informazioni su come scoprire l'indirizzo I2C nel video www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c
Ammenoché la temperatura non è veramente di 0 gradi, non è normale che il sensore segnali sempre 0. Prova a verificare i collegamenti perché non su tutti i moduli DHT11 l'ordine dei pin è sempre uguale.
ciao complimenti per l'ottimo tutorial, ho da farti una domanda da 1M€ :) ... se volessi collegare 2 dht11 ad arduino, uno per leggere i valori interni ed uno per leggere i valori esterni come posso fare? ipotizzando di collegare i dati del secondo sensore al pin 5 (il primo al 2 come da tuo esempio) come posso modificare lo sketch? grazie 1000 davvero
Per regolare il contrasto bisogna girare il trimmer integrato sull'interfaccia I2C. Inoltre prova ad eseguire lo sketch i2cdetect per scoprire l'indirizzo I2C. Nel video della 12° puntata del tutorial di Arduino ( www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c ) trovi maggiori dettagli.
Visto che alcuni caratteri non vengono interpretati correttamente dai display, a volte occorre usare dei codici, per visualizzarli. Il numero esadecimale 0xDF corrisponde al simbolo ° (grado). Ci sono ovviamente altri codici che si riferiscono ad altri caratteri. Facendo una ricerca su google è possibile trovare delle tabelle di corrispondenza tra i codici e i vari caratteri visualizzabili sugli schermi LCD.
È molto strano che lo schermo mostri le scritte solo parzialmente. Hai usato un'interfaccia I²C o collegato direttamente i 16 connettori del display? Prova a collegare solo lo schermo e l'interfaccia ed eseguire il codice della puntata n° 12 (oppure n° 10 se usi direttamente il display), per vedere se lo schermo senza sensori e altri componenti funziona correttamente.
avrdude: stk500v2_ReceiveMessage(): timeout avrdude: stk500v2_ReceiveMessage(): timeout avrdude: stk500v2_ReceiveMessage(): timeout avrdude: stk500v2_ReceiveMessage(): timeout avrdude: stk500v2_ReceiveMessage(): timeout avrdude: stk500v2_ReceiveMessage(): timeout avrdude: stk500v2_getsync(): timeout communicating with programmer Caricamento non riuscito: errore durante il caricamento: exit status 1 ho questo problema a caricare lo sketch cosa devo fare?
Per quanto riguarda la libreria PID quella ha come vantaggio che non usa chiamate di sistema, siamo noi a mettere il digitalWrite ed il digitalRead, qual ora faremo delle modifiche all'Hardware basta esplicitarle per esempio collegassimo un ShiftRegister basta sostitutire digitalWrite e digitalRead con lo ShiftRegister, per esempio if(valueLibrary){data |= (1
Io voglio che fai il video su cui la libreria sia fai da te, per due motivi. Primo di tutto dobbiamo usare i piedini incorporati su Arduino, cosa non scontata poiché magari non ci sono piedini liberi, cioè sono tutti occupati. Se dovessimo accendere dei led potessimo usare un espansore che può essere un multiplexer, un registro a scorrimento ecc. ma come dobbiamo fare se è un sensore ecco perché la libreria ora mai è fatta ed è difficile da modificare, adattandola all'espansore. Secondo la libreria non è farina del nostro sacco, se in futuro la libreria ha dei problemi non sappiamo come fare, se invece lo facciamo noi è molto più semplice.
Probabilmente la libreria LiquidCrystal_I2C non è installata nell'IDE di Arduino. Nel video "Tutorial Arduino ITA 12: usare l'interfaccia I2C per il display LCD" trovi le istruzioni per far funzionare lo schermo con questa libreria.
La cosa brutta che ho scoperto su questa libreria sono le chiamate di sistema, che rendono la libreria non multipiattaforma. Cioè dipende dalla piattaforma che stiamo utilizzando e questo non mi piace. Vorrei che la libreria non usasse esplicitamente il digitalWrite ed il digitalRead, ma implicitamente cioè sarò io a metterlo. Così da renderla multipiattaforma.
Sì, la libreria DHT è progettata per semplificare al massimo la comunicazione con il sensore. Questo è utile in molte situazioni, ma per altre esigenze potrebbe essere necessario cercare soluzioni alternative.
Il display mostra 0 gradi e 0 di umidità, ho installato altre librerie del DHT11 ma senza risultati, il monitor seriale non riporta nessun messaggio, cosa non funziona ? Grazie
Seguo tutti i tuoi video . Complimenti davvero precisi, veloci e interessanti.
Ottimo.Grazie per il lavoro e il tempo che ci dedichi.
Grazie per i complimenti. Per aiutarci a crescere e migliorare, pubblicando i video sempre più interessanti, puoi diventare anche tu un nostro Patreon.
Grazie! I tuoi video sono sempre molto chiari e completi.
👍
Sempre molto istruttivi ed utili i tuoi insegnamenti in riguardo ad Arduino grazie e ciao
Grazie per i complimenti.
Grazie mille bel lavoro complimenti!!
Grazie per i complimenti.
Grazie mille! Tutorial chiaro, conciso e molto professionale. Mi è stato molto di aiuto dato che sono alle prime armi. Sicuramente mi diletterò con altri tutorial altrettanto interessanti!
Siamo molto contenti che il video ti sia stato utile. Continua a seguirci.
Seguo il tuo canale molto volentieri perchè spieghi molto facilmente da capire, l'uinca cosa ho fatto un cambio sul tuo sketch per farlo leggere sul mio display
LiquidCrystal_I2C lcd(0x3f, 16, 2);
Eh si, l'indirizzo I²C non è sempre uguale su tutte le interfacce.
@@TechMaker io ho provato con il 0x3f ma non mi va comunque segna solo pixel bianchi
Prova ad eseguire lo sketch i2cdetect (nella 12° puntata del tutorial trovi maggiori dettagli www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c ) per verificare quale sia l'indirizzo I²C dell'interfaccia. Inoltre controlla che i cavetti SDA e SCL non siano invertiti.
@@TechMaker ho già controllato i piedini
Quale indirizzo I²C viene rilevato da i2cdetect?
Grazie mille per i tutorial sto imparando a usare arduino
Grazie a te, continua a seguirci.
Ottimo lavoro. Personalmente la stampa dei messaggi fissi li metterei nella setup ("Temp.:", "Umid" e relativi postfissi), quelli variabili ovviamente nella loop. Inoltre aggiungerei un delay di almeno 1s
Hai ragione, si può ottimizzare stampando i messaggi fissi solo una volta
Buonasera, io ho eseguito tutti i passaggi collegando anche l'interfaccia I2C ma quando metto in carica lo sketch mi esce scritto "LiquidCrystal_I2C. h: No such file or director"
Però anche levando l'interfaccia I2C e imposto "LiquidCrystal.h" e mettendo tutti i fili e resistenze lo stesso non va
Io uso lo sketch dht11( quello del tuo sketch).
Verifica che nell'IDE di Arduino la libreria sia installata. Nel nostro video www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c trovi maggiori dettagli.
Complimenti per il video, mi è stato molto d'aiuto! Iscritto :)
Grazie per i complimenti e per esserti iscritto.
Ragazzi.... non vedo l’ora che esce il vostro prossimo progetto!!! 😂👍🏻
È già in fase di registrazione la prossima puntata del tutorial di Arduino, quindi presto sarà pubblicato un nuovo video.
Ho visto oggi su Telegram 😂👍🏻
Grande
ciao scusami. ti inoltro il mio messaggio d'errore. aiutami per favore!
Arduino:1.8.9 (Windows Store 1.8.21.0) (Windows 10), Scheda:"Arduino/Genuino Uno"
C:\Users\vzavatta\AppData\Local\Temp\Temp1_materiale_sensore_dht11.zip\dht11\dht11.ino: In function 'void setup()':
dht11:11:7: error: 'class LiquidCrystal_I2C' has no member named 'init'
lcd.init();
^
exit status 1
'class LiquidCrystal_I2C' has no member named 'init'
L'errore dipende dalla versione della libreria LiquidCrystal_I2C. In alcuni casi al posto di init() viene utilizzato begin(). Prova a sostituire il nome del metodo.
Ciao, percaso è possibile collegare un relè che raggiungendo un determinato valore (temperatura umidità) parte.
ed in tal caso la programmazione da seguire...
grazie
Comandare un relè, dal punto di vista della programmazione, non è diverso dall'accensione del LED. Per cui è sufficiente inserire una condizione (IF), e quando si verifica un certa condizione, mandare un segnale HIGH o LOW per accendere o spegnere il relè.
@@TechMaker grazie mille
Ciao, a me da errore nella riga "LiquidCrystal lcd(0×27, 16, 2);", e mi dice "no matching function for call to 'LiquidCrystal::LiquidCrystal(int, int, int)' . Non ho utilizzato l' interfaccia L2c. Come posso risolvere?
Ho fatto tutto quello che c'era nel video. Ho scaricato le librerie. Ma niente
Per inizializzare il display senza interfaccia I2C devi usare l'istruzione LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Trovi maggiori informazioni nel video tutorial dedicato al display LCD ( www.italiantechproject.it/arduino/10-usare-display-lcd ).
ciao, ti vorrei chiedere come si chiama la libreria per lo schermo LCD perche non me la trova... Grazie.
La libreria usata nel video è: LiquidCrystal I2C by Frank de Brabander
nel display non mi spuntano temp ed umidità, ma solo lettere a caso. come posso risolvere?
Verifica che tutti i collegamenti siano ben fissi.
@@TechMaker manca il baud!Che va impostato a 115200 e non standard a 9600
Ciao. Ho svolto tutti i passaggi ma il display rimane vuoto, solo retroilluminato. L'indirizzo I2C è 27. Ho regolato anche la luminosità e controllato i collegamenti. Tutto ok. Dove potrebbe essere il problema?
Usando lo sketch i2c_detect l'indirizzo I2C viene rilevato? Prova a eseguire l'esempio del video www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c per vedere se il display senza altri componenti collegati funziona correttamente.
Hai già provato a regolare il contrasto ruotando il trimmer integrato sull'interfaccia I2C?
buongiorno, volendo leggere 3 sensori in 3 ambienti separati e decidere con 3 pulsanti quale sensore leggere come verrebbe lo sketch? grazie
Puoi creare una variabile che specifica il sensore da leggere e modificarla tramite dei pulsanti. Successivamente usi questa variabile per decidere quale sensore leggere.
Ciao, potresti dirmi come collegare il dht11 senza il modulo integrato? ho seguito i tuoi step ma non funziona. Il dht11 mi serve a distanza quindi ho usato dei cavi per connettere il sensore alla breadboard ma ho la necessità di riportare tutto su questa perchè non ho più spazio su Arduino (per GND E 5V). Grazie mille per la disponibilità. (Arduino/Genuino Uno, DHT sensor library)
Nel video, dal minuto 1:42 in avanti, viene illustrata la differenza di utilizzo del sensore DHT11 senza il modulo integrato. In pratica uno dei 4 pin non viene utilizzato e il pin del segnale deve essere collegato alla tensione positiva attraverso un resistore da 10kohm.
ciao sapresti dirmi perché il display mi mostra 0 gradi e 0 % di umidita è il mio display nonostante io inserisca 240 di luminosità ha la luminosità molto bassa, grazie!
Verifica che tutti i collegamenti siano corretti e ben fissi. Per aumentare la luminosità, puoi utilizzare un ponticello a 2 pin per collegare i due pin dell'interfaccia al posto del collegamento al pin PWM.
grazie mille@@TechMaker
Buoinasera. Ho eseguito lo Sketch di questa lezione ma sul display mi appare sempre il primo carattere di ogni riga (la T di temperatura e la U di umidità). Ho riguardato come consigliato le lezioni 10 e 12 per verificare l'indirizzo dell'interfaccia ma non cambia nulla (una volta era "3f" e un'altra volta "27") ma non ottengo nulla di diverso. Può darmi un suo parere? La ringrazio per una sua cortese risposta.
Verifica che la libreria LiquidCrystal_I2C sia aggiornata.
@@TechMaker Va
bene grazie, domani riprovo. Buona serata.
Io ho scaricato lo Sketch DHT11 ma quando verifico mi da un errore: LiquidCrystal_IC: No such file or directory.
Occorre installare la libreria LiquidCrystal_I2C. Trovi maggiori informazioni nella 12° puntata del tutorial su questo canale ( www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c ).
io ho un problema. Siccome volevo solo usare il sensore e non lo schermo, ho fatto via serial, però mi da in output solo 0. Ho controllato però mi sembra di aver messo i cavi giusti e ho scritto tutto giusto. Ho anche provato con librerie più vecchie ma niente. Cosa posso fare?
Controlla che il numero del pin usato nel circuito corrisponda con quello specificato nello sketch
ciao a me fuziona lo schermo e tutto il resto però mi segna zero gradi, magari potrebbe essere rotto il dht?
e dopo un po comincia a fare segni dtrani dullo schermo
Quale libreria stai utilizzando per il sensore DHT11? Controlla comunque che tutti i collegamenti siano ben fissi.
Anche a me succedeva la stessa cosa. Ma stavo utilizzando un DHT22 mentre nello sketch avevo dichiarato un DHT11.
@@TechMaker anche a me sta facendo la stessa cosa e sto usando lo sketch fatto da te..
non capisco quale sia il problema,l'alimentazione ce ed arriva anche al sensore..
fammi sapere il prima possibile ti prego
Quale libreria stai usando?
sulla scheda di arduino ci sono due pin specifici per SDA e SCL, perché tu usi gli analogici 4 e 5?? ma si potrebbero usare quelli in teoria o servono per tutt'altro?
I due pin SDA e SCL, aggiunti nella revisione 3 della scheda di Arduino UNO, sono collegati direttamente con i pin A4 e A5, quindi è indifferente usare i nuovi pin oppure quelli analogici. In ogni caso i pin A4 e A5 non possono essere usati per altri scopi se si usa il protocollo I²C.
Ciao, nonostante il codice sia uguale e pure i collegamenti, le librerie sono aggiornate; sullo schermo vedo sempre 0 gradi e 0 umidità, come risolvo?
Prova a resettare la scheda attraverso il pulsante integrato e verificare che tutti i collegamenti siano ben fissi. Se il problema persiste prova anche a stampare la temperatura e l'umidità sul monitor seriale per sapere se i dati non vengono letti dal sensore o non siano inviati correttamente al display.
Perchè a me compaiono dei p greca sullo schermo?
comunque non ho usato l interfaccia , ho preso il circuito che già avevo fatto come nel video 10 , ho aggiunto il lettore di umidità e temperatura e ho dovuto cambiare i pin digitali
Controlla che tutti i collegamenti del display siano corretti e ben fissi.
Se collego il monitor lcd (senza interfaccia l2c ) come dal video che avevi spiegato, devo cambiare qualcosa nel codice?
Si, il codice deve essere leggermente modificato. Al posto della libreria LiquidCrystal_I2C va usata LiquidCrystal, e di conseguenza cambia anche l'inizializzazione dell'oggetto "lcd".
Ciao, sono riuscito a far funzionare tutto senza usare il modulo IC2, ma lo schermo rimane vuoto. Non riesco a trovare il problema
Sono riuscito a risolvere, comunque tutorial magnifici!
Ottimo! Se vuoi, puoi raccontare la soluzione. Potrebbe essere utile a qualcun altro che ha lo stesso problema.
Quale era il tuo problema ?
ciao, volevo sapere come hai fatto a convertire il simbolo dei gradi in esadecimale? Io vorrei scrivere la "à" accentata ma purtroppo non riesco a convertirla in esadecimale. Mi potresti dare una mano? Grazie in anticipo.
I caratteri utilizzabili con il codice esadecimale dipendono da quali caratteri sono memorizzati all'interno del display. Cercando tra le immagini su google "display lcd ascii" trovi le tabelle dei caratteri più comunemente usate, ma possono variare da display a display.
Per disegnare i caratteri non presenti all'interno del display si possono creare manualmente con createChar()
www.arduino.cc/en/Reference/LiquidCrystalCreateChar
Nel display a volte la temperatura scende a -10 gradi altre volte 0 o 11 gradi. Quale potrebbe essere il problema ?
#include
#include
#define LED_PIN 3
DHT dht(1, DHT11);
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
void setup(){
lcd.begin (16, 2);
}
void loop(){
delay(1000);
int t = dht.readTemperature();
int h = dht.readHumidity();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp.: " + String(t) + char(0xDF) + "C");
lcd.setCursor(0,1);
lcd.print("Umid.: " + String(h) + "%");
}
ho usato il seguente codice dato che non dispongo del modulo I2C i collegamenti li ho revisionati ma pare che non ci sia nulla che non va.
Se possibile, dovresti usare un pin diverso da 1, per il sensore DHT11. I pin 1 e 0 sono condivisi con la porta USB, quindi si possono creare conflitti quando vengono usati contemporaneamente sia la porta USB che i pin digitali 1 e 0.
Complimenti per la chiarezza. Sono riuscito, senza conoscenze particolari, unendo la lezione 10 a questa a far funzionare il tutto con schermo senza modulo Ic2. Mi chiedevo se è possibile avere la temperatura con un decimale, invece che col numero intero.
Il sensore DHT11 non è abbastanza accurato per le misurazioni al decimo di grado. Puoi prendere in considerazione il DHT22.
Ciao, mi sapresti dire come mai mi segna sempre 0, sia di temp che umid. sul monitor seriale. Ho già fatto il reset ma non funziona. Grazie
Verifica che tutti i collegamenti siano ben fissi. Inoltre controlla se durante la creazione dell'oggetto "dht" il numero del pin è giusto.
qual è il link per la libreria non lo trovo e non so quale vada installata
La libreria DHT può essere installata direttamente dall'IDE di Arduino. Nel video trovi le istruzioni su come farlo.
ottima spiegazione . ho seguito tutte i passaggi . scaricato lo schetc e quando lo carico su arduino mi compare la scritta :exit status errore durante la compilazione per la scheda arduino / genuino. cosa puo essere?
Per avere dei messaggi di errore più esaustivi, prova andare su File -> Impostazioni e cambiare la voce "Warning del compilatore" selezionando "Tutti". L'errore si verifica con tutti gli sketch o solo con quello relativo a DHT11? Inoltre hai installato tutte le librerie usate nello sketch?
Italian Tech Project ho scaricato lo schetc mi si è aperto Arduino e ho lanciato il caricamento
Allora probabilmente mancano le librerie nell'IDE di Arduino. Prova ad installarle come mostrato nel video, per vedere se il problema si risolve.
Italian Tech Project senza dubbio sbaglio qualcosa. Uffa
Ciao, vorrei chiedere se ci sono specifiche versioni di questi pezzi per fare questo progetto
Per esempio se devo prendere una breadboard con più punti
Il numero di punti sulla breadboard dipende da quanti collegamenti si vogliono fare. Con pochi collegamenti è sufficiente anche una breadboard piccola.
Sai dirmi perché il dht11 mi segna valori sempre molto alti? Sono sempre intorno agli 85-95.
Grazie
Quale libreria stai utilizzando?
Ho fatto tutto quello che hai detto nel video però nello schermo mi fa vedere che la temperatura è
0 C e l' umidità 0% come posso risolvere?
Prova a visualizzare i dati letti dal sensore sul monitor seriale.
@@TechMaker L ho fatto e li funziona spero che non ci siano problemi ai cavi in caso sai come riconoscerli?
Per verificare i collegamenti, puoi utilizzare un multimetro digitale
Ciao grazie dei video
ipoteticamente è possibile collegare sullo stesso Arduino 2 display i2c dello stesso tipo? o gli indirizzi I2C andrebbero in conflitto?
Si può collegare più di un display I2C ad una scheda Arduino, però ogni interfaccia I2C del display deve avere un indirizzo diverso. È possibile modificare l'indirizzo I2C dell'interfaccia unendo i connettori contrassegnati con le sigle A0, A1 e A2.
@@TechMaker grazie
Il display mostra 1 grado e 2 di umidità ho fatto tutto come dice il video però ho questo problema. Potresti aiutarmi a risolverlo? Grazie!
Controlla che tutti i collegamenti siano ben fissi. Inoltre, prova a stampare i valori del sensore sul monitor seriale per escludere errori nella comunicazione con il display.
@@TechMakerHo ricontrollato i collegamenti e sono tutti giuti e ben saldi. Ho rimosso il display però il problema persiste! Come posso fare? Soluzioni? Grazie!
Vengono segnalati degli errori durante il caricamento dello sketch?
No, zero errori il codice si carica correttamente senza problemi. Il sensore dht11 è nuovo l'ho comprato l'altro ieri@@TechMaker
Stai usando un sensore con modulo a 3 pin o direttamente il sensore DHT11 che ha 4 pin?
Ciao, bel video.
Io ho un problema con questo sensore, dice sempre lettura fallita.
Cosa posso fare?
Controlla che i pin non siano invertiti. Se usi la stessa libreria usata nel video, controlla anche che la costante nello sketch sia DHT11 e non DHT22.
Ma la libreria si può usare per il dht22?
Si, per DHT22 può essere usata la stessa libreria.
ciao mi serve una mano quando scrivo LiquidCrystal_I2C NON O TROVA COME COMANDO CHE DEVO FARE
PS. ho aggiornato la libreria
Se non la riconosce prova a rimuoverla e reinstallarla nuovamente.
@@TechMaker grazie comunque il tutorial lo hai spiegato benissimo grazie
Perché usi #define LED_PIN 3 e non int LED_PIN = 3;
?
Dove sta la differenza?
La direttiva #define crea una costante, mentre con la sintassi "int variabile = valore;" viene creata una variabile. La differenza principale è che la costante non può cambiare il suo valore una volta definita, mentre con una variabile è possibile cambiare successivamente il suo valore.
ciao -veramente interessante - ero molto incuriosito da arduino e ho da poco acquistato un leonardo - sino ad ora ho realizzato piccoli progetti con i pic della microchip - una volta testato il programma trasferivo il pic su in circuito - domanda magari banale ma qui come si fa a trasferire il programma su un circuito dedicato, devo acquistare ogni volta un leonardo ?
Per trasferire il programma su un circuito integrato puoi usare dei microcontrollori come per esempio ATtiny o ATmega. In uno dei nostri video tutorial puoi vedere un esempio ( www.italiantechproject.it/arduino/come-programmare-il-microcontrollore-attiny85-usando-la-scheda-di-arduino ).
grande - adesso si che si viaggia - dovro' scaricare tutti i vs tutorial - grazie
ciao, ho un dht11 e segna valori sbagliati. ho collegato tutto bene ed ho utilizzato le giuste librerie
L'IDE di Arduino segnala qualche messaggio di errore? Hai provato a visualizzare i dati ritornati dal sensore direttamente sul monitor seriale?
@@TechMaker si ho provato col monitor seriale, da gli stesis dati visualizzati sul lcd. Non da nemmeno messaggo di errore
Verifica che la tensione che arriva al sensore è corretta e che i collegamenti siano ben fissi.
@@TechMaker ho gia verificato, ho il dubbio che il dht sia rotto. come faccio a capirlo?
I valori restituiti sono casuali o sfasati (troppo alti/bassi) rispetto le misurazioni reali?
Ho fatto tutto ma da l,errore DHT:h no such file or directory ???????? casa sigmifica?????
Sembra che la libreria DHT non sia installata nell'IDE di Arduino
@@TechMakeranche a me da lo stesso errore però c’è la ho installata
Controlla che la libreria installata sia quella giusta. Se il problema persiste, prova a cancellare la cartella della libreria e reinstallarla.
Ciao, mi puoi confermare per cortesia se questi codici sono scritti correttamente ? I codici dei ricevitori sono commentati perché per il momento non devo utilizzarli.
Arduino 1 (con Display I2C 16x2, Sensore SHT31 e Ricevitore RCRX3-434):
#include
#include
#include
//#include
#define RECEIVER_DATA_PIN 2
Adafruit_SHT31 sht31 = Adafruit_SHT31();
LiquidCrystal_I2C lcd(0x27, 16, 2);
//RCSwitch mySwitch = RCSwitch();
void setup() {
lcd.begin(16, 2);
lcd.print("Temp: ");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
Serial.begin(9600);
if (!sht31.begin(0x44)) {
Serial.println("Couldn't find SHT31");
while (1) delay(1);
}
//mySwitch.enableReceive(RECEIVER_DATA_PIN);
}
void loop() {
float temp = sht31.readTemperature();
float humidity = sht31.readHumidity();
lcd.setCursor(6, 0);
lcd.print(temp);
lcd.print(" C");
lcd.setCursor(10, 1);
lcd.print(humidity);
lcd.print(" %");
/*if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if (value == 0) {
Serial.println("Unknown encoding");
} else {
Serial.print("Received value: ");
Serial.println(value);
}
mySwitch.resetAvailable();
}*/
}
Arduino 2 (con Sensore SHT31 e Trasmettitore RC-TX1-434):
#include
#include
//#include
#define TRANSMITTER_DATA_PIN 10
Adafruit_SHT31 sht31 = Adafruit_SHT31();
//RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
if (!sht31.begin(0x44)) {
Serial.println("Couldn't find SHT31");
while (1) delay(1);
}
//mySwitch.enableTransmit(TRANSMITTER_DATA_PIN);
}
void loop() {
float temp = sht31.readTemperature();
float humidity = sht31.readHumidity();
Serial.print("Temperature: ");
Serial.print(temp);
Serial.print(" C, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
/*int valueToSend = temp * 10;
mySwitch.send(valueToSend, 32);*/
delay(1000);
}
Sì, il codice sembra corretto.
@@TechMaker Ti ringrazio molto gentile, scusami riguardo i collegamenti, l'Arduino UNO ha solo un pin SCL e un pin SDA, se non si utilizza una breadboard quando si collega un display LCD I2C 16x2 e un sensore SHT35 i cavi dei due dispositivi andranno entrambi ai pin SDA (A4) e SCL (A5), avendo gli stessi pin in comune (display e sensore) bisogna spellare i due fili e unirli ?
Sì, senza usare la breadboard, i fili vanno uniti insieme.
@@TechMaker Grazie, i connettori Scotch penso vadano bene per questo utilizzo..
Ciao. Per me che sono novellino, è stato un piacere realizzare questo piccolo progetto. Ti chiedo: è possibile aggiungere il decimale sulla temperatura? Riusciresti a darmi le righe che eventualmente vanno aggiunte nello sketch?
Per gestire anche le cifre decimali bisogna usare le variabili di tipo float al posto di int.
@@TechMaker Grazie 1000 ... in effetti - in attesa di una tua cortese risposta - ho trovato questa info su un blog e ho provato a sostituire il comando int con float e funziona. Una domanda: può aver senso usare double anziché float? sai dirmi che differenza c'è tra i due ai fini pratici della misurazione? Ciao e grazie
Normalmente la variabile "double" occupa più memoria rispetto alla variabile "float", permettendo di memorizzare più cifre di un numero. Considerando però la precisione del sensore DHT11/DHT22 la variabile float è più che sufficiente. Inoltre su molte schede di Arduino, la variabile "double" occupa lo stesso spazio di "float" che la rende praticamente equivalente.
Nn mi si accende lo schermo LCD anche se ho fatto tutto come faccio??
Prova a seguire le istruzioni del video www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c per vedere se il display da solo funziona correttamente.
non funziona correttamente lo schermo mi fa vedere dei quadratini mi puoi aiutare?
Controlla che l'indirizzo I2C nello sketch corrisponda a quello usato dall'interfaccia
Ciao, ho collegato tutto correttamente il display si accende ma non c'è scritto nulla, mi potresti aiutare per favore?
Hai controllato che l'indirizzo I2C dell'interfaccia sia corretto?
@@TechMaker scusami ma sono poco esperto, dove posso trovare l'indirizzo i2c e dopo lo sostituisco nel programma?
@@TechMaker se riesci ad aiutarmi mi fai un Grande favore
L'indirizzo I2C lo puoi trovare per esempio tramite lo sketch i2c_detect. Nel video www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c trovi maggiori informazioni.
@@TechMaker grazie mille adesso provo e le faccio sapere
ciao complimenti ancora una volta per i tuoi video
sono molto chiari e alla portata di tutti
mi piacerebbe utilizzare questo sistema per attivare una ventola con valori di umidità e temperatura regolabili con uno o due tasti
oppure una tastiera, è possibile?
continua così sei bravo!!!
Una volta rilevati i valori di temperatura e umidità è possibile eseguire delle azioni a proprio piacere. Tutto dipende dalla creatività nella scrittura dello sketch.
salve, anche io vorrei utilizzare questo sistema per attivare tramite relè una ventola al raggiungimento di una determinata temperatura e un deumidificatore quando l'umidità scende sotto una certa soglia. Per i collegamenti credo di non avere problemi ma avrei bisogno di qualche dritta sulle righe da aggiungere al tuo sketch... in pratica dovrei utilizzare un relè a due moduli dai quali comandare due prese 220.
A livello di codice, pilotare un relè non è molto diverso da accendere un LED. In entrambi i casi è sufficiente mandare il segnale HIGH o LOW sul pin. Quindi devi leggere i valori del sensore e usare i costrutti IF/ELSE per decidere se attivare o disattivare il relè, in base alle misurazioni effettuate.
Ciao complimenti per il tutorial, avrei bisogno di collegare una scheda SMS/GPRS che mi mandi un SMS quando la temperatura e/o umidità raggiungono un determinato valore. Sai aiutarmi? Hai altri video dove spieghi come fare?
Al momento purtroppo non abbiamo un video tutorial su come mandare gli SMS con Arduino.
come temperatura e umidità leggo sempre 0 gradi e 0% eppure i collegamenti del sensore sono tutti corretti, qualcuno mi può aiutare? grazie.
Durante la compilazione vengono mostrati dei messaggi di errore?
@@TechMaker No, ma comunque ho risolto grazie lo stesso
@@TechMaker ho lo stesso problema e durante la compilazione non vengono mostrati messaggi di errore
Verifica che sull'IDE di Arduino siano installate le librerie "DHT sensor library" e "Adafruit Unified Sensor", e che siano aggiornate.
@@TechMaker ho verificato e sono installate ma non funziona lo stesso come posso risolvere?
Grazie! Volevo solo che mi chiarissi un dubbio, se possibile,. Io ho comprato uno starter kit..e ci sono diversi tutorial, tra questi anche il DHT11, però tira in ballo la funzione millis()...ora da qualche parte ho letto che la millis() dopo quasi 50 giorni va in overflow etc...insomma biosogna gestirla...con le librerie adafruit c'è lo stesso problema ? o è già gestito ? insomma non mi devo preoccupare se il mio codice è in funzione per più di 50 giorni ?
Grazie e complimenti per i tuoi tutorial. :)
La funzione millis() una volta raggiunto il limite massimo semplicemente riparte da zero. Per questo motivo non è un'ottima soluzione per creare un orologio, che di conseguenza si resetterebbe ogni circa 50 giorni. Se invece viene usata per misurare l'intervallo di tempo trascorso tra due eventi che non superano 50 giorni può essere usata tranquillamente.
@@TechMaker Ti ringrazio per avermi risposto, ma volevo sapere, per cortesia, se la libreria che usi in questo esempio fa uso della funzione millis(). non vorrei ritrovarmi dopo 50 giorni...che il programma smettesse di funzionare.. :)
Il codice mostrato in questo video funziona tranquillamente per più di 50 giorni.
Ciao, molto interessante, bravo! Ho riprodotto tutto ma mi da un errore alla riga 10 'class LiquidCrystal_I2C' has no member named 'init'. Da premettere che non sono un esperto di arduino e ho copiato lo sketch dal tuo video, mi puoi aiutare? La riga è "lcd.init();". Grazie
Prova a usare begin al posto di init.
@@TechMaker Tutto risolto, grazie!
Ho provato a replicare questo progetto solo che, con sketch compilato correttamente, lo schermino non fornisce informazioni (regolando la retroluminazione appaiono solo -nella riga superiore- tutto pieno di triangoli bianchi -cioè tutti i caratteri pieni-). Cosa posso fare? Grazie
Controlla che i collegamenti SDA e SCL non siano invertiti, e verifica che l'indirizzo I²C dell'interfaccia sia corretto. Di solito l'interfaccia ha l'indirizzo 0x27 o 0x3F.
Italian Tech Project funziona, era 0x3F mentre io avevo messo 0x27! Grazie mille!
come si chiama la libreria del LiquidCrystal
La versione senza I2C si chiama semplicemente LiquidCrystal, mentre quella con I2C si chiama LiquidCrystal_I2C.
@@TechMaker io le ho istallate tutte le librerie che ci sono però non me lo fa diventare arancione la scritta. ciao e grazie in anticipo
Vengono visualizzati dei messaggi di errore durante la compilazione dello sketch?
@@TechMaker durante la compilazione no, però se faccio verifica si. ciao e grazie.
Qual è il messaggio di errore?
ciao perfetto ma potresti fare anche un video per la versione senza i2c?
Ti può essere di aiuto il video ( www.italiantechproject.it/arduino/10-usare-display-lcd ) che mostra come usare un display senza I2C.
@@TechMaker ho provato ad usarlo ma sono un principiante e non ci sono riuscito puoi fare anche una versione se sa i2c?
Quale problematica hai riscontrato?
Bellissimo progetto, come si potrebbe fare per accendere la retroilluminazione del display tramite un sensore di prossimità ?
Puoi usare il valore ricevuto dal sensore di prossimità per decidere il segnale da inviare al pin che controlla la retroilluminazione.
@@TechMaker Grazie! Proverò a fare così
ma non lo so come collegare un lcd 1602A
Tra i nostri tutorial puoi trovare i video su come usare un display LCD sia direttamente ( www.italiantechproject.it/arduino/10-usare-display-lcd ) che attraverso l'interfaccia I2C ( www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c ).
mi dice che non trova header file (.h)
ho un arduino elegoo uno r3
Assicurati che entrambe le librerie siano installate nell'IDE di Arduino
@@TechMaker ok fatto, ma sul display comunque non esce scritto nulla
Controlla che l'indirizzo I2C nello sketch corrisponda con quello dell'interfaccia. Trovi maggiori informazioni su come scoprire l'indirizzo I2C nel video www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c
a me si accende ma sull'display non compare nulla e normale?
Controlla che l'indirizzo I2C nello sketch corrisponda con quello dell'interfaccia.
è normale che la temperatura rimane sempre 0 gradi?
Ammenoché la temperatura non è veramente di 0 gradi, non è normale che il sensore segnali sempre 0. Prova a verificare i collegamenti perché non su tutti i moduli DHT11 l'ordine dei pin è sempre uguale.
ciao complimenti per l'ottimo tutorial, ho da farti una domanda da 1M€ :) ... se volessi collegare 2 dht11 ad arduino, uno per leggere i valori interni ed uno per leggere i valori esterni come posso fare? ipotizzando di collegare i dati del secondo sensore al pin 5 (il primo al 2 come da tuo esempio) come posso modificare lo sketch? grazie 1000 davvero
Per ogni sensore aggiuntivo, devi creare un nuovo oggetto della classe DHT, specificando il pin al quale è collegato il sensore.
Ottimo, temevo di dover modificare anche la libreria. Meglio così. Davvero grazie per la risposta precisa e puntuale
Perché nello schermo non vedo niente, eppure Arduino non trova nessun errore
Prova a verificare se i cavetti SDA e SCL non sono invertiti e che il contrasto sia regolato correttamente.
@@TechMaker come faccio a regolare il contrasto?
@@TechMaker ho provato a invertirli e non cambia niente
@@TechMaker
#include
#include
#include
#include
#include
#define PIN_SERVO 4
#define LED_PIN 6
DHT dht(2, DHT11);
LiquidCrystal_I2C lcd(0X27, 16, 2);
Servo servo;
int tempo = 2000;
int pinLed1 = 13;
int pinLed2 =12;
int pinLed3 = 8;
void setup() {
dht.begin ();
lcd.init();
lcd.backlight();
pinMode(LED_PIN, OUTPUT);
analogWrite (LED_PIN, 10);
pinMode(pinLed1,OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3,OUTPUT);
servo.attach(PIN_SERVO);
}
void loop() {
delay(1000);
int t = dht.readTemperature();
int h = dht.readHumidity();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp.: " + String(t) + char(0xDF) + "C");
lcd.setCursor(0,1);
lcd.print("Umid.: " + String(h) + "%");
digitalWrite(pinLed1,HIGH);
for(int i = 0; i < 90; i++){
servo.write (i);}
delay (tempo);
delay (tempo);
delay (tempo);
delay (tempo);
delay (tempo);
delay (tempo);
delay (tempo);
delay (tempo);
digitalWrite(pinLed1,LOW);
digitalWrite (pinLed3,HIGH);
delay (tempo);
delay (tempo);
delay (tempo);
delay (tempo);
digitalWrite (pinLed3, LOW);
digitalWrite(pinLed2,HIGH);
delay (tempo);
delay (tempo);
delay (tempo);
delay (tempo);
delay (tempo);
delay (tempo);
delay (tempo);
delay (tempo);
for(int i = 0; i < 180; i++){
servo.write (i);}
digitalWrite(pinLed2,LOW);
}
questo è il mio progetto, cosa ho sbagliato?
Per regolare il contrasto bisogna girare il trimmer integrato sull'interfaccia I2C. Inoltre prova ad eseguire lo sketch i2cdetect per scoprire l'indirizzo I2C. Nel video della 12° puntata del tutorial di Arduino ( www.italiantechproject.it/arduino/12-display-lcd-con-interfaccia-i2c ) trovi maggiori dettagli.
Perché hai scritto "... char (0xDF)..."? Perché proprio quel numero esadecimale? Non avresti potuto scrivere un altro numero(sempre esadecimale) ?
Visto che alcuni caratteri non vengono interpretati correttamente dai display, a volte occorre usare dei codici, per visualizzarli. Il numero esadecimale 0xDF corrisponde al simbolo ° (grado). Ci sono ovviamente altri codici che si riferiscono ad altri caratteri. Facendo una ricerca su google è possibile trovare delle tabelle di corrispondenza tra i codici e i vari caratteri visualizzabili sugli schermi LCD.
@@TechMaker ahh ok grazie mille, comunque gran bel canale davvero
Ma non capisco perché vede solo la T di temp e sotto la U di umid e nient'altro
Ho provato con Arduino uno e nano ed è uguale
È molto strano che lo schermo mostri le scritte solo parzialmente. Hai usato un'interfaccia I²C o collegato direttamente i 16 connettori del display? Prova a collegare solo lo schermo e l'interfaccia ed eseguire il codice della puntata n° 12 (oppure n° 10 se usi direttamente il display), per vedere se lo schermo senza sensori e altri componenti funziona correttamente.
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
Caricamento non riuscito: errore durante il caricamento: exit status 1
ho questo problema a caricare lo sketch cosa devo fare?
Controlla che la voce "Scheda" nel menu "Strumenti" sia impostata correttamente.
Per quanto riguarda la libreria PID quella ha come vantaggio che non usa chiamate di sistema, siamo noi a mettere il digitalWrite ed il digitalRead, qual ora faremo delle modifiche all'Hardware basta esplicitarle per esempio collegassimo un ShiftRegister basta sostitutire digitalWrite e digitalRead con lo ShiftRegister, per esempio if(valueLibrary){data |= (1
Hai ragione, la libreria PID è molto flessibile e può essere utilizzata in diverse occasioni.
a me dice che il codice non va bene
non ho soltanto messo i dati del dlc perchè non ce l'ho
Qual è il messaggio di errore?
Io voglio che fai il video su cui la libreria sia fai da te, per due motivi.
Primo di tutto dobbiamo usare i piedini incorporati su Arduino, cosa non scontata poiché magari non ci sono piedini liberi, cioè sono tutti occupati. Se dovessimo accendere dei led potessimo usare un espansore che può essere un multiplexer, un registro a scorrimento ecc. ma come dobbiamo fare se è un sensore ecco perché la libreria ora mai è fatta ed è difficile da modificare, adattandola all'espansore.
Secondo la libreria non è farina del nostro sacco, se in futuro la libreria ha dei problemi non sappiamo come fare, se invece lo facciamo noi è molto più semplice.
Per usare il sensore DHT11 senza libreria ti può essere di aiuto l'articolo alainsprojects.com/2019/12/27/dht11-on-arduino-without-a-library/
Génial merci, mais cela aurait été mieux avec directement le code a copier coller
Il codice puoi scaricarlo dal nostro sito www.italiantechproject.it/arduino/sensore-di-temperatura-e-umidita-dht11
non mi legge LIquidCrystal_I2C cosa può essere?
Bel video.
Probabilmente la libreria LiquidCrystal_I2C non è installata nell'IDE di Arduino. Nel video "Tutorial Arduino ITA 12: usare l'interfaccia I2C per il display LCD" trovi le istruzioni per far funzionare lo schermo con questa libreria.
La cosa brutta che ho scoperto su questa libreria sono le chiamate di sistema, che rendono la libreria non multipiattaforma. Cioè dipende dalla piattaforma che stiamo utilizzando e questo non mi piace. Vorrei che la libreria non usasse esplicitamente il digitalWrite ed il digitalRead, ma implicitamente cioè sarò io a metterlo. Così da renderla multipiattaforma.
Sì, la libreria DHT è progettata per semplificare al massimo la comunicazione con il sensore. Questo è utile in molte situazioni, ma per altre esigenze potrebbe essere necessario cercare soluzioni alternative.
Salve mi può dare dei dettagli
Cosa vorresti sapere di preciso?
sia temperatura sia umidità sono sempre zero
Controlla che tutti i collegamenti siano ben fissi e che nello sketch sia specificata la giusta versione (DHT11 o DHT22)
Il display mostra 0 gradi e 0 di umidità, ho installato altre librerie del DHT11 ma senza risultati, il monitor seriale non riporta nessun messaggio, cosa non funziona ? Grazie
Problema risolto, consultando i Data Sheet. ho scoperto che il sensore in mio possesso ha i piedini configurati diversamente
👍