#include "DHTesp.h"
// change to soil sensor
const int dhtSensorPin = 26;
const int ledR = 4;
const int ledG = 5;
const int ledB = 18;
float tempReading = 0.0;
// change to soil sensor
DHTesp dhtSensor;
String mood_list[] = {"cry", "sad", "neutral", "happy", "laugh"};
int mood_index = 0;
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
// will change to soil sensor
dhtSensor.setup(dhtSensorPin, DHTesp::DHT22);
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
setRGB(255, 0, 0);
delay(500);
setRGB(0, 0, 0);
delay(200);
setRGB(0, 255, 0);
delay(500);
setRGB(0, 0, 0);
delay(200);
setRGB(0, 0, 255);
delay(500);
setRGB(0, 0, 0);
delay(1000);
}
void loop() {
// Read temperature
tempReading = dhtSensor.getTemperature();
// Check for errors
if (isnan(tempReading) || tempReading == -999) {
Serial.println("Failed to read from DHT sensor!");
delay(1000); // Wait a bit before retrying
return;
}
setColor(mood_list[mood_index]);
mood_index = (mood_index + 1) % 5;
delay(2000);
}
void blinkRed() {
setRGB(255,0,0);
delay(100);
setRGB(0,0,0);
delay(100);
}
void blinkAqua()
{
setRGB(255, 255, 0);
delay(1000);
setRGB(0, 0, 0);
delay(1000);
}
void setColor(String mood) {
if (mood == "cry") {
Serial.println("Mood is " + mood + "showing dark blue colour");
showDarkBlue();
} else if (mood == "sad") {
Serial.println("Mood is " + mood + "showing blue colour");
showBlue();
} else if (mood == "neutral") {
Serial.println("Mood is " + mood + "showing green colour");
showGreen();
} else if (mood == "happy") {
Serial.println("Mood is " + mood + "showing orange colour");
showOrange();
} else if (mood == "laugh") {
Serial.println("Mood is " + mood) + "showing yellow colour";
showYellow();
}
}
void showDarkBlue()
{
setRGB(0, 0, 85);
}
void showBlue()
{
setRGB(20, 20, 220);
// setRGB(20, 20, 260);
}
void showGreen()
{
setRGB(0, 255, 0);
}
void showOrange()
{
setRGB(255, 140, 0);
}
void showYellow()
{
setRGB(255, 255, 0);
}
void setRGB(int r, int g, int b)
{
if (r > 255 || r < 0 || g > 255 || g < 0 || b > 255 || b < 0)
{
Serial.println("Value given is out of range!");
return;
}
analogWrite(ledR, r);
analogWrite(ledG, g);
analogWrite(ledB, b);
}