写真にある赤外線発信機(CarMP3)の”1”を押したときにサーボモータ(SG-90)が100度回転するプログラムを作りたいです。
コンパイルは通ったのですが回転しません。
"1"を押すと、シリアルモニタ上に”FF30CF”と出てきます。
写真のある他の文字列は、赤外線発信機でほかのボタンを押したものです。
説明がヘタですみません...
配線は間違えていないようですし、
おそらくプログラム上の問題かと思います。
わかる方がいらっしゃいましたら教えていただけないでしょうか?
[使用機器]
Arduino UNO
サーボモータ(SG-90)
赤外線発信機(CarMP3)
赤外線レシーバー(VS1838B)
C言語
1/* Infrared Remote Controller & IR Receiver demo program 2 copy right John Yu 3 connect VS1838B to D10 see http://osoyoo.com/?p=144 4*/ 5#include <IRremote.h> 6#include<VarSpeedServo.h> 7 8int input_pin = 10; //set D10 as input signal pin 9IRrecv irrecv(input_pin); 10decode_results signals; 11 12VarSpeedServo servo; 13 14char INPUT1[] = "FF30CF"; 15 16char str[6]; 17 18void setup() 19{ 20 //シリアル 21 Serial.begin(9600); 22 irrecv.enableIRIn(); // enable input from IR receiver 23 //サーボ 24 servo.attach(9); 25 servo.write(0,255,true);//0度に移動 26 27} 28 29void loop() { 30if (irrecv.decode(&signals)) { 31 Serial.println(signals.value, HEX); 32 str[10] = Serial.read(); 33 34 if(strcmp(str, INPUT1) == 0){ 35 servo.write(100,30,true);//100度に移動 36 } 37 irrecv.resume(); // get the next signal 38 39 40 }
if(strcmp(str, INPUT1) == 0)の中にシリアルモニタに文字列などを出力をするコードを書くと、以下のように問題の切り分けができると思います。文字列が表示されない(if文の中に入ってこない)→プログラムの問題。シリアルモニタに出力される(if文の中に入っているのに動作しない)→ハードウエアに関する問題。あとloopの閉じ}が無いようですが、書き込まれているソースにはありますよね?
回答1件
あなたの回答
tips
プレビュー