Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
- #define SCREEN_WIDTH 128 // OLED display width, in pixels
- #define SCREEN_HEIGHT 32 // OLED display height, in pixels
- Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
- #include <ESP8266WebServer.h>
- #include <NTPClient.h>
- #include <WiFiUdp.h>
- const long utcOffsetInSeconds = 3600;
- const char* ssid = "Nigeria";
- const char* password = "hondamsx125";
- WiFiUDP ntpUDP;
- NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);
- ESP8266WebServer server(80); //Web server object. Will be listening in port 80 (default for HTTP)
- String strAlarmHour = "";
- String strAlarmMinute = "";
- bool AlarmON = false;
- const int buttonPin = 3;
- int LED = 16; // output D0
- int displayMode = 0;
- int buttonState;
- void StartAlarm() {
- AlarmON = true;
- digitalWrite(LED, HIGH);
- delay(1000);
- digitalWrite(LED, LOW);
- Serial.println("function startalarm started");
- }
- void indexhtml() {
- String noAlarmSet = "No alarm has been set";
- strAlarmHour = server.arg("hour");
- strAlarmMinute= server.arg("minute");
- if (strAlarmHour == "") {
- String aHTML ="<!DOCTYPE html><html><body><h1>hello world</h1><form target=\"_self\" method=\"GET\">Hour:<br><input type=\"number\" name=\"hour\" min=\"0\" max=\"23\"><br>Minute:<br><input type=\"number\" name=\"minute\" min=\"0\" max=\"59\"<br><br><input type=\"submit\" value=\"Submit\"></form>";
- String bHTML ="</body></html>";
- String preHTML = aHTML + noAlarmSet + bHTML;
- const char *html = preHTML.c_str();
- server.send(200, "text/html", html);
- }else {
- String aHTML ="<!DOCTYPE html><html><body><h1>hello world</h1><form target=\"_self\" method=\"GET\">Hour:<br><input type=\"number\" name=\"hour\" min=\"0\" max=\"23\"><br>Minute:<br><input type=\"number\" name=\"minute\" min=\"0\" max=\"59\"<br><br><input type=\"submit\" value=\"Submit\"></form>";
- String bHTML ="</body></html>";
- String preHTML = aHTML + strAlarmHour + ":" + strAlarmMinute + bHTML;
- const char *html = preHTML.c_str();
- server.send(200, "text/html", html);
- }
- }
- void setup() {
- Serial.begin(9600);
- pinMode(buttonPin, INPUT);
- pinMode(LED, OUTPUT); // Sets LED pin(D0) as a output
- digitalWrite(LED, LOW); // Sets LED OFF
- WiFi.begin(ssid, password); //Connect to the WiFi network
- while (WiFi.status() != WL_CONNECTED) { //Wait for connection
- delay(500);
- Serial.println("Waiting to connect…");
- }
- Serial.print("IP address: ");
- Serial.println(WiFi.localIP()); //Print the local IP to access the server
- server.on("/", indexhtml);
- server.begin(); //Start the server
- Serial.println("Server listening");
- if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
- Serial.println(F("SSD1306 allocation failed"));
- for(;;);
- }
- }
- void loop() {
- timeClient.update();
- int currentHours = (timeClient.getHours());
- int currentMinutes = (timeClient.getMinutes());
- int currentSeconds = (timeClient.getSeconds());
- int alarmHour = strAlarmHour.toInt();
- int alarmMinute = strAlarmMinute.toInt();
- int alarmSecond = 0;
- int totalCurrentSeconds = currentHours*3600 + currentMinutes*60 + currentSeconds;
- int totalAlarmSeconds = alarmHour*3600 + alarmMinute*60 + alarmSecond;
- int totalRemainingSeconds = totalAlarmSeconds - totalCurrentSeconds;
- int remainingSeconds = totalRemainingSeconds % 60;
- int remainingMinutes = totalRemainingSeconds / 60;
- remainingMinutes = remainingMinutes%60;
- int remainingHours = totalRemainingSeconds / 3600;
- if (remainingHours < 0 && remainingMinutes < 0 && remainingSeconds < 0) {
- remainingHours = remainingHours + 24;
- remainingMinutes = remainingMinutes + 60;
- remainingSeconds = remainingSeconds + 60;
- }
- buttonState = digitalRead(buttonPin);
- if (buttonState == LOW) {
- displayMode++;
- delay(500);
- }
- if (currentHours == alarmHour && currentMinutes == alarmMinute) {
- if (!AlarmON) {
- StartAlarm();
- }
- }else
- {
- AlarmON = false;
- }
- display.setTextColor(WHITE);
- display.setCursor(10, 0);
- display.clearDisplay();
- if (displayMode == 0) {
- display.setTextSize(1);
- display.println("Current time:");
- display.setTextSize(2);
- display.print(currentHours);
- display.print(":");
- display.print(currentMinutes);
- display.print(":");
- display.println(currentSeconds);
- }else if (displayMode == 1) {
- display.setTextSize(1);
- display.println("Remaining time:");
- display.setTextSize(2);
- display.print(remainingHours);
- display.print(":");
- display.print(remainingMinutes);
- display.print(":");
- display.println(remainingSeconds);
- }else {
- displayMode = 0;
- }
- display.display();
- /*
- display.setTextColor(WHITE);
- display.setCursor(10, 0);
- display.clearDisplay();
- display.setTextSize(1);
- display.println("Time:");
- display.setTextSize(2);
- display.println(currentHours);
- display.print(":");
- display.print(currentMinutes);
- display.print(":");
- display.println(currentSeconds);
- display.display();
- */
- server.handleClient(); //Handling of incoming requests
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement