久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3928|回復: 2
打印 上一主題 下一主題
收起左側

點燈科技可以定時控制的Arduino代碼分享

[復制鏈接]
跳轉到指定樓層
樓主
受限于點燈科技貧民版沒有定時的苦惱,我自己在代碼里面加了獲取網絡時間,然后根據本地設置的時間進行定時開關任務,代碼里面已經備注了接線,和按鍵的控制方法,不明白的地方,歡迎留言討論

  1. //接線:輸出口4,按鈕5,oled的SCL接2,SDA接
  2. #include <Arduino.h>
  3. #include <NTPClient.h>
  4. #include <ESP8266WiFi.h>
  5. #include <WiFiUdp.h>
  6. #include <U8g2lib.h>
  7. #ifdef U8X8_HAVE_HW_I2C
  8. #include <Wire.h>
  9. #endif
  10. #define BLINKER_WIFI
  11. #define BLINKER_DUEROS_OUTLET
  12. #include <Blinker.h>
  13. char auth[] = "76ce30884a64";
  14. char ssid[] = "MERCURY_0FE8";
  15. char pswd[] = "12345678";
  16. #define BUTTON_1 "ButtonKey"
  17. BlinkerButton Button1(BUTTON_1);
  18. const int led = 4; ////IO口
  19. uint8_t bedroomdoorswitch = 5; //按鈕開關
  20. bool oState = false;
  21. String str = "";//定義字符串為空,后面會用到,你這里不定義,后面用到的時候他會告訴你字符串沒有定義
  22. String hour1 = "";
  23. String min1 = "";
  24. String sec1 = "";
  25. int timeZone = 8; //東八區的時間
  26. WiFiUDP ntpUDP;
  27. #include <string.h>
  28. String sethourK = "22";//幾點比如輸入01表示1點,13表示13點
  29. String setminK = "15";//幾分開比如輸入05表示5分,22表示22分
  30. ////////////////////////////
  31. String sethourG = "22"; //幾點
  32. String setminG = "16";//幾分關
  33. unsigned long lastmill = 0;

  34. NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", timeZone * 3600, 60000);
  35. U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 2, /* data=*/ 0, /* reset=*/ U8X8_PIN_NONE);   // All Boards without Reset of the Display
  36. //////////////////////////////////
  37. void setup() {
  38.   Serial.begin(9600);
  39.   pinMode(bedroomdoorswitch, INPUT_PULLUP);
  40.   BLINKER_DEBUG.stream(Serial);
  41.   BLINKER_DEBUG.debugAll();
  42.   Blinker.begin(auth, ssid, pswd);
  43.   Blinker.attachData(dataRead);
  44.   BlinkerDuerOS.attachPowerState(duerPowerState);
  45.   BlinkerDuerOS.attachQuery(duerQuery);
  46.   pinMode(led, OUTPUT);
  47.   digitalWrite(led, LOW);
  48.   u8g2.begin();
  49.   u8g2.enableUTF8Print();
  50.   WiFi.begin(ssid, pswd);
  51.   while ( WiFi.status() != WL_CONNECTED ) {
  52.     delay ( 500 );
  53.     Serial.print ( "." );
  54.   }
  55.   timeClient.begin();
  56. }
  57. void button1_callback(const String & state) {
  58.   BLINKER_LOG("get button state: ", state);
  59.   if (state == BLINKER_CMD_ON) {
  60.     BLINKER_LOG("Toggle on!");
  61.     Button1.icon("icon_1");
  62.     Button1.color("#FFFFFF");
  63.     Button1.text("Your button name or describe");
  64.     Button1.print("on");
  65.     oState = true;
  66.   }
  67.   else if (state == BLINKER_CMD_OFF) {
  68.     BLINKER_LOG("Toggle off!");
  69.     Button1.icon("icon_1");
  70.     Button1.color("#FFFFFF");
  71.     Button1.text("Your button name or describe");
  72.     Button1.print("off");
  73.     oState = false;
  74.   }
  75.   BlinkerDuerOS.powerState(oState ? "on" : "off");
  76.   BlinkerDuerOS.report();
  77.   digitalWrite(led, oState);
  78. }
  79. void duerPowerState(const String & state) {
  80.   BLINKER_LOG("need set power state: ", state);
  81.   if (state == BLINKER_CMD_ON) {
  82.     digitalWrite(led, HIGH);
  83.     BlinkerDuerOS.powerState("on");
  84.     BlinkerDuerOS.print();
  85.     oState = true;
  86.   }
  87.   else if (state == BLINKER_CMD_OFF) {
  88.     digitalWrite(led, LOW);
  89.     BlinkerDuerOS.powerState("off");
  90.     BlinkerDuerOS.print();
  91.     oState = false;
  92.   }
  93. }
  94. void duerQuery(int32_t queryCode) {
  95.   BLINKER_LOG("DuerOS Query codes: ", queryCode);
  96.   switch (queryCode)
  97.   {
  98.     case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
  99.       BLINKER_LOG("DuerOS Query power state");
  100.       BlinkerDuerOS.powerState(oState ? "on" : "off");
  101.       BlinkerDuerOS.print();
  102.       break;
  103.     case BLINKER_CMD_QUERY_TIME_NUMBER :
  104.       BLINKER_LOG("DuerOS Query time");
  105.       BlinkerDuerOS.time(millis());
  106.       BlinkerDuerOS.print();
  107.       break;
  108.     default :
  109.       BlinkerDuerOS.powerState(oState ? "on" : "off");
  110.       BlinkerDuerOS.print();
  111.       break;
  112.   }
  113. }
  114. void dataRead(const String & data) {
  115.   BLINKER_LOG("Blinker readString: ", data);
  116.   BlinkerDuerOS.powerState("off");
  117.   BlinkerDuerOS.report();
  118. }
  119. void timer() {
  120.   timeClient.update();
  121.   str = timeClient.getFormattedTime();//顯示獲取的時間,比如22:05:20
  122.   hour1 = str.substring(0, 2); //shi//截取小時
  123.   min1 = str.substring(3, 5); //fen截取分鐘
  124.   sec1 = str.substring(6, 8); //miao截取秒
  125.   /*Serial.println(timeClient.getFormattedTime());
  126.     Serial.println(hour1);//串口輸出
  127.     Serial.println(min1);
  128.     Serial.println(sec1);
  129.     Serial.print("已設置開燈時間:");
  130.     Serial.print(sethourK);
  131.     Serial.print("點");
  132.     Serial.print(setminK);
  133.     Serial.println("分");
  134.     Serial.print("已設置關燈時間:");
  135.     Serial.print(sethourG);
  136.     Serial.print("點");
  137.     Serial.print(setminG);
  138.     Serial.println("分");*/
  139.   if (hour1 == sethourK and min1 == setminK) { //如果設置的小時等于獲取的小時
  140.     //digitalWrite(led, HIGH);
  141.     oState =1;
  142.     Serial.println("已開燈");
  143.   }
  144.   if (hour1 == sethourG and min1 == setminG) { //如果設置的小時等于獲取的小時
  145.     //digitalWrite(led, LOW);
  146.     oState =0;
  147.     Serial.println("已關燈");
  148.   }
  149. }
  150. void oled() {
  151.   u8g2.clearBuffer();
  152.   u8g2.setFont(u8g2_font_unifont_t_chinese2);  //設置OLED顯示的字體,需要支持的字體才行,可以去示例里面看
  153.   u8g2.setFontDirection(0);//不知道
  154.   u8g2.clearBuffer();//清空原來存在oled的圖像
  155.   u8g2.setCursor(0, 15);//設置開始顯示的位置
  156.   u8g2.print("開時間:");//顯示的內容,用的print,就好比打印機打印
  157.   u8g2.setCursor(58, 15);
  158.   u8g2.print(sethourK);
  159.   u8g2.setCursor(74, 15);
  160.   u8g2.print(":");
  161.   u8g2.setCursor(81, 15);
  162.   u8g2.print(setminK);
  163.   u8g2.setCursor(0, 60);//設置開始顯示的位置
  164.   u8g2.print("關時間:");//顯示的內容,用的print,就好比打印機打印
  165.   u8g2.setCursor(58, 60);
  166.   u8g2.print(sethourG);
  167.   u8g2.setCursor(74, 60);
  168.   u8g2.print(":");
  169.   u8g2.setCursor(81, 60);
  170.   u8g2.print(setminG);
  171.   u8g2.setFont(u8g2_font_inb16_mf);
  172.   u8g2.setCursor(0, 40);//
  173.   u8g2.print(str);    //
  174.   u8g2.sendBuffer();
  175. }
  176. void key() {
  177.   if (digitalRead(bedroomdoorswitch) == LOW)
  178.     delay(50);
  179.   if (digitalRead(bedroomdoorswitch) == LOW) {
  180.     oState = !oState;
  181.   }
  182.   while (digitalRead(bedroomdoorswitch) == LOW) {}
  183.   digitalWrite(led, oState);
  184. }
  185. void loop() {
  186.   Blinker.run();
  187.   timer();
  188.   if (lastmill - millis() > 1000) {
  189.     oled();
  190.   }
  191.   key();
  192.   lastmill = millis();
  193.   digitalWrite(led, oState);
  194. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1050762 發表于 2022-11-15 21:34 | 只看該作者
謝謝樓主分享,希望可以把實物照片和電路連接圖發一下,再次感謝!
回復

使用道具 舉報

板凳
ID:21740 發表于 2022-12-11 22:29 | 只看該作者
謝謝分享!!!請問怎嗎編譯不成功。

2022-12-09_115053.png (10.03 KB, 下載次數: 148)

2022-12-09_115053.png
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品视频免费在线 | 香蕉视频1024| 亚洲精品在线免费看 | 国产精品久久久久久久久免费 | 国内成人免费视频 | 国产精品一区二区精品 | 国产精品视频网站 | 欧美精品在欧美一区二区 | 久久精品视频一区二区 | 久久av一区二区三区 | 一级毛片高清 | 欧美黄页 | 91免费在线视频 | 免费视频成人国产精品网站 | 国产欧美久久精品 | 黄色大片观看 | www.夜夜骑.com | 九九亚洲| 欧美成人精品一区二区男人看 | 亚洲在线免费观看 | 国产91精品久久久久久久网曝门 | 91日韩 | 久久1区| 亚洲综合色视频在线观看 | 日本视频免费观看 | 精品毛片视频 | 天天综合久久 | 成人午夜毛片 | a在线观看免费 | 亚洲激情在线观看 | 国产精品视频综合 | 一区二区在线 | 羞羞视频网站 | 国内自拍视频在线观看 | 中文字幕人成乱码在线观看 | 久久在线看| 天天草夜夜骑 | 国产精品一区二区三区久久久 | 亚洲免费在线播放 | 国内精品视频免费观看 | 在线日韩中文字幕 |