PICSYS16では、7セグメントLEDを簡単に制御することができます。
7セグメントLEDの表示に必要な継続的なリフレッシュ処理は、PICSYS16が自動的に行います。
ex7seg1.c: 7セグメントLEDの利用
#include "picsys16.h"
void setup()
{
pinMode(SW1, INPUT) ;
pinMode(SW2, INPUT) ;
pinMode(SW3, INPUT) ;
pinMode(SOUNDER, OUT_BEEP) ;
SEG7_initDefault() ;
}
byte run = FALSE ;
byte reset = TRUE ;
unsigned long t, t0, tstop ;
void loop()
{
delayMilliseconds(100) ;
digitalWrite(SOUNDER, 0) ; // ビープ音停止
if ((digitalRead(SW1) == LOW) && (run == FALSE)) { // (RE)START
digitalWrite(SOUNDER, 8) ; // 最も高い周波数
run = TRUE ;
if (reset)
t0 = millis() ;
else
t0 += millis() - tstop ;
reset = FALSE ;
}
if (digitalRead(SW2) == LOW) { // STOP
digitalWrite(SOUNDER, 7) ; // 最も高い周波数の1/2
tstop = millis() ;
run = FALSE ;
}
if ((digitalRead(SW3) == LOW) && (run == FALSE)) { // RESET
digitalWrite(SOUNDER, 6) ; // 最も高い周波数の1/4
reset = TRUE ;
t = 0 ;
}
if (run)
t = (millis() - t0) / 1000 ;
SEG7_write(t, SEG7_INT) ; // 書き直し
}
簡単なカウントアップタイマ。