#include #include #include #include #define DHT11_PIN 7 #define photoL1 A0 #define LED 3 #define button 2 #define buzzer 6 #define servoPin 10 BH1750 lightMeter; DHT dht(DHT11_PIN, DHT11); volatile int buttonState; volatile int lightReadL1 = 0; int count; LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { Serial.begin(9600); Serial.print("setting up!\n"); pinMode(LED, OUTPUT); //initialize digital pin LED as an output. pinMode(button, INPUT); pinMode(buzzer, OUTPUT); pinMode(servoPin,OUTPUT); Serial.print("init lcd\n"); lcd.init(); lcd.backlight(); lcd.setCursor(0,0); lcd.printstr("Hello, World!"); lcd.setCursor(0,1); lcd.printstr("hello, Roald!"); dht.begin(20); Serial.print("done setting up!\n"); //Intialize the 12C bus Wire.begin(); //On esp8266 you can select SCL and SDA pins using Wire.begin //For Wemos /Lolin D1 Mini Pro and the Ambient Light shield use Wire.begin(); lightMeter.begin(); Serial.println(F("BH1750 Test begin")); } void loop(){ //Serial.print("["); //Serial.print(count); //Serial.print("] hey\n"); Serial.println("0"); servopulse(servoPin,0); delay(500); Serial.println("90"); servopulse(servoPin,90); delay(500); Serial.println("180"); servopulse(servoPin,180); delay(500); lightReadL1 = analogRead(photoL1); if (lightReadL1 > 300){ digitalWrite(LED, HIGH); } else{ digitalWrite(LED, LOW); } float lux = lightMeter.readLightLevel(); float hum = dht.readTemperature(); float temp = dht.readHumidity(); { Serial.print("hum: "); Serial.print(hum); Serial.print(" temp: "); Serial.print(dht.convertCtoF(temp)); Serial.print(" L1: "); Serial.print(lightReadL1); Serial.print(" PanL: "); Serial.print(lux); Serial.println("lx"); delay(50); } //delay(100); //blink(); buttonState = digitalRead(button); if(buttonState == 0) { digitalWrite(LED, HIGH); birthdaySong(); } else { digitalWrite(LED, LOW); } //delay(100); //count++; } void birthdaySong() { tone(buzzer, 294); delay(250); tone(buzzer, 440); delay(250); tone(buzzer, 392); delay(250); tone(buzzer, 532); delay(250); tone(buzzer, 494); delay(500); tone(buzzer, 392); delay(250); tone(buzzer, 440); delay(250); tone(buzzer, 392); delay(250); noTone(buzzer); tone(buzzer, 587); delay(250); tone(buzzer, 532); delay(500); tone(buzzer, 392); delay(250); tone(buzzer, 784); delay(250); tone(buzzer, 659); delay(250); tone(buzzer, 532); delay(250); tone(buzzer, 494); delay(250); tone(buzzer, 440); delay(250); tone(buzzer, 698); delay(375); tone(buzzer, 659); delay(250); tone(buzzer, 532); delay(250); tone(buzzer, 587); delay(250); tone(buzzer, 532); delay(500); noTone(buzzer); } void blink() { digitalWrite(LED,HIGH); //turn the LED on (HIGH is the voltage level delay(1000); //wait for a second digitalWrite(LED,LOW); //turn the LED off by making the voltage LOW delay(1000); //wait for a second } void servopulse(int pin, int myangle){ int pulsewidth = map(myangle, 0, 180, 500, 2500); for (int i = 0; i < 10; i++){ digitalWrite(pin,HIGH); delayMicroseconds(pulsewidth); digitalWrite(pin,LOW); delay(20-pulsewidth/1000); } }