チャレンジ第2弾としてPICでソフトでチャタリング対策ができないもの無いかと言うことで作ってみました。
10MHzで動いている場合のdelayの値なので、お使いのPICによって数字を入れ替えてください。
思っていたよりも、良いできです。
ユーザー設定ファイルを読み込むことができません。 一部の機能が利用できない可能性があります。また、設定への変更は保存されません。
boolean ledStat[9];
int ledTime = 10000;
byte ledByte = B111000;
int col=2;
int row=2;
int r;
void setup() {
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(13, OUTPUT);
PORTD = ledByte;
}
void loop()
{
r=random(0,9); //乱数発生
ledStat[r] = !ledStat[r];
for(int t=0 ; t<=ledTime ; ++t){ //Wait Time
for(int i=0 ; i<=row ; ++i){ //横列ループ
ledByte = B111000; //ledByte初期化
ledByte = ledByte - (1 << (i+3)); //横列セット
for (int j=0 ; j<=col ; ++j){ //縦列ループ
if (ledStat[i*3+j] == true){ //縦列セット
ledByte = ledByte + (1 << j);
}
PORTD = ledByte; //書き込み
}
}
}
}