Ciao a tutti !
Il mio display mi mostra degli strani simboli quando dovrebbe invece mostrarmi la scritta iniziale e successivamente le misurazioni date dai sensori. Vi posto il codice e una foto:
#include <dht.h>
#include <LiquidCrystal.h> //Libreria per il display lcd
#define dataPin 13
dht DHT;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2); //Pin del display lcd
int triggerPort = 8; //Pin emettitore
int echoPort = 7; //Pin ricevitore
// Variabili
long durata;
long distanza;
void setup() {
pinMode(triggerPort, OUTPUT); //Impostazione del pin 'Emettitore' cone OUTPUT
pinMode(echoPort, INPUT); //Impostazione del pin 'Ricevitore' come INPUT
///////////////////////////////////////////////////////////////////////////
Serial.begin(9600);
// lcd.setCursor(n -> riga, n -> colonna)
// (Nota: la colonna '0' è la seconda riga, mentre i sedici spazi delle righe si contano da 0 a 15):
lcd.begin(16, 2);
lcd.setCursor(1, 0); //2° spazietto, 1° colonna
lcd.print("Metro Digitale"); //Scritta all'avvio dello strumento
delay(2000);
}
void loop() {
delay(800); //Attesa tra una misura e l'altra
////////////////////////////////////////////////////////////////////////////
//TEMPERATURA & UMIDITA'
int readData = DHT.read22(dataPin);
float t = DHT.temperature;
float h = DHT.humidity;
lcd.setCursor(0,1);
lcd.print("T: ");
//lcd.setCursor(0,1);
lcd.print(t);
lcd.print("*C");
delay(450);
lcd.setCursor(7,1);
lcd.print("U: ");
//lcd.setCursor(0,1);
lcd.print(h);
lcd.print("%");
delay(450);
////////////////////////////////////////////////////////////////////////////
//MISURAZIONE
digitalWrite(triggerPort, LOW);
digitalWrite(triggerPort, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPort, LOW);
digitalWrite(echoPort, LOW);
durata=pulseIn( echoPort, HIGH );
distanza=0.034*durata/2;
lcd.clear();
lcd.setCursor(9, 0);
lcd.print(distanza);
if(durata==0) {
lcd.setCursor(0, 0);
lcd.println("LIMITE RAGGIUNTO");
lcd.setCursor(0, 1);
lcd.println("FUORI PORTATA");
delay(700);
lcd.setCursor(0, 0);
lcd.println("LIMITE RAGGIUNTO");
lcd.setCursor(0, 1);
lcd.println("FUORI PORTATA");
delay(700);
lcd.setCursor(0, 0);
lcd.println("LIMITE RAGGIUNTO");
lcd.setCursor(0, 1);
lcd.println("FUORI PORTATA");
delay(700);
}
else {
lcd.setCursor(0, 0); //1° spazietto, 1° colonna
lcd.print("Distanza: ");
lcd.setCursor(12, 0);
lcd.print("cm"); //Unità di misura
lcd.setCursor(9, 0);
lcd.print(distanza);
}
Serial.print("Distanza misurata: ");
Serial.print(distanza);
Serial.println("cm");
delay(1000);
}
è la priva volta che mi si presenta un problema di questo tipo e non saprei proprio come risolvere, se è un problema software o hardware, non so ..
Ci tengo ad avvisarvi che non sono un grande esperto su arduino e ne di elettronica
foto display.pdf (1.14 MB)