Arduinoを使用して複数のサーボモーターの制御がしたいです。
0~180度迄動作するサーボモーターで1台で角度のみの動作は正常動作する事を確認しています。
Arduinoを使用してサーボモーターを2つを
シリアル通信でP(パン)とT(チルト)を角度指定で制御したいです。
P100ならばパン用サーボ100度
T90ならばチルト用サーボ90度
になるように動作させたいです。
下記のソースコードでエラーはでないのですが、思ったように動作しません。
シリアル通信で受け取った文字列の最初の文字とそれ以外を分割し、
最初の文字で動かすサーボを選択
それ以降の文字で角度を指定したいと考えています。
参考になるサイトや情報など教えていただけると嬉しいです。
### 該当のソースコード #include <Servo.h> // サーボのピン番号 const int SERVO_PIN_P = 9; const int SERVO_PIN_T = 10; // サーボのインスタンス Servo servop; Servo servot; // INITがtrueの時は、モーターの位置を0にするだけ //const bool INIT = true; const bool INIT = false; void setup() { // put your setup code here, to run once: servop.attach(SERVO_PIN_P); servop.write(90); servot.attach(SERVO_PIN_T); servot.write(90); Serial.begin( 9600 ); } void loop() { // put your main code here, to run repeatedly: if (INIT) return; char servo_no; int deg1; int deg2; if ( Serial.available() > 0 ) { servo_no = '0'; char c[ 10 ] = "0"; char deg[ 5 ] = "0"; int work; for ( int i = 0; i < 5; i++ ) { c[ i ] = Serial.read(); if ( c[ i ] == '\0' ){ break; } } for ( int i = 0; i < 6; i++ ) { if (i >=1 ){ deg[i-1]=c[i]; } if (i == 0){ if ( c[ 0 ] == 'p'){ servo_no = ('1'); }else if ( c [ 0 ] == 't' ){ servo_no = ('2'); }else{ } } } //Serial.println(c); Serial.print("servo_no: "); Serial.println(servo_no); work = atoi( deg ); Serial.println(deg); Serial.println(work); if(servo_no == '1'){ if ( work >= 0 && work <= 180 ){ servop.write(work); delay(10000); } } else if (servo_no == '2'){ if ( work >= 0 && work <= 180 ){ servot.write(work); delay(10000); } } else { } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/07 05:06