Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.46 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <Adafruit_GFX.h>
  3. #include <Adafruit_SSD1306.h>
  4. #define SCREEN_WIDTH 128 // OLED display width, in pixels
  5. #define SCREEN_HEIGHT 32 // OLED display height, in pixels
  6. Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
  7.  
  8.  
  9. #include <ESP8266WebServer.h>
  10. #include <NTPClient.h>
  11. #include <WiFiUdp.h>
  12. const long utcOffsetInSeconds = 3600;
  13. const char* ssid       = "Nigeria";
  14. const char* password   = "hondamsx125";      
  15. WiFiUDP ntpUDP;
  16. NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);
  17. ESP8266WebServer server(80);   //Web server object. Will be listening in port 80 (default for HTTP)
  18.  
  19. String strAlarmHour = "";
  20. String strAlarmMinute = "";
  21. String zero = "0";
  22. bool AlarmON = false;
  23. const int buttonPin = 3;
  24. int LED = 16; // output D0
  25. int displayMode = 0;
  26. int buttonState;
  27.  
  28. void StartAlarm() {
  29. AlarmON = true;
  30. digitalWrite(LED, HIGH);
  31. delay(1000);
  32. digitalWrite(LED, LOW);
  33. Serial.println("function startalarm started");
  34. }
  35.  
  36. void indexhtml()  {
  37. String noAlarmSet = "No alarm has been set";
  38. strAlarmHour = server.arg("hour");
  39. strAlarmMinute= server.arg("minute");
  40. if (strAlarmHour == "") {
  41.   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>";
  42.   String bHTML ="</body></html>";
  43.   String preHTML = aHTML + noAlarmSet + bHTML;
  44.   const char *html = preHTML.c_str();
  45.   server.send(200, "text/html", html);
  46. }else {
  47.   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>";
  48.   String bHTML ="</body></html>";
  49.   String preHTML = aHTML + strAlarmHour + ":" + strAlarmMinute + bHTML;
  50.   const char *html = preHTML.c_str();
  51.   server.send(200, "text/html", html);
  52. }
  53. }
  54.  
  55.  
  56. void setup() {
  57.  
  58. Serial.begin(9600);
  59. pinMode(buttonPin, INPUT);
  60. pinMode(LED, OUTPUT); // Sets LED pin(D0) as a output
  61. digitalWrite(LED, LOW); // Sets LED OFF
  62. WiFi.begin(ssid, password); //Connect to the WiFi network
  63.  
  64. while (WiFi.status() != WL_CONNECTED) { //Wait for connection
  65.  
  66. delay(500);
  67. Serial.println("Waiting to connect…");
  68.  
  69. }
  70.  
  71. Serial.print("IP address: ");
  72. Serial.println(WiFi.localIP());  //Print the local IP to access the server
  73. server.on("/", indexhtml);
  74.  
  75. server.begin();                                       //Start the server
  76. Serial.println("Server listening");  
  77. if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
  78.   Serial.println(F("SSD1306 allocation failed"));
  79.   for(;;);
  80. }
  81. }
  82.  
  83.  
  84. void loop() {
  85. timeClient.update();
  86. int currentHours = (timeClient.getHours());
  87. int currentMinutes = (timeClient.getMinutes());
  88. int currentSeconds = (timeClient.getSeconds());
  89. int alarmHour = strAlarmHour.toInt();
  90. int alarmMinute = strAlarmMinute.toInt();
  91. int alarmSecond = 0;
  92.  
  93. int totalCurrentSeconds = currentHours*3600 + currentMinutes*60 + currentSeconds;
  94.  
  95. int totalAlarmSeconds = alarmHour*3600 + alarmMinute*60 + alarmSecond;
  96.  
  97. int totalRemainingSeconds = totalAlarmSeconds - totalCurrentSeconds;
  98.  
  99. int remainingSeconds = totalRemainingSeconds % 60;
  100.  
  101. int remainingMinutes = totalRemainingSeconds / 60;
  102. remainingMinutes = remainingMinutes%60;
  103.  
  104. int remainingHours = totalRemainingSeconds / 3600;
  105.  
  106. if (remainingHours < 0 && remainingMinutes < 0 && remainingSeconds < 0) {
  107.   remainingHours = remainingHours + 24;
  108.   remainingMinutes = remainingMinutes + 60;
  109.   remainingSeconds = remainingSeconds + 60;
  110. }
  111.  
  112. buttonState = digitalRead(buttonPin);
  113. if (buttonState == LOW) {
  114.   displayMode++;
  115.   delay(500);
  116. }
  117.  
  118. if (currentHours == alarmHour && currentMinutes  == alarmMinute)  {
  119.   if (!AlarmON) {
  120.   StartAlarm();
  121.   }
  122. }else
  123. {
  124.   AlarmON = false;
  125. }
  126.  
  127. display.setTextColor(WHITE);
  128. display.setCursor(10, 0);
  129. display.clearDisplay();
  130. if (displayMode == 0) {
  131.   display.setTextSize(1);
  132.   display.println("Current time:");
  133.   display.setTextSize(2);
  134.   if (currentHours < 10)  {
  135.     display.print(zero + currentHours);
  136.   }else
  137.   {
  138.     display.print(currentHours);
  139.   }
  140.   display.print(":");
  141.   if (currentMinutes < 10)  {
  142.     display.print(zero + currentMinutes);
  143.   }else
  144.   {
  145.     display.print(currentMinutes);
  146.   }
  147.   display.print(":");
  148.   if (currentSeconds < 10)  {
  149.     display.println(zero + currentSeconds);
  150.   }else
  151.   {
  152.     display.println(currentSeconds);
  153.   }
  154.  
  155. }else if (displayMode == 1) {
  156.   display.setTextSize(1);
  157.   display.println("Remaining time:");
  158.   display.setTextSize(2);
  159.     if (strAlarmHour == "" && strAlarmMinute == "")  {
  160.       display.print("No alarm set");
  161.     }else
  162.     {
  163.       display.print(remainingHours);
  164.       display.print(":");
  165.       display.print(remainingMinutes);
  166.       display.print(":");
  167.       display.println(remainingSeconds);
  168.     }
  169.    
  170.  
  171. }else {
  172.   displayMode = 0;
  173. }
  174. display.display();
  175.  
  176. /*
  177. display.setTextColor(WHITE);
  178. display.setCursor(10, 0);
  179. display.clearDisplay();
  180. display.setTextSize(1);
  181. display.println("Time:");
  182. display.setTextSize(2);
  183. display.println(currentHours);
  184. display.print(":");
  185. display.print(currentMinutes);
  186. display.print(":");
  187. display.println(currentSeconds);
  188. display.display();
  189. */
  190.  
  191. server.handleClient();    //Handling of incoming requests
  192.  
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement