|
這是我做輝光鐘總結(jié)的一點(diǎn)經(jīng)驗(yàn)
- #include <DS1302.h>
- //clock config
- const int kCePin = 5; // 對應(yīng)rst引腳,Chip Enable
- const int kIoPin = 6; // 對應(yīng)data引腳,Input/Output
- const int kSclkPin = 7; // 對應(yīng)clck引腳,Serial Clock
- //建立一個ds1302 對象 rtc
- DS1302 rtc(kCePin, kIoPin, kSclkPin);
- //595 config
- int datapin = 2; //DS 14腳 用來串行輸入數(shù)據(jù)
- int latchpin = 3; //st_cp 12腳 注:latch 有門閂的意思,可以理解成閘門,控制并行輸出的時間
- int clockpin = 4; //sh_cp 11腳 //595會在clock的上升沿讀取 1bit data, 對它的操控封裝在 shiftOut()函數(shù)里了, 不需要大家自己操作。
- //clock data
- int data_sec = 0; //秒數(shù)數(shù)據(jù)
- int data_min = 0; //分鐘數(shù)據(jù)
- int data_hour = 0; //小時數(shù)據(jù)
- void setup() {
- Serial.begin(9600);
- nixie_tube_init();
- }
- void loop() {
- //將當(dāng)前時間存儲到 t 這個對象中
- Time t = rtc.time();
- int hour_gewei = t.hr % 10; //取得個位數(shù)字 模10
- int hour_shiwei = t.hr / 10;//取得十位數(shù)字 處以十
- int min_gewei = t.min % 10;
- int min_shiwei = t.min / 10;
- int sec_gewei = t.sec % 10;
- int sec_shiwei = t.sec / 10;
- //晚上不顯示
- if( t.hr>=0 and t.hr<=6 ) {
- digitalWrite(latchpin, LOW);
- shiftOut(datapin, clockpin, LSBFIRST, 255);
- shiftOut(datapin, clockpin, LSBFIRST, 255);
- digitalWrite(latchpin, HIGH);
- delay(100000);
- return;
- }
- //分鐘數(shù)變化時來個隨機(jī)顯示
- if ((min_shiwei * POW(2,4) + min_gewei) != data_min) {
- random_display(30);
- }
-
- // (5 -> 0101 1-> 0001) => 0101 0001 = 0101 * 2^4 + 0001
- // 10 01 => 1001 = 10 * 10^2 + 1
- // data_sec = sec_shiwei * POW(2,4) + sec_gewei;
- data_min = min_shiwei * POW(2,4) + min_gewei;
- data_hour = hour_shiwei * POW(2,4) + hour_gewei;
- digitalWrite(latchpin, LOW);
- shiftOut(datapin, clockpin, LSBFIRST, data_min);
- shiftOut(datapin, clockpin, LSBFIRST, data_hour);
- digitalWrite(latchpin, HIGH);
- delay(100);
- }
- int POW(int i, int j) {
- int result = 1;
- if(j == 0) return result;
- for(int k = 0; k < j; k++) {
- result *= i;
- }
- return result;
- }
- void random_display(int times) {
- for(int i=0; i<times; i++) {
- digitalWrite(latchpin, LOW);
- shiftOut(datapin, clockpin, LSBFIRST, random(1,10) * POW(2,4) + random(1,10));
- shiftOut(datapin, clockpin, LSBFIRST, random(1,10) * POW(2,4) + random(1,10));
- digitalWrite(latchpin, HIGH);
- delay(20);
- }
- }
- void nixie_tube_init() {
- pinMode(clockpin, OUTPUT);
- pinMode(datapin, OUTPUT);
- pinMode(latchpin, OUTPUT);
- //show something random
- random_display(40);
- }
復(fù)制代碼
|
-
-
第三期資料.zip
2020-4-16 14:16 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
1.18 MB, 下載次數(shù): 13, 下載積分: 黑幣 -5
-
-
輝光管第二期資料.7z
2020-4-16 14:59 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
4.08 MB, 下載次數(shù): 12, 下載積分: 黑幣 -5
-
-
輝光管系列第一期內(nèi)容.zip
2020-4-16 14:16 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
7.02 MB, 下載次數(shù): 13, 下載積分: 黑幣 -5
|