本帖最后由 派大星ym 于 2024-4-21 20:16 编辑
数码管的“光污染”
不知道从什么时候开始友友们进入桌搭热潮,看着大家分享的桌搭像什么模拟辉光管时钟、氛围灯、手办模型,酷是真得酷但贵也是真的贵。其实有料的桌搭不一定全靠买,爆改和DIY也是一种选择,看着自己空落落的桌面和比脸还干净的钱包,买肯定是买不起了,还是自己DIY吧。一开始我只是用了一个4位数码管,实现从0-9999计数循环时间间隔为1秒,希望我单调的桌面增添一点色彩以及动态变化,当我看到数码管上的数值一点点变大,好像时间的流逝有了客观体现。可很快我发现4位数码管从零到最大数值9999大约也就2.7个小时,意思是2.7小时后它又从零开始数,这显示让我感觉不到时间的流逝。既然4位数码管不够用那就多加几位,此时我依稀记得自己还有一个吃灰的8位数码管,从零到99999999大约需要27777小时(大概3.1年)欧克就它了。
材料清单:
电路连接:
ESP32 C6——数码管
VIN - VCC
GND - GND
D2 - LATCH
D3 - CLOCK
D6 - DATA
程序:
- const int latchPin = D2;
- const int clockPin = D3;
- const int dataPin = D6;
-
- byte Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
- long times = 0;
- int position1,position2,position3,position4,position5,position6,position7,position8;
-
-
- void setup() {
- pinMode(latchPin, OUTPUT);
- pinMode(dataPin, OUTPUT);
- pinMode(clockPin, OUTPUT);
- Serial.begin(9600);
- Serial.println("reset");
- }
-
-
- void loop() {
-
- times++;
- position1=(times/10000000) % 10;
- position2=(times/1000000) % 10;
- position3=(times/100000) % 10;
- position4=(times/10000) % 10;
- position5=(times/1000) % 10;
- position6=(times/100) % 10;
- position7=(times/10) % 10;
- position8=times % 10;
-
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, Tab[position8]);
- shiftOut(dataPin, clockPin, MSBFIRST, Tab[position7]);
- shiftOut(dataPin, clockPin, MSBFIRST, Tab[position6]);
- shiftOut(dataPin, clockPin, MSBFIRST, Tab[position5]);
- shiftOut(dataPin, clockPin, MSBFIRST, Tab[position4]);
- shiftOut(dataPin, clockPin, MSBFIRST, Tab[position3]);
- shiftOut(dataPin, clockPin, MSBFIRST, Tab[position2]);
- shiftOut(dataPin, clockPin, MSBFIRST, Tab[position1]);
- digitalWrite(latchPin, HIGH);
-
-
- delay(1000);
-
- }
复制代码
效果:
哈哈哈,也属于是临时抱佛脚了,外壳还没来得及打印
|