#実行したいこと
現在、温度センサの出力値によってサーボモータの動作が変わるプログラムを作成し次に,タクトスイッチを押している間だけ,loop関数内の温度センサの出力値によってサーボモータの動作が変わるプログラムが動くようにしたいです.
サーボモータの動作は,気温が18℃以上30℃以下の場合は,サーボモータの角度が0°→180°→140°→0°→180°→140°と動作し,
気温が10℃より高く18℃より低い,または気温が30℃より高く35℃より低い場合はサーボモータの角度が0°→180°→140°と動作し,
それ以外の気温では動作しない
といったものです.
タクトスイッチを押していない間は,温度センサの出力値によってサーボモータの動作が変わるプログラムは動作せず,押している間だけ温度センサの出力値によってサーボモータの動作が変わるプログラムを動作し,サーボモータの動作中にタクトスイッチを押している指を離すと,動作が停止し,ふりだしに戻るようにしたいのですが,どのように書けばよいかわかりません.
自分ひとりの力では解決できないので,どなたか教えていただけないでしょうか.
#include<Servo.h> const int THERMISTOR=A0; const int SERVO=9; CONST int SWITCH=2; Servo servo; //サーボモータ void setup() { servo.attach(SERVO); //サーボモータをピンに接続 Serial.begin(9600); pinMode() } void loop() { int v; float temp; v=analogRead(THERMISTOR); temp=(v*5000.0/1024-500.0)/10.0; //温度に変換 if(18.0<=temp && temp<=30.0){ //気温が18℃以上30℃以下の場合 Serial.println(temp); delay(2000); Serial.println("2 sec_elapsed"); Serial.println("Ready for feeding"); servo.write(0); Serial.println("0 degree"); delay(2000); Serial.println("2 sec_elapsed"); servo.write(180); Serial.println("180 degree"); delay(2000); Serial.println("2 sec_elapsed"); servo.write(140); Serial.println("140 degree"); delay(2000); Serial.println("Second lap"); servo.write(0); Serial.println("0 degree"); delay(2000); Serial.println("2 sec_elapsed"); servo.write(180); Serial.println("180 degree"); delay(2000); Serial.println("2 sec_elapsed"); servo.write(140); Serial.println("140 degree"); delay(5000); Serial.println("5 sec.elapsed"); }else if(10.0<temp && temp<18.0){ //気温が10℃より高く18℃より低い場合 servo.write(0); Serial.println("0 degree"); delay(2000); Serial.println("2 sec_elapsed"); servo.write(180); Serial.println("180 degree"); delay(2000); Serial.println("2 sec_elapsed"); servo.write(140); Serial.println("140 degree"); delay(5000); Serial.println("5 sec.elapsed"); }else if(30.0<temp && temp<=35.0){ //気温が30℃より高く35℃より低い場合 servo.write(0); Serial.println("0 degree"); delay(2000); Serial.println("2 sec_elapsed"); servo.write(180); Serial.println("180 degree"); delay(2000); Serial.println("2 sec_elapsed"); servo.write(140); Serial.println("140 degree"); delay(5000); Serial.println(5sec.elapsed"); }else{ //10℃より低いまたは35℃より高い場合 Serial.println(temp);//シリアル通信で値を送信 delay(1000); //サーボモータ不動 servo.write(0); Serial.println("Servo does not feed"); delay(5000); Serial.println("5 sec.elapsed"); } }
回答1件
あなたの回答
tips
プレビュー