Arduinoでデジタルセンサで値を取得した入力に対して、閾値内に出力がHIGHならその閾値内の出力をすべてHIGHにするプログラムを書きたい
arduinoでデジタル式のモーションセンサの作動を行っています。しかし、このセンサだと人がセンサの計測範囲内にいる場合でも人が動かなければセンサの値がLOWになってしまいます。そこで、配列を用いたプログラムを書きましたが、いまいち改善はしていない状況です。どのようにしたらよろしいでしょうか。
該当のソースコード
define PPR1 3
float time;
int ss[5][5];
void setup() {
pinMode(PPR1, INPUT);
Serial.begin(9600);
while (!Serial);
Serial.println ("センサが安定するまで少々お待ちください(30s)");
delay(30000);
}
void loop() {
int i;
int State1 = digitalRead(PPR1);
ss[5][5] = State1;
for(i=0;i<NULL;i++){
if(ss[i][i]==HIGH&&ss[i+8][i+9]==HIGH){
ss[i][i+1]==HIGH;
ss[i+1][i+2]==HIGH;
ss[i+2][i+3]==HIGH;
ss[i+3][i+4]==HIGH;
ss[i+4][i+5]==HIGH;
ss[i+5][i+6]==HIGH;
ss[i+6][i+7]==HIGH;
ss[i+7][i+8]==HIGH;
}
}
time = (millis() - 30000) * 0.001;
Serial.print(time, 1);
Serial.print(" ");
Serial.print(ss[5][5]);
Serial.println(" ");
}
試したこと
配列を用いてセンサ値を配列に格納し、条件文によって一つ目と10つ目の値に反応が見られたらその間のセンサ値をすべて反応している状態にするプログラムを書きました。
補足情報(FW/ツールのバージョンなど)
配列を使う方法でも構わないです。またチャタリングの原因もあるかと思いますのでそちらの改善方法も教えていただきたいです。よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー