136 lines
2.5 KiB
C++
136 lines
2.5 KiB
C++
#include <Wire.h>
|
|
#include <LiquidCrystal_I2C.h>
|
|
#include <DHT.h>
|
|
#include <BH1750.h>
|
|
|
|
#define DHT11_PIN 7
|
|
#define photoL1 A0
|
|
#define LED 3
|
|
#define button 2
|
|
#define buzzer 6
|
|
|
|
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);
|
|
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");
|
|
}
|
|
|
|
void loop()// the loop function runs over and over again forever
|
|
{
|
|
//Serial.print("[");
|
|
//Serial.print(count);
|
|
//Serial.print("] hey\n");
|
|
|
|
lightReadL1 = analogRead(photoL1);
|
|
if (lightReadL1 > 300){
|
|
digitalWrite(LED, HIGH);
|
|
}
|
|
else{
|
|
digitalWrite(LED, LOW);
|
|
}
|
|
|
|
float hum;
|
|
float temp;
|
|
temp = dht.readTemperature();
|
|
hum = dht.readHumidity();
|
|
{
|
|
Serial.print("humidity: ");
|
|
Serial.print(hum);
|
|
Serial.print(" temperature: ");
|
|
Serial.print(dht.convertCtoF(temp));
|
|
Serial.print(" L1 light: ");
|
|
Serial.println(lightReadL1);
|
|
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
|
|
}
|