#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#include <Adafruit_Sensor.h>
#include <WiFi.h>
#include "globals.h"
#include "functions.h"
#include "constants.h"
void setup()
{
// serial setup
Serial.begin(115200);
Serial.println("hi! from serial monitor...");
// pin config
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_1_PIN, OUTPUT);
pinMode(CANCEL_BUTTON_PIN, INPUT);
pinMode(DOWN_BUTTON_PIN, INPUT);
pinMode(OK_BUTTON_PIN, INPUT);
pinMode(UP_BUTTON_PIN, INPUT);
pinMode(LDR_1_PIN, INPUT);
pinMode(LDR_2_PIN, INPUT);
// pinMode(SERVO_PIN, OUTPUT);
dhtSensor.begin();
servo_motor.attach(SERVO_PIN, 500, 2400);
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS))
{
Serial.println(F("ssd1306 allocation failure"));
Serial.println("exiting program...");
return;
}
Serial.println("display setup complete");
display.clearDisplay();
// This is not a modalpage. It is a splash screen. text is embedded to a bitmap.
display.drawBitmap(0, 0, splashScreen, 128, 64, WHITE);
display.display();
// loads data using preferences object. defaults assigned if not stored in preferences.
load_user_settings();
Serial.println("user settings loaded");
delay(MESSAGE_DELAY);
setup_wifi();
buzzz(200, 2, welcome_notes);
digitalWrite(LED_2_PIN, HIGH);
digitalWrite(LED_1_PIN, HIGH);
delay(DELAY);
digitalWrite(LED_2_PIN, LOW);
digitalWrite(LED_1_PIN, LOW);
Serial.println("configuring mqtt");
mqtt_setup();
Serial.println("configuring time");
configTime(temp_offset_hours * 3600 + temp_offset_minutes * 60, UTC_OFFSET_DST, NTP_SERVER);
display.clearDisplay();
}
void loop()
{
// delay(1000);
// Serial.println("main loop running");
// wifi_check();
brokerConnectMQTT();
update_time_with_check_alarm();
if (digitalRead(OK_BUTTON_PIN) == LOW)
{
delay(200);
buzzz(20, 0, feedback_note);
go_to_menu();
}
float dht = check_temp();
float ldr1 = calc_luminance(analogRead(LDR_1_PIN));
float ldr2 = calc_luminance(analogRead(LDR_2_PIN));
Serial.println(ldr1);
Serial.println(ldr2);
send_mqtt_data(dht);
}