#include "DHT.h"
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Servo.h>
#include <Keypad.h>
Servo monServ ;
DHT dht(5, DHT11);
int sen1=1;
int sen2=0;
int bserv=3;
int rel=4;
int led=2;
int x;
int esen1=LOW;
int esen2=LOW;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 4;
byte rowPins[ROWS] = { 9, 8, 7, 6 };
byte colPins[COLS] = { 13, 12, 11, 10 };
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
const char password[] = "0000";
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
pinMode(1,INPUT);
pinMode(0,INPUT);
pinMode(5,INPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(2,OUTPUT);
monServ.attach(bserv);
dht.begin();
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.display();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("Humidity: ");
Serial.println(h);
Serial.print("Temperature: ");
Serial.println(t);
if (t < 24) {digitalWrite(4, LOW);
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,40);
display.print("AC OFF!");
display.display();
}
if (t > 24) {digitalWrite(4, HIGH);
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,40);
display.print("AC ON!");
display.display();
}
int valeurTemperature = t;
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.print("temperature: ");
display.println(t);
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,10);
display.print("humidite: ");
display.println(h);
display.display();
delay(100);
int nesen1 = digitalRead(sen1);
int nesen2 = digitalRead(sen2);
if(nesen1 != esen1)
{
if(nesen1==HIGH)
{
x++;
}
}
esen1 = nesen1;
if(nesen2 != esen2)
{
if(nesen2==HIGH)
{
x--;
}
}
esen2 = nesen2;
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,20);
display.print("Nbr Per = ");
display.println(x);
display.display();
delay(10);
if(x==0){monServ.write(180);
}
else{monServ.write(90);}
if(x!=0) {
digitalWrite(2,HIGH);
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,30);
display.print("light on ");
display.display();
delay(5);
}
else{
digitalWrite(2, LOW);
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,30);
display.print("light off");
display.display();
delay(5);
}
static char enteredPassword[sizeof(password)] = "";
char key = keypad.getKey();
if (key != NO_KEY) {
Serial.print("Key pressed: ");
Serial.println(key);
if (strlen(enteredPassword) < sizeof(password) - 1) {
strcat(enteredPassword, &key);
Serial.print("enter passcode");
Serial.println(enteredPassword);
}
else {
if (strcmp(enteredPassword, password) == 0) {
digitalWrite(2, HIGH);
}
else {
memset(enteredPassword, 0, sizeof(password));
digitalWrite(2,LOW);
}
}
}
}