Beste Arduino gebruikers,
Ik heb voor mijn project een LCD scherm gebruikt van het type GDM2002D. Nu is mijn probleem dat deze perfect weergeeft wat ik vraag, namelijk temperatuur, datum, uur. Maar na zo'n 1 à 2 dagen of op sommige momenten zelfs sneller geeft mijn LCD scherm rare tekens weer op mijn LCD. ik zelf ben niet zo vertrouwd met het gebruiken van arduino en heb ondertussen al enkele dingen toegepast maar deze werken niet. Het enige wat nog overblijft is het LCD scherm vernieuwen. De code probeer ik hieronder te plaatsen ook. Bijlage is het scherm van de LCD na enkele tijd.
Hopelijk kan iemand mij hiermee helpen.
code:
c code:
#include <DS1302.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
// Init the DS1302
DS1302 rtc(2, 3, 4);
int RelaisKoel1 = 9; // RelaisKoel is verbonden met pin 9 van de Arduino
int RelaisKoel2 = 10;
int temp_sensor_Koel = 5;
int temp_sensor_Verw = 6;
const int Vakantieknop = 34;
int ContrastLCD = 40;
int LED = 30;
int LEDvakantie = 32;
float temperatureBinnen = 0;
float temperatureBuiten = 0;
int lowerLimitBinnen = 19;
int upperLimitBinnen = 21;
int lowerLimitBuiten = 17;
int upperLimitBuiten = 25;
int Vakantiemodus = 0;
int VakantieRelais1 = 0;
int VakantieRelais2 = 0;
LiquidCrystal lcd(12,11,22,24,26,28);
OneWire oneWirePin1(temp_sensor_Koel);
OneWire oneWirePin2(temp_sensor_Verw);
DallasTemperature sensorsBinnen(&oneWirePin1);
DallasTemperature sensorsBuiten(&oneWirePin2);
void setup(void){
{
lcd.begin(20,2);
}
{
// Set the clock to run-mode, and disable the write protection
rtc.halt(false);
rtc.writeProtect(false);
// The following lines can be commented out to use the values already stored in the DS1302
//rtc.setDOW(TUESDAY); // Set Day-of-Week to FRIDAY
//rtc.setTime(10,40 , 0); // Set the time to 12:00:00 (24hr format)
//rtc.setDate(18, 6, 2019); // Set the date to August 6th, 2010
}
//Setup the Relais & LEDS to act as outputs
pinMode(RelaisKoel1,OUTPUT);
pinMode(RelaisKoel2,OUTPUT);
pinMode(LED,OUTPUT);
pinMode(LEDvakantie,OUTPUT);
sensorsBinnen.begin();
sensorsBuiten.begin();
digitalWrite(RelaisKoel1, LOW);
digitalWrite(RelaisKoel2, LOW);
digitalWrite(LED, LOW);
digitalWrite(LEDvakantie, LOW);
pinMode(Vakantieknop, INPUT);
}
void loop(){
Vakantiemodus = digitalRead(Vakantieknop);
if (Vakantiemodus == HIGH )
{
digitalWrite(LEDvakantie, LOW);
sensorsBinnen.requestTemperatures();
temperatureBinnen = sensorsBinnen.getTempCByIndex(0);
sensorsBuiten.requestTemperatures();
temperatureBuiten = sensorsBuiten.getTempCByIndex(0);
// Send date
lcd.setCursor(0,0);
lcd.print(rtc.getDateStr());
// Send time
lcd.setCursor(12,0);
lcd.print(rtc.getTimeStr());
lcd.setCursor(11,1);
lcd.print("T: ");
lcd.print(temperatureBuiten);
lcd.print("C");
//Warmtepomp op stand verwarmen of koelen voor binnen temperatuur en kijken naar buiten temperatuur
if(temperatureBinnen <= lowerLimitBinnen && temperatureBuiten <= lowerLimitBuiten){
lcd.setCursor(0,1);
lcd.print("Verwarmen ");
digitalWrite(RelaisKoel1, LOW);
digitalWrite(RelaisKoel2, LOW);
digitalWrite(LED, HIGH);
}
else if(temperatureBinnen >= upperLimitBinnen || temperatureBuiten >= upperLimitBuiten){
lcd.setCursor(0,1);
lcd.print("Koelen ");
digitalWrite(RelaisKoel1, HIGH);
digitalWrite(RelaisKoel2, HIGH);
digitalWrite(LED, LOW);
}
}
else
{
// Send date
lcd.setCursor(0,0);
lcd.print(rtc.getDateStr());
// Send time
lcd.setCursor(12,0);
lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print("Vakantiemodus :) ");
VakantieRelais1 = digitalRead(RelaisKoel1);
VakantieRelais2 = digitalRead(RelaisKoel2);
if( VakantieRelais1 == HIGH && VakantieRelais2 == HIGH ){ // vakantie koelen
digitalWrite(RelaisKoel1, HIGH);
digitalWrite(RelaisKoel2, HIGH);
digitalWrite(LED, LOW);
digitalWrite(LEDvakantie, HIGH);
}
else if( VakantieRelais1 == LOW && VakantieRelais2 == LOW) { // vakantie verwarmen
digitalWrite(RelaisKoel1, LOW);
digitalWrite(RelaisKoel2, LOW);
digitalWrite(LED, HIGH);
digitalWrite(LEDvakantie, HIGH);
}
}
delay(1050);
}
Mvg
[Bericht gewijzigd door Henry S. op zondag 25 augustus 2019 17:47:47 (0%)