現在,Aruduinoで温度センサの出力値によってサーボモータの動作が変わるプログラムを作成しています.指定した温度ごとのサーボモータの動作を確認するため,サーボモータの回転角度は統一し,待機時間を変更しています.
動作内容は,
気温が18℃以上30℃以下の場合は,待機時間を3000ミリ秒に,
気温が10℃より高く18℃より低い場合,または30℃より高く35℃より低い場合は待機時間を2000ミリ秒に,
それ以外の気温では,サーボモータを動作しない
といったものです.
しかし,実際に書いたプログラムでは,どの気温でも待機時間が3000ミリ秒となってしまい,想定していた動作をしませんでした.また,回路を確認しましたが,問題はありませんでした.
エラーもなく,どこが間違っているかがわからないため,教えていただきたいです.
よろしくお願いします.
該当のソースコード
#include<Servo.h> const int THERMISTOR=0; //温度センサが接続されているピン const int SERVO=9; //サーボモータが接続されているピン Servo servo; //サーボモータ void setup() { Serial.begin(9600); servo.attach(SERVO); //サーボモータをピンに接続 } void loop() { int v; float temp; v=analogRead(THERMISTOR); temp=(v*5000.0/1024-500.0)/10.0; //温度に変換 if(18.0<=temp<=30.0){ //気温が18℃以上30℃以下の場合 Serial.println(temp); //シリアル通信で値を送信 delay(0); servo.write(0); delay(3000); servo.write(90); delay(3000); }else if(10.0<temp<18.0){ //気温が10℃より高く18℃より低い場合 Serial.println(temp); delay(0); servo.write(0); delay(2000); servo.write(90); delay(2000); }else if(30.0<temp<=35.0){ //気温が30℃より高く35℃より低い場合 Serial.println(temp); delay(0); servo.write(0); delay(2000); servo.write(90); delay(2000); }else{ //10℃より低いまたは35℃より高い場合 Serial.println(temp); //シリアル通信で値を送信 delay(0); //サーボモータ不動 servo.write(0); delay(0); } } コード
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/10 08:28