You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.6 KiB
72 lines
1.6 KiB
#include <dht11.h>
|
|
|
|
dht11 DHT11;
|
|
|
|
int digitalPIN = 4;
|
|
int blue_light = 9;
|
|
int red_light = 8;
|
|
int green_light = 10;
|
|
|
|
int pinSelectable[3] = {7, 6, 5}; // [s0, s1, s2]
|
|
int outputMap[8][3] = {
|
|
{LOW, LOW, LOW}, // y0 DHT Sensor
|
|
{LOW, LOW, HIGH}, // y1 Raindrop Sensor
|
|
{LOW, HIGH, LOW}, // y2
|
|
{LOW, HIGH, HIGH}, // y3
|
|
{HIGH, LOW, LOW}, // y4
|
|
{HIGH, LOW, HIGH}, // y5
|
|
{HIGH, HIGH, LOW}, // y6
|
|
{HIGH, HIGH, HIGH} // y7
|
|
};
|
|
|
|
void setup() {
|
|
pinMode(pinSelectable[0], OUTPUT);
|
|
pinMode(pinSelectable[1], OUTPUT);
|
|
pinMode(pinSelectable[2], OUTPUT);
|
|
|
|
pinMode(red_light, OUTPUT);
|
|
pinMode(green_light, OUTPUT);
|
|
pinMode(blue_light, OUTPUT);
|
|
|
|
pinMode(digitalPIN, INPUT);
|
|
|
|
Serial.begin(9600);
|
|
}
|
|
|
|
void loop() {
|
|
setInputMap(0);
|
|
int chk = DHT11.read(digitalPIN);
|
|
|
|
Serial.print("Humidity (%): ");
|
|
Serial.println((float)DHT11.humidity, 2);
|
|
|
|
Serial.print("Temperature (C): ");
|
|
Serial.print("Testing");
|
|
Serial.println((float)DHT11.temperature, 2);
|
|
|
|
setInputMap(1);
|
|
int resultRain = digitalRead(digitalPIN);
|
|
if ( resultRain == 0 ) {
|
|
turnRGBLight(LOW, LOW, LOW);
|
|
Serial.println("Rain detected");
|
|
} else {
|
|
turnRGBLight(LOW, HIGH, LOW);
|
|
delay(500);
|
|
turnRGBLight(LOW, LOW, HIGH);
|
|
}
|
|
|
|
delay(1000);
|
|
}
|
|
|
|
void turnRGBLight(int red, int green, int blue) {
|
|
digitalWrite(red_light, red);
|
|
digitalWrite(green_light, green);
|
|
digitalWrite(blue_light, blue);
|
|
}
|
|
|
|
void setInputMap(int index) {
|
|
int pinMap[3] = {outputMap[index]};
|
|
for ( int i = 0; i < (sizeof(pinMap) / sizeof(*pinMap)); i++ ) {
|
|
digitalWrite(pinSelectable[i], pinMap[i]);
|
|
}
|
|
}
|
|
|