/*
Arduino | general
kagura — 3/29/24 at 9:33 PM
https://htp205.carrd.co/
https://discord.com/channels/420594746990526466/556594862502182914/1223445059433660527
excuse me, how do I keep my LCD from flickering and only change the value?
*/
#include <LiquidCrystal_I2C.h>
#include <dht.h>
const int DHT22_PIN = 4;
const int UPDATE_TIME = 2000;
unsigned long prevMillis = 0;
LiquidCrystal_I2C lcd(0x27, 16, 2);
dht DHT;
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
Serial.println("DHT22 Test");
Serial.print("Library v");
Serial.println(DHT_LIB_VERSION);
Serial.println();
randomSeed(analogRead(A0));
}
void loop() {
char displayBuff[16];
char valueBuff[8], tempBuff[8], humidBuff[8];
if (millis() - prevMillis >= UPDATE_TIME) {
prevMillis = millis();
int chk = DHT.read22(DHT22_PIN);
float tempVal = DHT.temperature;
float humidVal = DHT.humidity;
float randomValue = random(0, 1000) / 5.0;
// print data to LCD
// random number
dtostrf(randomValue, 4, 1, valueBuff);
snprintf(displayBuff, 16, "Val %s units ", valueBuff);
lcd.setCursor(0, 0);
lcd.print(displayBuff);
// temperature
dtostrf(tempVal, 4, 1, tempBuff);
snprintf(displayBuff, 12, "T&H %s%cC ", tempBuff, char(223));
lcd.setCursor(0, 1);
lcd.print(displayBuff);
// humidity
dtostrf(humidVal, 3, 0, humidBuff);
snprintf(displayBuff, 5, "%s%% ", humidBuff);
lcd.setCursor(12, 1);
lcd.print(displayBuff);
// print data to serial
Serial.print("Random: ");
Serial.print(randomValue, 1);
Serial.print("\tTemp: ");
Serial.print(tempVal, 1);
Serial.print("\tHumidity: ");
Serial.println(humidVal, 1);
//delay(2000);
}
}