FireBeetle 2 ESP32-C6--数码管的“光污染”
本帖最后由 派大星ym 于 2024-4-21 20:16 编辑数码管的“光污染”
不知道从什么时候开始友友们进入桌搭热潮,看着大家分享的桌搭像什么模拟辉光管时钟、氛围灯、手办模型,酷是真得酷但贵也是真的贵。其实有料的桌搭不一定全靠买,爆改和DIY也是一种选择,看着自己空落落的桌面和比脸还干净的钱包,买肯定是买不起了,还是自己DIY吧。一开始我只是用了一个4位数码管,实现从0-9999计数循环时间间隔为1秒,希望我单调的桌面增添一点色彩以及动态变化,当我看到数码管上的数值一点点变大,好像时间的流逝有了客观体现。可很快我发现4位数码管从零到最大数值9999大约也就2.7个小时,意思是2.7小时后它又从零开始数,这显示让我感觉不到时间的流逝。既然4位数码管不够用那就多加几位,此时我依稀记得自己还有一个吃灰的8位数码管,从零到99999999大约需要27777小时(大概3.1年)欧克就它了。
材料清单:
[*]FireBeetle 2 ESP32 C6
[*]8位数码管
电路连接:
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);
shiftOut(dataPin, clockPin, MSBFIRST, Tab);
shiftOut(dataPin, clockPin, MSBFIRST, Tab);
shiftOut(dataPin, clockPin, MSBFIRST, Tab);
shiftOut(dataPin, clockPin, MSBFIRST, Tab);
shiftOut(dataPin, clockPin, MSBFIRST, Tab);
shiftOut(dataPin, clockPin, MSBFIRST, Tab);
shiftOut(dataPin, clockPin, MSBFIRST, Tab);
digitalWrite(latchPin, HIGH);
delay(1000);
}
效果:
哈哈哈,也属于是临时抱佛脚了,外壳还没来得及打印
页:
[1]