Im basically using the 4 pin l2c lcd screen and getting reading from dht11 and ldr and printing those readings onto the lcd screen, although i wanted to use an animation to display them (just for the looks). although I've butchered some code together and was wondering if there was a simplified way to animate it. here is the code
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 8
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int buttonPin = 3;
const byte ldrPin = A0;
unsigned long previousMillis = 0;
const long interval = 3000;
unsigned long clearMillis = 0;
void setup() {
lcd.init();
lcd.backlight();
dht.begin();
pinMode(buttonPin, INPUT);
Serial.begin(9600);
pinMode(ldrPin, INPUT_PULLUP);
}
void loop() {
unsigned long currentMillis = millis();
// check if it's time to update the LED
if (currentMillis - previousMillis >= interval - 2000) {
// save the last time you updated the LED
previousMillis = currentMillis;
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
delay(25);
lcd.setCursor(1,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print("H");
lcd.setCursor(1,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("T");
delay(25);
lcd.setCursor(2,0);
lcd.print(" ");
lcd.setCursor(1,0);
lcd.print("u");
lcd.setCursor(2,1);
lcd.print(" ");
lcd.setCursor(1,1);
lcd.print("e");
delay(25);
lcd.setCursor(3,0);
lcd.print(" ");
lcd.setCursor(2,0);
lcd.print("m");
lcd.setCursor(3,1);
lcd.print(" ");
lcd.setCursor(2,1);
lcd.print("m");
delay(25);
lcd.setCursor(4,0);
lcd.print(" ");
lcd.setCursor(3,0);
lcd.print("i");
lcd.setCursor(4,1);
lcd.print(" ");
lcd.setCursor(3,1);
lcd.print("p");
delay(25);
lcd.setCursor(5,0);
lcd.print(" ");
lcd.setCursor(4,0);
lcd.print(":");
lcd.setCursor(5,1);
lcd.print(" ");
lcd.setCursor(4,1);
lcd.print(":");
delay(25);
lcd.setCursor(6,0);
lcd.print(" ");
lcd.setCursor(5,0);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(" ");
lcd.setCursor(5,1);
lcd.print(" ");
delay(25);
lcd.setCursor(8,0);
lcd.print(" ");
lcd.setCursor(8,1);
lcd.print(" ");
delay(25);
lcd.setCursor(9,0);
lcd.print(" ");
lcd.setCursor(9,1);
lcd.print(" ");
delay(25);
lcd.setCursor(7,0);
lcd.print(" ");
lcd.setCursor(6,0);
lcd.print(h);
lcd.setCursor(7,1);
lcd.print(" ");
lcd.setCursor(6,1);
lcd.print(t);
delay(25);
lcd.setCursor(10,0);
lcd.print(" ");
lcd.setCursor(10,1);
lcd.print(" ");
delay(25);
lcd.setCursor(11,0);
lcd.print(" ");
lcd.setCursor(10,0);
lcd.print("%");
lcd.setCursor(11,1);
lcd.print(" ");
lcd.setCursor(10,1);
lcd.print("C");
delay(25);
lcd.setCursor(11,1);
lcd.print((char)223);
lcd.setCursor(12,0);
lcd.print(" ");
lcd.setCursor(12,1);
lcd.print(" ");
delay(25);
lcd.setCursor(13,0);
lcd.print(" ");
lcd.setCursor(13,1);
lcd.print(" ");
delay(25);
lcd.setCursor(14,0);
lcd.print(" ");
lcd.setCursor(14,1);
lcd.print(" ");
delay(25);
lcd.setCursor(15,0);
lcd.print(" ");
lcd.setCursor(15,1);
lcd.print(" ");
while (true) {
// clear the LCD if it's time
if (millis() - currentMillis >= interval) {
currentMillis = millis();
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
delay(25);
lcd.setCursor(1,0);
lcd.print(" ");
lcd.setCursor(1,1);
lcd.print(" ");
delay(25);
lcd.setCursor(2,0);
lcd.print("L");
lcd.setCursor(2,1);
lcd.print(" ");
delay(25);
lcd.setCursor(3,0);
lcd.print("i");
lcd.setCursor(3,1);
lcd.print(" ");
delay(25);
lcd.setCursor(4,0);
lcd.print("g");
lcd.setCursor(4,1);
lcd.print(" ");
delay(25);
lcd.setCursor(5,0);
lcd.print("h");
lcd.setCursor(5,1);
lcd.print(" ");
delay(25);
lcd.setCursor(6,0);
lcd.print("t");
lcd.setCursor(6,1);
lcd.print(" ");
delay(25);
lcd.setCursor(7,0);
lcd.print(" ");
lcd.setCursor(7,1);
lcd.print(" ");
delay(25);
lcd.setCursor(8,0);
lcd.print("L");
lcd.setCursor(8,1);
lcd.print(" ");
delay(25);
lcd.setCursor(9,0);
lcd.print("e");
lcd.setCursor(9,1);
lcd.print(" ");
delay(25);
lcd.setCursor(10,0);
lcd.print("v");
lcd.setCursor(10,1);
lcd.print(" ");
delay(25);
lcd.setCursor(11,0);
lcd.print("e");
lcd.setCursor(11,1);
lcd.print(" ");
delay(25);
lcd.setCursor(12,0);
lcd.print("l");
lcd.setCursor(12,1);
lcd.print(" ");
break;
}
}
/* LDR SENSOR */
unsigned int AnalogValue;
AnalogValue = analogRead(A0);
Serial.println(AnalogValue);
lcd.setCursor(3, 1);
while (true) {
if (millis() - currentMillis >= interval -2999) {
currentMillis = millis();
lcd.setCursor(3,1);
if (AnalogValue < 10) {
lcd.print("-");
lcd.setCursor(4,1);
delay(25);
lcd.print(" ");
lcd.setCursor(5,1);
delay(25);
lcd.print(" ");
lcd.setCursor(6,1);
delay(25);
lcd.print(" ");
lcd.setCursor(7,1);
delay(25);
lcd.print("D");
lcd.setCursor(8,1);
delay(25);
lcd.print("a");
lcd.setCursor(9,1);
delay(25);
lcd.print("r");
lcd.setCursor(10,1);
delay(25);
lcd.print("k");
lcd.setCursor(11,1);
delay(25);
lcd.print(" ");
lcd.setCursor(12,1);
delay(25);
lcd.print(" ");
lcd.setCursor(13,1);
delay(25);
lcd.print(" ");
lcd.setCursor(14,1);
delay(25);
lcd.print(" ");
lcd.setCursor(15,1);
delay(25);
lcd.print("-");
lcd.setCursor(16,1);
delay(25);
lcd.print("-");
} else if (AnalogValue < 200) {
lcd.setCursor(3,1);
lcd.print(" ");
lcd.setCursor(4,1);
delay(25);
lcd.print("-");
lcd.setCursor(5,1);
delay(25);
lcd.print(" ");
lcd.setCursor(6,1);
delay(25);
lcd.print("D");
lcd.setCursor(7,1);
delay(25);
lcd.print("i");
lcd.setCursor(8,1);
delay(25);
lcd.print("m");
lcd.setCursor(9,1);
delay(25);
lcd.print(" ");
lcd.setCursor(10,1);
delay(25);
lcd.print("-");
lcd.setCursor(11,1);
delay(25);
lcd.print(" ");
} else if (AnalogValue < 500) {
lcd.setCursor(3,1);
lcd.print(" ");
lcd.setCursor(4,1);
delay(25);
lcd.print("-");
lcd.setCursor(5,1);
delay(25);
lcd.print(" ");
lcd.setCursor(6,1);
delay(25);
lcd.print("L");
lcd.setCursor(7,1);
delay(25);
lcd.print("i");
lcd.setCursor(8,1);
delay(25);
lcd.print("g");
lcd.setCursor(9,1);
delay(25);
lcd.print("h");
lcd.setCursor(10,1);
delay(25);
lcd.print("t");
lcd.setCursor(11,1);
delay(25);
lcd.print(" ");
lcd.setCursor(12,1);
delay(25);
lcd.print("-");
lcd.setCursor(13,1);
delay(25);
lcd.print(" ");
} else if (AnalogValue < 800) {
lcd.setCursor(3,1);
lcd.print(" ");
lcd.setCursor(4,1);
delay(25);
lcd.print("-");
lcd.setCursor(5,1);
delay(25);
lcd.print(" ");
lcd.setCursor(6,1);
delay(25);
lcd.print("B");
lcd.setCursor(7,1);
delay(25);
lcd.print("r");
lcd.setCursor(8,1);
delay(25);
lcd.print("i");
lcd.setCursor(9,1);
delay(25);
lcd.print("g");
lcd.setCursor(10,1);
delay(25);
lcd.print("h");
lcd.setCursor(11,1);
delay(25);
lcd.print("t");
lcd.setCursor(12,1);
delay(25);
lcd.print(" ");
lcd.setCursor(13,1);
delay(25);
lcd.print("-");
lcd.setCursor(14,1);
delay(25);
lcd.print(" ");
} else {
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(1,1);
delay(25);
lcd.print("-");
lcd.setCursor(2,1);
delay(25);
lcd.print(" ");
lcd.setCursor(3,1);
delay(25);
lcd.print("V");
lcd.setCursor(4,1);
delay(25);
lcd.print("e");
lcd.setCursor(5,1);
delay(25);
lcd.print("r");
lcd.setCursor(6,1);
delay(25);
lcd.print("y");
lcd.setCursor(7,1);
delay(25);
lcd.print(" ");
lcd.setCursor(8,1);
delay(25);
lcd.print("B");
lcd.setCursor(9,1);
delay(25);
lcd.print("r");
lcd.setCursor(10,1);
delay(25);
lcd.print("i");
lcd.setCursor(11,1);
delay(25);
lcd.print("g");
lcd.setCursor(12,1);
delay(25);
lcd.print("h");
lcd.setCursor(13,1);
delay(25);
lcd.print("t");
lcd.setCursor(14,1);
delay(25);
lcd.print(" ");
lcd.setCursor(15,1);
delay(25);
lcd.print("-");
lcd.setCursor(16,1);
delay(25);
lcd.print(" ");
}
break;
}
}
while (true) {
if (millis() - currentMillis >= interval) {
currentMillis = millis();
break;
}
}
}
}```