#include <Arduino.h>
#include <MsTimer2.h>
#define SEG_A 0 //PIN 0
#define SEG_B 1 //PIN 1
#define SEG_C 2 //PIN 2
#define SEG_D 3 //PIN 3
#define SEG_E 4 //PIN 4
#define SEG_F 5 //PIN 5
#define SEG_G 6 //PIN 6
#define SEG_DP 7 //PIN 7
uint8_t SegPin[] = {
SEG_A, SEG_B, SEG_C, SEG_D,
SEG_E, SEG_F, SEG_G, SEG_DP
};
uint8_t SegCnt[] = {
0x40, 0x79, 0x24, 0x30, 0x19,
0x12, 0x02, 0x58, 0x00, 0x10
};
volatile bool CntFlg = false;
void count() {
CntFlg = true;
}
void setup() {
for (uint8_t i = 0; i < 8; i++) {
digitalWrite(SegPin[i], HIGH);
pinMode(SegPin[i], OUTPUT);
}
MsTimer2::set(500, count); // 500msごと
MsTimer2::start();
}
void loop() {
if (CntFlg) {
CntFlg = false;
static boolean dp = HIGH;
static uint8_t cnt = 0;
dp = !dp;
if (!dp) {
if (cnt >= 9) {
cnt = 0;
} else {
cnt++;
}
for (uint8_t i = 0; i < 7; i++) {
digitalWrite(SegPin[i], (SegCnt[cnt] & (1 << i)));
}
}
digitalWrite(SEG_DP, dp);
}
}