#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd(0x27,1,2);
#define NOTE_C1 33
#define NOTE_A1 55
#define BUTTON_PIN 12
const float BETA = 3950;
int ledPinr = 11;                // choose the pin for the LED
int ledPint = 10;
int ledPinw = 9;
int inputPin = 13;  
int bz=8;             // choose the input pin (for PIR sensor)
int bzz=7;
int pirState = LOW;             // we start, assuming no motion detected
int val = 0;                    // variable for reading the pin status


void setup() {
  pinMode(ledPinr,OUTPUT);      // declare LED as output
  pinMode(ledPint,OUTPUT);
  pinMode(ledPinw,OUTPUT);
  pinMode(inputPin, INPUT);     // declare sensor as input
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  val = digitalRead(inputPin);  // read input value
  int analogValue = analogRead(A5);
  float wendu = 1 / (log(1 / (1023. /analogValue - 1)) / BETA + 1.0/298.15)-273.15;
  int value = digitalRead((BUTTON_PIN));
  if (val == HIGH) {            // check if the input is HIGH
    digitalWrite(ledPinr,HIGH);  // turn LED ON
    if (pirState == LOW) {
      // we have just turned on
      Serial.println("Motion detected!");
      // We only want to print on the output change, not state
      lcd.init();
      lcd.backlight();
      lcd.setCursor(4,0);
      lcd.print("weixian!!");      
      lcd.setCursor(4,1);
      lcd.print("youren!!");
      pirState = HIGH;
      tone(8,3729,300);
      delay(300);
      tone(8,NOTE_A1,300);
      delay(300);
      
      tone(8,3729,300);
      delay(300);
      tone(8,NOTE_A1,300);
      delay(300);
      
      tone(8,3729,300);
      delay(300);
      tone(8,NOTE_A1,300);
      delay(300);
      
      tone(8,3729,300);
      delay(300);
      tone(8,NOTE_A1,300);
      delay(300);
      
      tone(8,3729,300);
      delay(300);
      tone(8,NOTE_A1,300);
      delay(300);
      
      tone(8,3729,300);
      delay(300);
      tone(8,NOTE_A1,300);
      delay(300);
      
      tone(8,3729,300);
      delay(300);
      tone(8,NOTE_A1,300);
      delay(300);/*
      tone(8,1319,300);
      delay(300);
      tone(8,NOTE_C1,300);
      delay(300);
      tone(8,988,300);
      delay(300);

      tone(8,3729,300);
      delay(300);
      tone(8,NOTE_A1,300);
      delay(300);
      tone(8,1319,300);
      delay(300);
      tone(8,NOTE_C1,300);
      delay(300);
      tone(8,988,300);
      delay(300);

      tone(8,3729,300);
      delay(300);
      tone(8,NOTE_A1,300);
      delay(300);
      tone(8,1319,300);
      delay(300);
      tone(8,NOTE_C1,300);
      delay(300);
      tone(8,988,300);
      delay(300);*/
      
    }
  } else {
    digitalWrite(ledPinr, LOW); // turn LED OFF
    if (pirState == HIGH) {
      // we have just turned of
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }
  if(wendu>30)
  {
    Serial.println("tmp:");
    Serial.println(wendu);
    digitalWrite(ledPint,HIGH);
    lcd.init();
    lcd.backlight();

    lcd.setCursor(4,0);
    lcd.print("hot!hot!");      
    lcd.setCursor(5,1);
    lcd.print(wendu);
    
    tone(7,1319,300);
    delay(300);
    tone(7,NOTE_C1,300);
    delay(300);
    tone(7,988,300);
    delay(300);  

    tone(7,1319,300);
    delay(300);
    tone(7,NOTE_C1,300);
    delay(300);
    tone(7,988,300);
    delay(300); 

    tone(7,1319,300);
    delay(300);
    tone(7,NOTE_C1,300);
    delay(300);
    tone(7,988,300);
    delay(300);

    tone(7,1319,300);
    delay(300);
    tone(7,NOTE_C1,300);
    delay(300);
    tone(7,988,300);
    delay(300);

    tone(7,1319,300);
    delay(300);

  }
  else{
    noTone(7);
    digitalWrite(ledPint, LOW);
  }

  if(value == LOW)
  {
    /*Serial.println(" pressed");*/
    digitalWrite(ledPinr,HIGH);
    digitalWrite(ledPint,HIGH);
    digitalWrite(ledPinw,HIGH);
    lcd.init();
    lcd.backlight();

    lcd.setCursor(4,0);
    lcd.print("weixian!");      
    lcd.setCursor(4,1);
    lcd.print("qiujiu!!");
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);

    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);

    tone(8,NOTE_A1,300);
    delay(300);
    tone(8,NOTE_A1,300);
    delay(300);
    tone(8,NOTE_A1,300);
    delay(300);

    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);

    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);

    tone(8,NOTE_A1,300);
    delay(300);
    tone(8,NOTE_A1,300);
    delay(300);
    tone(8,NOTE_A1,300);
    delay(300);

    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);

    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);

    tone(8,NOTE_A1,300);
    delay(300);
    tone(8,NOTE_A1,300);
    delay(300);
    tone(8,NOTE_A1,300);
    delay(300);

    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);

    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);
    tone(7,988,300);
    delay(300);

  }
  else{
    digitalWrite(ledPinr, LOW);
    digitalWrite(ledPint, LOW);
    digitalWrite(ledPinw, LOW);
  }
 
  
  
 
}