2020年3月24日 星期二

Arduino定時器 109.03.14



程式

#include <stdio.h>
#include <DS1302.h>
#include <TM1637Display.h>

#define CLK 9
#define DIO 8
TM1637Display display(CLK, DIO);

namespace {
const int kCePin   = 5;  // Chip Enable
const int kIoPin   = 6;  // Input/Output
const int kSclkPin = 7;  // Serial Clock
//String dw,hh,mm,ss;
int bd=0;

DS1302 rtc(kCePin, kIoPin, kSclkPin);
}  // namespace

void setup() {
Serial.begin(9600);
Serial.println("DS1302 begin--------------------------");
rtc.writeProtect(false);
rtc.halt(false);

//Time t(2020, 3, 14, 20, 30, 50, Time::kSunday);
//rtc.time(t);
/*Serial.print(ms_b/1000);Serial.print("     ");
Serial.print(millis()/1000);Serial.print("     ");
Serial.print(millis()/1000);Serial.print("     ");
Serial.print(CountDownMM*5);Serial.print("     ");
Serial.print(CountDownMM*60*1000);Serial.print("     ");
Serial.println("     ");
*/
uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
uint8_t blank[] = { 0x00, 0x00, 0x00, 0x00 };
display.setBrightness(0x0f);
display.setSegments(data);
}




//--------------------------------------------------
void loop() {
Time t = rtc.time();

//  OK 時鐘
uint8_t segto;
segto = 0x80 | display.encodeDigit(t.hr/10);
display.setSegments(&segto, 1, 0);
/*if(t.sec%2==0)
  segto = 0x80 | display.encodeDigit(t.hr%10);
else segto =  display.encodeDigit(t.hr%10);*/
if(bd==0){
  segto = 0x80 | display.encodeDigit(t.hr%10);
  bd=1;
  }
else {
    segto =  display.encodeDigit(t.hr%10);
    bd=0;
}

display.setSegments(&segto, 1, 1);
segto =  display.encodeDigit(t.min/10);
display.setSegments(&segto, 1, 2);
segto =  display.encodeDigit(t.min%10);
display.setSegments(&segto, 1, 3);
delay(100);
}

沒有留言: