Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <dht.h>
- #include <LiquidCrystal.h>
- LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
- int sensorPin = 7;
- int buttonPin = 8;
- int relayPin = 9;
- int relayState = LOW;
- int previous = LOW;
- char* modes[] = {"Auto", "On", "Off"};
- int mode = 2;
- dht DHT;
- #define DHT11_PIN 7
- float celsius = 0;
- char celsiusString[30];
- void setup() {
- lcd.begin(16, 2);
- Serial.begin(9600);
- pinMode(sensorPin, OUTPUT);
- pinMode(relayPin, OUTPUT);
- digitalWrite(relayPin, LOW);
- pinMode(buttonPin, INPUT);
- }
- void readTemp() {
- }
- void checkMode() {
- int buttonState = digitalRead(buttonPin);
- if (buttonState == HIGH && previous == LOW){
- mode++;
- if (mode % 3 == 1) { // On
- relayState = HIGH;
- digitalWrite(relayPin, relayState);
- } else if (mode % 3 == 2) { // Off
- relayState = LOW;
- digitalWrite(relayPin, relayState);
- }
- }
- previous = buttonState;
- }
- void autoMode() {
- if (mode % 3 == 0) { // Auto
- if (celsius >= 20.0 && relayState == LOW) {
- relayState = HIGH;
- digitalWrite(relayPin, relayState);
- } else if (celsius <= 17.0 && relayState == HIGH) {
- relayState = LOW;
- digitalWrite(relayPin, relayState);
- }
- }
- }
- void printLcd() {
- int chk = DHT.read11(DHT11_PIN);
- lcd.clear();
- lcd.print("Temp: ");
- lcd.print(DHT.temperature);
- lcd.print((char)223);
- lcd.print("C");
- lcd.setCursor(0,1);
- lcd.print("Mode: ");
- lcd.print(modes[(mode%3)]);
- Serial.print(celsius);
- }
- void loop() {
- readTemp();
- checkMode();
- autoMode();
- printLcd();
- delay(250);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement