数码之家

 找回密码
 立即注册
搜索
查看: 1844|回复: 16

[Arduino] 再改电动车TM1629A显示屏 附ESP01-s wifi时钟arduino代码

[复制链接]
发表于 2024-7-23 18:18:24 | 显示全部楼层 |阅读模式
   见前帖
ESP8266改造电动车显示屏为 WIFI语音报时时钟
https://www.mydigit.cn/forum.php?mod=viewthread&tid=459652&fromuid=768940

又搞到一块电动车显示屏,拆开又是1629A驱动集成,板上电源降压部分没用,吹掉单片机及大部分零件,用esp8266大板连接板DIO CLK STB3条数据线及5v电源,
试下全灯点亮,后发现此板有些灯不亮,笔划缺失,遂拆板上没用到的灯换上,并把显示星期的改绿色。






用原先时钟程序测试乱码 ,追了下电路,发现和原先的不同,电路是共阴级







修改代码后正常,壳内空间有限,原大板不适合塞进去,还是改ESP01-s板,壳后面加TYPE-C座,刚好壳后面有缺口可以把esp01-s数据针引出,也方便以后插烧录座烧录。
加语音板和喇叭,连线esp板数据线及电源.





esp板上面用长塑胶板压紧固定在两个大螺丝孔,装上外壳完美显示.





------------
2楼附wifi时钟代码


本帖子中包含更多资源

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

x

打赏

参与人数 4家元 +192 收起 理由
jf201006 + 30 謝謝分享
苏州熊猫 + 30 謝謝分享
家睦 + 120
nokia5320 + 12

查看全部打赏

 楼主| 发表于 2024-7-23 18:19:08 | 显示全部楼层
wifi时钟代码 没语音功能

  1. #include <ESP8266WiFi.h>
  2. #define NTP1 "ntp2.aliyun.com"
  3. #define NTP2 "ntp1.aliyun.com"
  4. #define NTP3 "ntp3.aliyun.com"
  5. struct tm timeinfo;
  6. const char* ssid = "abc";  //改SSID
  7. const char* password = "abc";  //改password
  8. const size_t MaxString = 15;
  9. char oldTimeString[MaxString] = { 0 };
  10. char newTimeString[MaxString] = { 0 };
  11. char oldTimeString1[MaxString] = { 0 };
  12. char newTimeString1[MaxString] = { 0 };
  13. byte tm_buffer[16] = { 0x00 };
  14. int tm_wday,ww,hour,minute,second;
  15. const unsigned char tm_digit[13] = {
  16.   0b1111110, 0b0110000, 0b1101101, 0b1111001, 0b0110011,  // 0-4
  17.   0b1011011, 0b1011111, 0b1110000, 0b1111111, 0b1111011,  // 5-9
  18.   0b0001001,                                              // 10
  19.   0b0000000,                                              // 11
  20.   0b1000001                                               // 12  绿灯+红M
  21. };
  22. int tm_dio = 1;  // D6  nodemcu // 1 tx  esp01-s  
  23. int tm_clk = 3;  // D7          // 3 rx
  24. int tm_stb = 2;  // D8          // 2 io2
  25. void setup() {
  26. // Serial.begin(115200);
  27.   startSTA();
  28.   setClock();
  29.   init(4);
  30. }
  31. void loop() {
  32.   setClock();
  33.   int sec_ge = second % 10;
  34.   int sec_shi = second / 10;
  35.   putDigitAt(sec_shi, 0);
  36.   putDigitAt(sec_ge, 1);
  37.   putDigitAt(sec_shi, 2);
  38.   putDigitAt(sec_ge, 3);
  39.   putDigitAt(12, 13);
  40.   int hour_ge = hour % 10;
  41.   int hour_shi = hour / 10;
  42.   putDigitAt(hour_shi, 8);
  43.   putDigitAt(hour_ge, 9);
  44.   int min_ge = minute % 10;
  45.   int min_shi = minute / 10;
  46.   putDigitAt(min_shi, 10);
  47.   putDigitAt(min_ge, 11);
  48.   putDigitAt(ww, 12);
  49.   writeBuffer();
  50. }
  51. void putDigitAt(byte digit, int pos) {
  52.   for (int i = 0; i < 7; i++) {
  53.     bitWrite(tm_buffer[pos], i, bitRead(tm_digit[digit], 6 - i));
  54.   }
  55. }
  56. void writeBuffer() {
  57.   tm_sendCommand(0x40);
  58.   digitalWrite(tm_stb, LOW);
  59.   tm_sendByte(0xc0);
  60.   for (int i = 0; i < 16; i++) {
  61.     tm_sendByte(tm_buffer<i>);
  62.   }
  63.   digitalWrite(tm_stb, HIGH);
  64. }
  65. void tm_sendCommand(byte data) {
  66.   digitalWrite(tm_stb, LOW);
  67.   tm_sendByte(data);
  68.   digitalWrite(tm_stb, HIGH);
  69. }
  70. void tm_sendByte(byte data) {
  71.   for (int i = 0; i < 8; i++) {
  72.     digitalWrite(tm_clk, LOW);
  73.     digitalWrite(tm_dio, data & 1 ? HIGH : LOW);
  74.     data >>= 1;
  75.     digitalWrite(tm_clk, HIGH);
  76.   }
  77. }
  78. void init(int intensity) {
  79.   pinMode(tm_dio, OUTPUT);
  80.   pinMode(tm_clk, OUTPUT);
  81.   pinMode(tm_stb, OUTPUT);
  82.   digitalWrite(tm_stb, HIGH);
  83.   digitalWrite(tm_clk, HIGH);
  84.   delay(200);
  85.   tm_sendCommand(0x40);
  86.   digitalWrite(tm_stb, LOW);
  87.   tm_sendByte(0xc0);
  88.   for (int i = 0; i < 16; i++)
  89.     tm_sendByte(0x0);
  90.   digitalWrite(tm_stb, HIGH);
  91.   tm_sendCommand(0x03);
  92.   setIntensity(intensity);
  93. }
  94. void setIntensity(int intensity) {
  95.   if (intensity < 0) {
  96.     tm_sendCommand(0x80);
  97.     return;
  98.   }
  99.   tm_sendCommand(0x88 | (intensity % 8));
  100. }
  101. void startSTA() {
  102.   WiFi.disconnect();
  103.   WiFi.mode(WIFI_STA);
  104.   WiFi.begin(ssid, password);
  105.   while (WiFi.status() != WL_CONNECTED) {
  106.     delay(500);
  107.   }
  108.   Serial.println("WiFi connected");
  109. }
  110. void setClock() {
  111.   if (!getLocalTime(&timeinfo)) {
  112.     configTime(8 * 3600, 0, NTP1, NTP2, NTP3);
  113.     return;
  114.   }
  115.   sprintf(
  116.     newTimeString,
  117.     "%d",
  118.     timeinfo.tm_min);
  119.   if (strcmp(newTimeString, oldTimeString) != 0) {
  120.     ww = timeinfo.tm_wday;
  121.     if (ww == 0) ww = 8;
  122.     hour = timeinfo.tm_hour;
  123.     minute = timeinfo.tm_min;
  124.     if (hour < 7) {
  125.       setIntensity(0);
  126.     } else {
  127.       setIntensity(4);
  128.     }
  129.     strcpy(oldTimeString, newTimeString);
  130.   }
  131.   sprintf(
  132.     newTimeString1,
  133.     "%d",
  134.     timeinfo.tm_sec);
  135.   if (strcmp(newTimeString1, oldTimeString1) != 0) {
  136.     second = timeinfo.tm_sec;
  137.     Serial.println(second);
  138.     strcpy(oldTimeString1, newTimeString1);
  139.     if (minute == 0 && second == 0)  // 整点预警
  140.     {
  141.       //
  142.     }
  143.   }
  144. }
复制代码

回复 支持 反对

使用道具 举报

发表于 2024-7-24 07:50:17 | 显示全部楼层
不会搞程序,看看热闹

打赏

参与人数 1家元 +6 收起 理由
vip2128 + 6 熱心會員

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2024-7-24 08:56:07 | 显示全部楼层
一冲动 买了两块全新的电动车显示屏 抽屉里放了一年 难道是等楼主的DIY计划么?

打赏

参与人数 1家元 +6 收起 理由
vip2128 + 6 熱心會員

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2024-7-24 09:06:55 | 显示全部楼层
赶紧跟上,冲

打赏

参与人数 1家元 +6 收起 理由
vip2128 + 6 熱心會員

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2024-7-24 09:33:48 | 显示全部楼层
电动车显示屏显示速度用来显示时间,缼中间两点,觉得怪怪的,不过习惯就好

打赏

参与人数 1家元 +6 收起 理由
vip2128 + 6 熱心會員

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2024-7-24 09:34:17 | 显示全部楼层
电动车显示屏用到1629了?

打赏

参与人数 1家元 +6 收起 理由
vip2128 + 6 熱心會員

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2024-7-26 14:33:18 | 显示全部楼层
加油,可以自己打块板子了。

打赏

参与人数 1家元 +6 收起 理由
vip2128 + 6 熱心會員

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2024-7-31 08:48:26 | 显示全部楼层
请问显示屏是贴片LED 搞的?

打赏

参与人数 1家元 +6 收起 理由
vip2128 + 6 熱心會員

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-2 21:14:18 | 显示全部楼层
gav 发表于 2024-7-31 08:48
请问显示屏是贴片LED 搞的?

是贴片LED,白色绿色红色
回复 支持 反对

使用道具 举报

发表于 2024-8-4 03:07:30 | 显示全部楼层
vip2128 发表于 2024-8-2 21:14
是贴片LED,白色绿色红色

谢谢回复,明白了。
回复 支持 反对

使用道具 举报

发表于 2024-8-14 09:34:08 | 显示全部楼层
电动车显示屏显示速度用来显示时间,缼中间两点,觉得怪怪的,不过习惯就好

打赏

参与人数 1家元 +6 收起 理由
vip2128 + 6 熱心會員

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2024-8-17 21:20:21 | 显示全部楼层
特别佩服这种能变废为宝的人
我电动车还想增加个蓝牙开机的功能,仪表盘都拆不下来

打赏

参与人数 1家元 +6 收起 理由
vip2128 + 6 熱心會員

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2024-8-23 10:40:28 | 显示全部楼层
有点意思,废物利用

打赏

参与人数 1家元 +6 收起 理由
vip2128 + 6 熱心會員

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2024-12-10 14:55:09 | 显示全部楼层
坏手机屏幕是好的能不能搞上去,搞成多功能。
回复 支持 反对

使用道具 举报

发表于 2025-4-13 11:24:43 | 显示全部楼层
有个山水的T20带时钟蓝牙音箱,没几天时钟就不准了,想加ESP8266 WIFI时钟,拆开一看LED也是1629A的驱动,看来可以参考楼主的来做了。
回复 支持 反对

使用道具 举报

发表于 2025-4-15 11:35:14 | 显示全部楼层
入坑单片机,楼主很成功。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-2 05:09 , Processed in 0.156000 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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