#include <Servo.h>
//LED
int led = 13;
int gndled = 6;
const int valldr = A0;// output analog quangtro
int valpir = 2; //output pir chuyendong
int pirpower = 12;
float nhietdochuan = 24;
int buzzer = 9;
int gndbuzzer = 3;
Servo myservo;
int pos = 10; //control signal
const float BETA = 3950; //he so tro nhiet
void setup() {
  pinMode(led, OUTPUT);
  pinMode(gndled, OUTPUT);
  pinMode(pirpower,OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(gndbuzzer, OUTPUT);
  myservo.attach(10);
  Serial.begin(9600);
}
void loop() {
  digitalWrite(gndled, LOW);
  digitalWrite(gndbuzzer,LOW);
  digitalWrite(pirpower,HIGH);
  int gt = analogRead(valldr); //luu giatri quang tro
  int gt1 = digitalRead(valpir);//giatri chuyen dong
  Serial.print("LDR value:"); //gia tri quantro
  Serial.println(gt);
  delay(1000);
  Serial.println("PIR value:");
  Serial.println(gt1);
  delay(1000);
  int val = analogRead(A1);
  float celsius = 1 / (log(1 / (1023. / val - 1)) / BETA + 1.0 / 298.15) - 273.15;
  Serial.print("Nhiet do:");
  Serial.print(celsius);
  Serial.println("℃");
  delay(1000);
  if(gt>900){
      digitalWrite(led, HIGH);
    
    }
  if(gt<=900){
    digitalWrite(led, LOW);
  }
  if(gt1== HIGH){
      for(pos =0;pos<=180;pos++){
      myservo.write(pos);
  
      digitalWrite(led, HIGH);
  }
  }
  if(gt1 == LOW){
    for(pos =180;pos>=1;pos--){
      myservo.write(pos);
  }
  }
  if(celsius > nhietdochuan){
    tone(buzzer,1000);
    for(pos =0;pos<=180;pos++){
      myservo.write(pos);
    }
  }
  else{
    noTone(buzzer);
    
  }
}