Zegarek

z foreste, 3 miesiące temu, napisane w C++, wyświetlone 46 razy.
URL https://codetab.e3x.pl/view/7f17bd35 Udostępnij
Pobierz wklejkę lub Pokaż surowy tekst
  1. #include <WiFi.h>
  2. #include <Wire.h>
  3. #include <SPI.h>
  4. #include <AT24CX.h>
  5. #include <ESPmDNS.h>
  6. #include <WiFiUdp.h>
  7. #include <ArduinoOTA.h>
  8. #include "RTClib.h"
  9. #include <Adafruit_BME280.h>
  10. #include <Adafruit_ILI9341.h>
  11.  
  12. #define TFT_CLK 18
  13. #define TFT_MISO 19
  14. #define TFT_MOSI 23
  15. #define TFT_DC 13
  16. #define TFT_CS 5
  17. #define TFT_RST 15
  18. #define backlight 33
  19. #define Buzzer 32
  20. #define SCL 22
  21. #define SDA 21
  22. #define button 25
  23.  
  24. #define ILI9341_BLACK       0x0000  ///<   0,   0,   0
  25. #define ILI9341_NAVY        0x000F  ///<   0,   0, 123
  26. #define ILI9341_DARKGREEN   0x03E0  ///<   0, 125,   0
  27. #define ILI9341_DARKCYAN    0x03EF  ///<   0, 125, 123
  28. #define ILI9341_MAROON      0x7800  ///< 123,   0,   0
  29. #define ILI9341_PURPLE      0x780F  ///< 123,   0, 123
  30. #define ILI9341_OLIVE       0x7BE0  ///< 123, 125,   0
  31. #define ILI9341_LIGHTGREY   0xC618  ///< 198, 195, 198
  32. #define ILI9341_DARKGREY    0x7BEF  ///< 123, 125, 123
  33. #define ILI9341_BLUE        0x001F  ///<   0,   0, 255
  34. #define ILI9341_GREEN       0x07E0  ///<   0, 255,   0
  35. #define ILI9341_CYAN        0x07FF  ///<   0, 255, 255
  36. #define ILI9341_RED         0xF800  ///< 255,   0,   0
  37. #define ILI9341_MAGENTA     0xF81F  ///< 255,   0, 255
  38. #define ILI9341_YELLOW      0xFFE0  ///< 255, 255,   0
  39. #define ILI9341_WHITE       0xFFFF  ///< 255, 255, 255
  40. #define ILI9341_ORANGE      0xFD20  ///< 255, 165,   0
  41. #define ILI9341_GREENYELLOW 0xAFE5  ///< 173, 255,  41
  42. #define ILI9341_PINK        0xFC18  ///< 255, 130, 198
  43. #define SEALEVELPRESSURE_HPA (1013.25)
  44. unsigned long maintime = 0;
  45. unsigned long memorytime = 0;
  46. int state = LOW;
  47. int color = ILI9341_NAVY;
  48. const char* ssid = "Sneak network system";
  49. const char* password = "emy8rjx4mtRqnW";
  50. const float adjustment = -1;
  51. int buttonState;
  52. int lastbuttonState = LOW;
  53. int ledState = HIGH;  
  54. unsigned long lastDebounceTime = 0;  
  55. unsigned long debounceDelay = 50;
  56. Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
  57. Adafruit_BME280 bme;  // use I2C interface
  58. int alarm_hour = 18;
  59. int alarm_minute = 15;
  60. int alarm_on_off = 0;
  61.  
  62. RTC_DS1307 rtc;
  63. void alarm();
  64. void lcd();
  65.  
  66. void setup() {
  67.         tft.begin();
  68.         tft.setRotation(3);
  69.         pinMode(backlight, OUTPUT);
  70.         pinMode(Buzzer, OUTPUT);
  71.         pinMode(button, INPUT_PULLUP);
  72.         tft.fillScreen(color);
  73.         rtc.begin();
  74.         bme.begin(0x76);
  75.         Serial.begin(115200);
  76.         Serial.println("Booting");
  77.         WiFi.mode(WIFI_STA);
  78.         WiFi.begin(ssid, password);
  79.         while (WiFi.waitForConnectResult() != WL_CONNECTED) {
  80.                 Serial.println("Connection Failed! Rebooting...");
  81.                 delay(5000);
  82.                 ESP.restart();
  83.         }
  84.  
  85.         // Port defaults to 3232
  86.         // ArduinoOTA.setPort(3232);
  87.  
  88.         // ArduinoOTA.setPassword("admin");
  89.  
  90.         // Password can be set with it's md5 value as well
  91.         // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
  92.         // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");
  93.  
  94.         ArduinoOTA
  95.           .onStart([]() {
  96.                 String type;
  97.                 if (ArduinoOTA.getCommand() == U_FLASH)
  98.                         type = "sketch";
  99.                 else // U_SPIFFS
  100.                   type = "filesystem";
  101.  
  102.                 // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
  103.                 Serial.println("Start updating " + type);
  104.         })
  105.         .onEnd([]() {
  106.                 Serial.println("\nEnd");
  107.         })
  108.         .onProgress([](unsigned int progress, unsigned int total) {
  109.                 Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
  110.         })
  111.         .onError([](ota_error_t error) {
  112.                 Serial.printf("Error[%u]: ", error);
  113.                 if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
  114.                 else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
  115.                 else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
  116.                 else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
  117.                 else if (error == OTA_END_ERROR) Serial.println("End Failed");
  118.         });
  119.  
  120.         ArduinoOTA.begin();
  121.  
  122.         Serial.println("Ready");
  123.         Serial.print("IP address: ");
  124.         Serial.println(WiFi.localIP());
  125.         rtc.adjust(DateTime(2020, 5, 3, 18, 39, 0));
  126. }
  127.  
  128. void loop() {
  129.         int read_state = digitalRead(button);
  130.         ArduinoOTA.handle();
  131.         maintime = millis();
  132.         lcd();
  133.         budzik();
  134.         if (read_state != lastbuttonState)
  135.         {
  136.                 lastDebounceTime = millis();   
  137.         }
  138.         if ((millis() - lastDebounceTime) > debounceDelay) {
  139.                 if (read_state != buttonState) {
  140.                         buttonState = read_state;
  141.                         if (buttonState == HIGH) {
  142.                                 alarm_on_off = !alarm_on_off;
  143.                         }
  144.                 }
  145.         }
  146.         digitalWrite(backlight, ledState);
  147.         lastbuttonState = read_state;
  148. }
  149. void alarm()
  150. {if (maintime - memorytime >= 1000UL)
  151.         {
  152.                 memorytime = maintime;
  153.                 state = !state;
  154.                 digitalWrite(Buzzer, state);
  155.         }
  156. }
  157. void lcd()
  158. {
  159.         DateTime now = rtc.now();
  160.         digitalWrite(backlight, HIGH);
  161.         if ((now.hour()<=18) && (now.hour() >= 19) )
  162.         {
  163.                 color = ILI9341_BLACK;
  164.         }else if ((now.hour()<=19) && (now.hour() >= 20) )
  165.         {
  166.                 tft.fillScreen(color);
  167.         }
  168.        
  169.         tft.setCursor(60, 110);
  170.         tft.setTextColor(ILI9341_RED, color); tft.setTextSize(4);
  171.         tft.print(now.hour(), DEC);
  172.         tft.print(":");
  173.         tft.print(now.minute(), DEC);
  174.         tft.print(":");
  175.         tft.print(now.second(), DEC);
  176.         tft.print("  ");
  177.        
  178.         tft.setCursor(20, 20);
  179.         tft.setTextColor(ILI9341_RED, ILI9341_NAVY); tft.setTextSize(2);
  180.         tft.print(bme.readTemperature() + adjustment);
  181.         tft.print(" ");
  182.         tft.print("C");
  183.         tft.setCursor(20, 40);
  184.         tft.print(bme.readPressure() / 100.0F);
  185.         tft.print(" ");
  186.         tft.print("HPA");
  187.         tft.setCursor(20, 60);
  188.         tft.print(bme.readHumidity());
  189.         tft.print(" ");
  190.         tft.print("%");
  191.         //delay(1000);
  192.         tft.setCursor(80, 90);
  193.         tft.setTextColor(ILI9341_RED, ILI9341_NAVY); tft.setTextSize(2);
  194.         tft.print(now.day());
  195.         tft.print("/");
  196.         tft.print(now.month());
  197.         tft.print("/");
  198.         tft.print(now.year());
  199.         tft.setCursor(80, 160);
  200.         tft.print("alarm");
  201.         tft.setCursor(150,160);
  202.         tft.print(alarm_hour);
  203.         tft.print(":");
  204.         tft.print(alarm_minute);
  205.         tft.print(":");
  206.         tft.print("0");
  207.         tft.print("  ");
  208.         tft.setCursor(1, 160);
  209.         if (alarm_on_off == 0)
  210.         {
  211.                 tft.setTextColor(ILI9341_MAGENTA, color);
  212.                 tft.setCursor(20, 160);
  213.                 tft.print("Off");
  214.                 tft.print(" ");
  215.         }
  216.         if (alarm_on_off == 1)
  217.         {
  218.                 tft.setTextColor(ILI9341_GREEN, color);
  219.                 tft.setCursor(20, 160);
  220.                 tft.print("On");
  221.                 tft.print(" ");
  222.         }
  223. }
  224. void budzik()
  225. {
  226.         DateTime al = rtc.now();
  227.         if ((al.hour() == alarm_hour)  && (al.minute() >= alarm_minute) && (alarm_on_off == 1))
  228.         {
  229.                
  230.                 alarm();
  231.         }
  232. }
  233.  

odpowiedź "Zegarek"

Tutaj możesz odpowiedzieć na wklejkę z góry

captcha