32649| 90
|
[项目] 基于3D打印+Arduino的LED时钟 |
成品效果 ![]() -----------------------------------------------前言--------------------------------------------------- 最近瞎逛Thingiverse找3D模型时,无意间看到某个外国小哥做的Grid LED时钟。觉得挺好看,想到家里刚好缺个时钟。那就动手整个吧。然后开始研究外国小哥的作品,发现他做了好几个版本,还有加长版(如下图),感觉有点长。 --------------------------------------------设计思路------------------------------------------------ 1、翻看外国小哥的制作说明,一开始想直接用他的模型的,但是他的作品不是太长就是太短。短的显示4位数时间(24小时制)有点紧凑,长的我又不是很喜欢。 2、想要显示4位数时间(24小时制),至少都要17x5点阵。还是自己用solidworks画结构吧。 3、一开始想做锂电池供电式的,后来发现这么多灯珠实在耗电,还是选择做插电式的。 4、用Excel模拟排版,方便灯带安装和编程。 -----------------------------------制作过程---------------------------------- 一、材料准备 主要材料清单如下: 1. Arduino Nano及数据线 x 1; 2.DS3231时钟模块 x 1;(功能很强大的一个时钟模块,精度高,且内置温度测量,但是温度误差±3℃) 3. 电源适配器5V/1A适配器(带DC5.5圆孔插头,有多余的usb充电器可以只买个USB转DC5.5电源线) x 1; 4.DC5.5圆孔插座 x 1; 5.WS2812B灯带2米,规格60灯/米,裸板带背胶;推荐灯带购买网址 6.电路板、排针、插座、导线若干(最好是22#线,因为这么多灯珠,电流还是蛮大的)。 7.3D打印结构,模型stl文件
![]() |
LED_clock:15:8: error: no matching function for call to 'DS3231::DS3231()' DS3231 Clock; //定义时钟对象 ^~~~~ In file included from C:\Users\S7\AppData\Local\Temp\arduino_modified_sketch_447217\LED_clock.ino:2:0: d:\Users\S7\Documents\Arduino\libraries\DS3231/DS3231.h:80:3: note: candidate: DS3231::DS3231(uint8_t, uint8_t) DS3231(uint8_t data_pin, uint8_t sclk_pin); ^~~~~~ d:\Users\S7\Documents\Arduino\libraries\DS3231/DS3231.h:80:3: note: candidate expects 2 arguments, 0 provided d:\Users\S7\Documents\Arduino\libraries\DS3231/DS3231.h:77:7: note: candidate: constexpr DS3231::DS3231(const DS3231&) class DS3231 ^~~~~~ d:\Users\S7\Documents\Arduino\libraries\DS3231/DS3231.h:77:7: note: candidate expects 1 argument, 0 provided d:\Users\S7\Documents\Arduino\libraries\DS3231/DS3231.h:77:7: note: candidate: constexpr DS3231::DS3231(DS3231&&) d:\Users\S7\Documents\Arduino\libraries\DS3231/DS3231.h:77:7: note: candidate expects 1 argument, 0 provided C:\Users\S7\AppData\Local\Temp\arduino_modified_sketch_447217\LED_clock.ino: In function 'void ReadDS3231()': LED_clock:108:20: error: 'class DS3231' has no member named 'getSecond' second_now=Clock.getSecond(); ^~~~~~~~~ LED_clock:109:20: error: 'class DS3231' has no member named 'getMinute'; did you mean 'getTime'? minute_now=Clock.getMinute(); ^~~~~~~~~ getTime LED_clock:110:18: error: 'class DS3231' has no member named 'getHour' hour_now=Clock.getHour(h12, PM); ^~~~~~~ LED_clock:111:18: error: 'class DS3231' has no member named 'getDate'; did you mean 'setDate'? date_now=Clock.getDate(); ^~~~~~~ setDate LED_clock:112:19: error: 'class DS3231' has no member named 'getMonth'; did you mean 'getMonthStr'? month_now=Clock.getMonth(Century); ^~~~~~~~ getMonthStr LED_clock:113:18: error: 'class DS3231' has no member named 'getYear'; did you mean 'getTemp'? year_now=Clock.getYear(); ^~~~~~~ getTemp LED_clock:116:20: error: 'class DS3231' has no member named 'getDoW'; did you mean 'setDOW'? week_now = Clock.getDoW();//获取星期 ^~~~~~ setDOW exit status 1 no matching function for call to 'DS3231::DS3231()' 请问这个是为什么? |
改亮度直接可以让时间的显示长一些,不然看时间还要等 一会time_show()中 标红的两个12改大,我试了一下,30比较好.(Adafruit_NeoPixel库亮度范围是0-255),但在这里不要设太大,因为这个程序亮度是渐变的,如果太大的话显示时间会较长,如果要亮度大点的话,可以把循环的步长设大点. for(int j=0; j < 12; j++) { strip.clear();//灭掉所有灯 delay(5); brightness = brightness + fadeAmount; if (brightness == 0 || brightness == 12) { fadeAmount = -fadeAmount ; } 以下是楼主大神的源码 void time_show() { brightness = 0; //LED灯亮度 int fadeAmount = 1;// 亮度渐变值 int R_1; for(int i=0; i<2; i++) { for(int j=0; j < 12; j++) { strip.clear();//灭掉所有灯 delay(5); brightness = brightness + fadeAmount; if (brightness == 0 || brightness == 12) { fadeAmount = -fadeAmount ; } if(brightness > 5 ) { R_1 = 1 ;} else { R_1 = 0 ;} strip.setPixelColor(25, R_1, brightness, 0); strip.setPixelColor(59, R_1, brightness, 0);//显示中间两个点 /*--------------------------*///获取时数十位,发送数据给灯珠 int H_ten = hour_now / 10 % 10; for(int i=1;i<=Hour_ten[H_ten][0];i++) { strip.setPixelColor(Hour_ten[H_ten], R_1, brightness, 0); } /*--------------------------*///获取时数个位,发送数据给灯珠 int H_unit = hour_now / 1 % 10; for(int i=1;i<=Hour_unit[H_unit][0];i++) { strip.setPixelColor(Hour_unit[H_unit], R_1, brightness, 0); } /*--------------------------*///获取分数十位,发送数据给灯珠 int M_ten = minute_now / 10 % 10; for(int i=1;i<=Min_ten[M_ten][0];i++) { strip.setPixelColor(Min_ten[M_ten], R_1, brightness, 0); } /*--------------------------*///获取分数个位,发送数据给灯珠 int M_unit = minute_now / 1 % 10; for(int i=1;i<=Min_unit[M_unit][0];i++) { strip.setPixelColor(Min_unit[M_unit], R_1, brightness, 0); } strip.show();//LED显示数据 delay(100);//延迟 } /*----------------------------------*///整点提示 if(minute_now == 0) { if(second_now < 10) { for(int t = 0; t<3; t++) { digitalWrite(Buzz,HIGH); delay(200); digitalWrite(Buzz,LOW); delay(200); } } } /*-------------------------------------*///整点提示 } } /*-----------------------------------------------------------------*/ |
LED_clock
为什么一直提示 吧 Arduino:1.8.12 (Windows 10), 开发板:"Arduino Nano, ATmega328P" In file included from C:\Users\32003\Documents\arduino代码\LED_clock\LED_clock.ino:3:0: C:\Users\32003\Documents\Arduino\libraries\DS18B20\src/DS18B20.h:5:10: fatal error: OneWire.h: No such file or directory #include <OneWire.h> ^~~~~~~~~~~ compilation terminated. exit status 1 为开发板 Arduino Nano 编译时出错。 在文件 -> 首选项开启 “编译过程中显示详细输出”选项 这份报告会包含更多信息。 ? 有哪位大佬告知一下 |
jokerlzn 发表于 2019-7-27 09:50 在Arduino IDE 管理库里面搜Adafruit_NeoPixel |
© 2013-2023 Comsenz Inc. Powered by Discuz! X3.4 Licensed