#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <LiquidCrystal.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define ONE_WIRE_BUS 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int inputPin = 2;
int pirState = LOW;
int val = 0;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup(void)
{
Serial.begin(9600);
sensors.begin();
pinMode(inputPin, INPUT);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
lcd.init();
lcd.backlight();
}
void loop(void){
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0);
float temperatureF = sensors.getTempFByIndex(0);
Serial.print("Celsius temperature: ");
Serial.print(temperatureC);
Serial.print(", Fahrenheit temperature: ");
Serial.println(temperatureF);
delay(1000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 10);
display.clearDisplay();
// display.println("Hello world!");
if (temperatureC >= 0 && temperatureC <= 10) {
display.println("Cool");
delay(1000);
} else if (temperatureC >= 11 && temperatureC <= 30) {
display.println("Hot");
delay(1000);
}
// display.print("Celsius temperature: ");
// display.print(temperatureC);
// display.print(", Fahrenheit temperature: ");
// display.println(temperatureF);
display.display();
val = digitalRead(inputPin);
if (val == HIGH) {
if (pirState == LOW) {
Serial.println("Motion detected!");
lcd.setCursor(2, 0);
led.println("Hello world!");
lcd.clear();
led.println("Motion detected!");
display.clearDisplay();
display.println("Human detected");
display.display();
delay(1000);
pirState = HIGH;
}
} else {
if (pirState == HIGH) {
Serial.println("Motion ended!");
pirState = LOW;
}
}
}