###前提・実現したいこと
1.Arduinoプログラムを書き込み実行したのですが、if文による条件分岐の先に進むと、プログラムが止まってしまいます。(恐らくwhile文の箇所で止まっているかと思われます。)
2.milkcocoaとESP-WROOM-02を用いておりますが、milkcocoa上にもデータが送信されていない状態です。
以下に詳しく症状を示します。
※プログラムが長く、質問投稿ができなかったため、プログラムが止まってしまう該当箇所を抜粋し記載させていただきます。
###プログラムの概要
1.ランプの点灯or非点灯を光センサで読み取り、点灯した直後にmilkcocoaにランプの情報を送信する。
2.ランプが点灯中は、常にランプの点灯非点灯を確認し、スイッチが押されるまで待機する。
###発生している問題・エラーメッセージ
プログラムが止まる(具体的には、シリアルモニタ上にセンサの読み取り値が連続的に表示されずに止まってしまう、さらに、milkcocoa上にもデータが送信されていない事を確認しました。)
具体的な症状としては、ランプが点灯するまで、シリアルモニタ上にセンサの読み取り値が常に更新されます。ところがランプが点灯してからは、確認用のLEDが点灯して、シリアルモニタ上にデータが一つ表示されてからは、ランプが消灯した後でも、状態が変わらずそのまま動作が止まってしまいます。
自分としてはwhile文がうまく抜けれていないのかと思われますが、どうかアイデアなどございましたらお教えいただきますと幸甚に存じます。
c
1/////////////////////////////////////////////////////////↓↓↓赤ランプ点灯判定(モード3)↓↓↓///////////////////////////////////////////////////////// 2 if(sensorValue3 > threshold3){ 3 digitalWrite(AKA,HIGH); 4 nowSensorState3 = true; 5 nowOperatorNoticeRed = false; 6 Ralarmstart = millis(); //50日のループ 7 digitalWrite(ledPin1, HIGH); 8 Serial.print("Sensor Value1 : "); 9 Serial.println(sensorValue1); 10 Serial.print("Sensor Value2 : "); 11 Serial.println(sensorValue2); 12 Serial.print("Sensor Value3 : "); 13 Serial.println(sensorValue3); 14 15 // Milkcocoaへ送信するデータを作成 16 DataElement elem = DataElement(); 17 18 // 各データ名で値を追加 19 elem.setValue("lightState1", nowSensorState1); 20 elem.setValue("lightState2", nowSensorState2); 21 elem.setValue("lightState3", nowSensorState3); 22 elem.setValue("AlarmStart", Ralarmstart); //ミリセカンドで送信 23 elem.setValue("nowOperatorNoticeRed", nowOperatorNoticeRed); 24 elem.setValue("nowOperatorNoticeYellow", nowOperatorNoticeYellow); 25 elem.setValue("Partscounter", partscounter); 26 27 // Milkcocoaへデータを送信 28 milkcocoa.push(MILKCOCOA_DATASTORE, &elem); 29 30 // 1秒処理を止める 31 delay(1000); 32 33/////////////////////////////////////////////////////////↑↑↑赤ランプ点灯判定(モード3)↑↑↑///////////////////////////////////////////////////////// 34/////////////////////////////////////////////////////////↓↓↓赤色ランプ点灯時の動作↓↓↓///////////////////////////////////////////////////////////// 35 // 赤色ランプ点灯している間 36 while(sensorValue3 > threshold3){ 37 STEP = 1; 38 sensorValue1 = analogRead(sensorPin1); 39 sensorValue2 = analogRead(sensorPin2); 40 sensorValue3 = analogRead(sensorPin3); 41 Serial.print("Sensor Value1 : "); 42 Serial.println(sensorValue1); 43 Serial.print("Sensor Value2 : "); 44 Serial.println(sensorValue2); 45 Serial.print("Sensor Value3 : "); 46 Serial.println(sensorValue3); 47 // オペレーターのnotice待ち 48 if(digitalRead(operatornoticebutton == HIGH)){ //operatorがnoticeボタンをONしたら 49 nowOperatorNoticeRed = false; 50 step1 = 1; 51 Roperatornotice = millis(); //その瞬間の時間を格納 52 TTN = Roperatornotice - Ralarmstart; //Time TO Noticeを算出 53 54 // Milkcocoaへ送信するデータを作成 55 DataElement elem = DataElement(); 56 57 // lightというデータ名で値を追加 58 elem.setValue("lightState1", nowSensorState1); 59 elem.setValue("lightState2", nowSensorState2); 60 elem.setValue("lightState3", nowSensorState3); 61 elem.setValue("AlarmStart", Ralarmstart); 62 elem.setValue("OperatorNotice", Roperatornotice); 63 elem.setValue("TTN", TTN); 64 elem.setValue("nowOperatorNoticeRed", nowOperatorNoticeRed); 65 elem.setValue("nowOperatorNoticeYellow", nowOperatorNoticeYellow); 66 elem.setValue("Partscounter", partscounter); 67 68 // Milkcocoaへデータを送信 69 milkcocoa.push(MILKCOCOA_DATASTORE, &elem); 70 71 // 1秒処理を止める 72 delay(1000); 73 } 74
###補足情報(言語/FW/ツール等のバージョンなど)
Arduino M0 Pro
Arduino IDE 1.8.0
ESP-WROOM-02
Milkcocoa

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/16 00:31 編集
2017/02/16 00:48
2017/02/16 01:09
2017/02/16 01:16
2017/02/16 01:18
2017/02/16 02:48
2017/02/20 06:43
2017/02/20 08:03
2017/02/20 08:06
2017/02/20 08:32