<やりたいこと>
Arduinoで、タクトスイッチをオン(押下)している間だけセンサーの値を読み取り、読み取った値の平均値(1つの値だけ)をBlootoothで送信する、という動作をさせたいたいです。
そのような動作をArduinoで実現可能でしょうか。
<環境>
ボードはArduino Nano 33 BLE
開発環境はArduino IDE 2.0.0-rc3です。
<現状>
モニター上ではスイッチを押したときの平均値は出ているように見えるのですが、リアルタイムで値を送信し続けており、やりたいことである、スイッチをオン(押下)している間に読み取った値の平均値だけを1データ(1バイト?)だけBluetoothで送る、ということができていないと認識しております。
int sensorPin = A0; int moistureLevel; int LED = D6; int sensorValue = 0; int data[10]; int sensorValue_ave = 0; int sum=0; void setup() { Serial.begin(9600); pinMode(sensorPin, INPUT_PULLUP); //PULLUPが必要と思い入れてみたが、動作しているかよくわからない } void loop(){ if(analogRead(sensorPin) > 300){ //スイッチONでセンサーからの入力があるため入力値でスイッチのON/OFFを推定 for(int i=9; i<0; i--)data[i] = data[i-1]; //スイッチON時に10のデータを取得 data[0] = analogRead(sensorPin); } long sum = 0; for(byte i=0; i<10; i++)sum+=data[i]; //取得した10データの総和をとり、 sensorValue_ave = sum / 10; //平均値を算出 moistureLevel = map(sensorValue_ave,0,550,0,255); Serial.println(sensorValue_ave); Serial.println(moistureLevel); delay(1000); analogWrite(LED, moistureLevel); //センサー読み取り値送信 moistureLevel = moistureLevel>>2; //10bit->8bit値 /Serial.write(moistureLevel); //値の送信 }
回答2件
あなたの回答
tips
プレビュー