找回密码
 注册
关于网站域名变更的通知
查看: 167|回复: 2
打印 上一主题 下一主题

ESP32获取网络时间并显示源程序 74HC595驱动8个数码管

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-20 10:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
用74HC595驱动8个数码管,通过ESP32获取网络时间并显示!
' m8 y$ d/ q% S/ R$ R9 D7 t1 \7 V" L9 O

& S  [  B+ F  q9 [- K5 T. W+ P& h5 ?
源程序如下:
- K7 ~- G6 P8 o
  • #include <WiFi.h>
  • #include <Arduino.h>
  • #include<time.h>
  • #include <WebServer.h>
  • #include "disp.h"
  • #define NTP1  "ntp1.aliyun.com"
  • #define NTP2  "ntp2.aliyun.com"
  • #define NTP3  "ntp3.aliyun.com"
  • //填写WIFI入网信息
  • String str =
  • "<!DOCTYPE html><html><head><meta charset=\"UTF-8\"><meta name=\"viewport\"content=\"width=device-width, initial-scale=1.0\"><meta http-equiv=\"X-UA-Compatible\"content=\"ie=edge\"><title>daodanjishui的ESP32网页配网</title></head><body><form name=\"my\">显示--:<input type=\"text\"name=\"s\"placeholder=\"输入yys\"id=\"aa\"><br>显示数字:<input type=\"number\"name=\"p\"placeholder=\"输入的会显示在数码管\"id=\"bb\"><br><input type=\"button\"value=\"确定\"onclick=\"wifi()\"></form><script language=\"javascript\">function wifi(){var ssid=my.s.value;var password=bb.value;var xmlhttp=new XMLHttpRequest();xmlhttp.open(\"GET\",\"/HandleVal?ssid=\"+ssid+\"&password=\"+password,true);xmlhttp.send()}</script></body></html>";
  • bool gang=0;
  • int yys888=0;
  • const char* ssid = "CMCC-M9JR";
  • const char* password = "a3n6v83c";
  • int ss=0,hh=0,mm=0;
  • WebServer server(80);
  • void setClock() {
  •   struct tm timeinfo;
  •     if (!getLocalTime(&timeinfo))
  •     {//如果获取失败,就开启联网模式,获取时间
  •          Serial.println("Failed to obtain time");
  •          WiFi.disconnect(false);
  •          WiFi.mode(WIFI_STA);//开启网络
  •          WiFi.begin(ssid, password);
  •          while (WiFi.status() != WL_CONNECTED)
  •     {
  •         delay(500);
  •         Serial.print(".");
  •     }
  •      configTime(8 * 3600, 0, NTP1, NTP2,NTP3);
  •         return;
  •     }
  •     // Serial.println(&timeinfo, "%F %T %A"); // 格式化输出:2021-10-24 23:00:44 Sunday
  •     // Serial.print(asctime(&timeinfo));//默认打印格式:Mon Oct 25 11:13:29 2021
  • //String iii=asctime(&timeinfo);
  • //String hhhn=iii.substring( 17,20 ) ;
  • //qq=hhhn.toInt();
  •     // WiFi.disconnect(true);
  • }
  • void handleRoot() {
  •   server.send(200, "text/html", str);
  • }
  • void HandleVal()
  • {
  •     String wifis = server.arg("ssid");
  •     String wifip = server.arg("password");
  •     yys888=wifip.toInt();
  •     if (wifis=="yys") gang=1;
  •     else gang=0;
  •     Serial.println(wifis);
  •     Serial.println(wifip);
  •     //WiFi.begin(wifis,wifip);
  •   //  WiFi.begin(wifis.c_str(),wifip.c_str());
  • }
  • void handleNotFound() {
  • // digitalWrite(LED_BUILTIN, 0);
  •   String message = "File Not Found\n\n";
  •   message += "URI: ";
  •   message += server.uri();
  •   message += "\nMethod: ";
  •   message += (server.method() == HTTP_GET) ? "GET" : "POST";
  •   message += "\nArguments: ";
  •   message += server.args();
  •   message += "\n";
  •   for (uint8_t i = 0; i < server.args(); i++) {
  •     message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  •   }
  •   server.send(404, "text/plain", message);
  • // digitalWrite(LED_BUILTIN, 1);
  • }
  • void setup()
  • {
  •       pinMode(latchPin,OUTPUT);
  •       pinMode(clockPin,OUTPUT);
  •       pinMode(dataPin,OUTPUT);
  •       Serial.begin(115200);
  •       Serial.println();
  •       //设置ESP32工作模式为无线终端模式
  •      WiFi.mode(WIFI_STA);
  •      WiFi.begin(ssid, password);
  •     while (WiFi.status() != WL_CONNECTED)
  •     {
  •         delay(500);
  •         Serial.print(".");
  •     }
  •     Serial.println("WiFi connected!");
  •     configTime(8 * 3600, 0, NTP1, NTP2,NTP3);
  •     setClock();
  •   Serial.println(ssid);
  •   Serial.print("IP address: ");
  •   Serial.println(WiFi.localIP());
  •     // 从网络时间服务器上获取并设置时间
  •     // 获取成功后芯片会使用RTC时钟保持时间的更新
  •    // server.on("/HandleVal", HTTP_GET, HandleVal);
  •    // server.onNotFound(handleNotFound);
  •   //  WiFi.disconnect(true);
  •   // WiFi.mode(WIFI_OFF);//关闭网络
  •   //  Serial.println("WiFi disconnected!-----");
  • server.on ("/", HTTP_GET, handleRoot); // 绑定‘/pin’地址到handlePin方法处理
  • server.on("/HandleVal", HTTP_GET, HandleVal);
  • server.onNotFound(handleNotFound);
  •   server.begin();
  •   Serial.println("HTTP server started");
  • }
  • void disptime()
  • {
  • if(gang==0){
  • disp(3,10);disp(6,10);
  • disp2(1,hh);
  • disp2(4,mm);
  • disp2(7,ss);
  • }
  • else if (gang==1)
  •     {
  •       if(ss>30)
  •       disp2(1,yys888);
  •       else
  •       disp2(5,yys888);
  •      }
  •   }
  • void getClock() {
  •   struct tm timeinfo2;
  •     if (!getLocalTime(&timeinfo2))
  •     {
  •     }
  • String iii=asctime(&timeinfo2);
  • String hhhn=iii.substring( 17,20 ) ;   //21:35:38
  • ss=hhhn.toInt();
  • String hhhn1=iii.substring( 14,17 ) ;
  • mm=hhhn1.toInt();
  • String hhhn2=iii.substring( 11,14 ) ;
  • hh=hhhn2.toInt();
  • disptime();
  • }
  • void loop()
  • {
  •   //setClock();
  • getClock();
  • server.handleClient();
  • }
  • 3 g+ b2 Q' Z2 t; ~

; `' l! ]! ?7 R, b复制代码
3 c+ [6 E$ A' K( }
  X8 ]' J2 V$ ~DISP.H头文件:& l+ Q6 a2 l6 F8 D& [5 @# V
  • #ifndef DISP_H_
  • #define DISP_H_
  • int clockPin=22;
  • int latchPin=23;
  • int dataPin=21;
  • int i,j;
  • unsigned char num[]={0b00111111, //"0"
  •                      0x06, //"1"
  •                      0x5B, //"2"
  •                      0x4F, //"3"
  •                      0x66, //"4"
  •                      0x6D, //"5"
  •                      0X7D, //"6"
  •                      0X07, //"7"
  •                      0x7F, //"8"
  •                      0X6F,  //"9"
  •                      0b01000000, //"-"
  •                      0,
  • };
  • unsigned char num1[]={0b11110111, //"1"
  •                       0b11111011, //"2"
  •                       0b11111101, //"3"
  •                       0b11111110, //"4"
  •                       0b01111111, //"5"
  •                       0b10111111, //"6"
  •                       0b11011111, //"7"
  •                       0b11101111, //"8"
  • };
  • void disp(unsigned char i,unsigned char j){
  •       shiftOut(dataPin,clockPin,LSBFIRST,num1[i-1]);
  •       shiftOut(dataPin,clockPin,MSBFIRST,num[j]);
  •       digitalWrite(latchPin, HIGH);
  •       delay(1);
  •       digitalWrite(latchPin,LOW);
  • }
  • void disp2(unsigned char k,int n){
  • // int t=30;
  •   int ge=(int)n%10;
  •   int shi=((int)n/10)%10;
  •   int bai=((int)n/100)%10;
  •   int qian=((int)n/1000)%10;
  •   if(n<100)
  •    {
  •     disp(k,shi);
  •     disp(k+1,ge);
  •     }
  •   else
  •   {
  •     disp(k,qian);
  •     disp(k+1,bai);
  •     disp(k+2,shi);
  •     disp(k+3,ge);
  •   }
  • }
  • void cleardisp()
  • {
  •   for(i=0;i<9;i++)
  •   {
  •     disp(i,11);
  •     }
  • }
  • #endif
    $ u. O  c" u( }2 V; U6 G

- o* h! r5 `2 u& q8 |* P

该用户从未签到

2#
发表于 2022-6-20 11:19 | 只看该作者
厉害了,嘿嘿
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-7 02:46 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表