小弟剛接觸arduino沒多久, 目前想玩看看用手機bluetooth控制arduino板的servo
是否有高手能提供code?
目前小弟是設定servo.write(ang), int ang = 90
void loop(){
if(Serial.available()){
Char = Serial.read();
if (Char == 'a'){
ang = ang + 60;
delay(1000);
但這種寫法好像只能一次轉一個角度, 可以輸入一次,轉兩次角度嗎
如
ang= ang +60;
delay(1000);
ang = ang +120;
delay(1000):
(加60度後停一秒再加120度)
但好像這樣寫servo就不會動= =
請問各位高手是該怎麼寫才對,謝謝
Servo ServoAndroid;
char Char;
int ang = 90;
void setup(){
ServoAndroid.attach(3,600,2400);
Serial.begin(9600);
}
void loop(){
if(Serial.available()){
Char = Serial.read();
if (Char == 'a'){
ang =ang + 60;
delay(3000);
ang = ang + 120;
delay(3000);
Serial.print(ang);
}
else if (rxChar == 'h'){
ang = ang -60;
Serial.print(ang);
}
ang = constrain(ang,0,180);
}
ServoAndroid.write(ang);
delay(500);
感覺就算改長delay 他依樣都給我一氣呵成60+120=180度
我不懂怎麼讓他分開動作?? 假如我要輸入後要讓他不斷重複動作要怎麼寫呢?!如+30-30+30-30+30-30....
KanonLin wrote:
#include ...(恕刪)
#include <Servo.h>
Servo ServoAndroid;
char Char;
int ang = 90;
void setup{
ServoAndroid.attach(3,600,2400);
Serial.begin(9600);
}
void loop{
if(Serial.available){
Char = Serial.read;
if (Char == 'a'){
ang =ang + 60; /*這裡你只計算角度值沒有執行SERVO的控制*/
delay(3000);
ang = ang + 120; /*角度值 = ang + 60 + 120 = ang + 180*/
delay(3000);
Serial.print(ang);
}
else if (rxChar == 'h'){
ang = ang -60;
Serial.print(ang);
}
ang = constrain(ang,0,180);
}
ServoAndroid.write(ang);
delay(500);
感覺就算改長delay 他依樣都給我一氣呵成60+120=180度
我不懂怎麼讓他分開動作?? 假如我要輸入後要讓他不斷重複動作要怎麼寫呢?!如+30-30+30-30+30-30....
======================================================
Serial.print(ang);
ServoAndroid.write(ang);
先搞清楚上面2個函式哪一個是servo的控制函式,
找到後加到delay之前就可以.
越是親密的人 越需要你的尊重 ,尊重你的另一半 感情才能長長久久
KanonLin wrote:
感恩!!
if(Serial.available){
Char = Serial.read;
if (rxChar == 'a'){
servo1.write(60);
delay(2000);
servo1.write(90);
delay(2000);
servo1.write(150);
delay(2000);
我這樣寫他就會做三個角度的動作了!!
但他就只會做一次!!
請問怎樣可以讓他不斷持續重複呢
60>>90>>150>>60>>90>>150>>60>>90>>150>>
會只做一次的原因是你的SERVO控制是在串口的判斷式內執行,
造成每收到一次'a'才執行一次SERVO的動作,
把SERVO的控制放到串口接收的判斷式外就可以一直執行SERVO的控制了,
void loop{
if(Serial.available){
Char = Serial.read();
}
if (Char == 'a'){
servo1.write(60);
delay(2000);
servo1.write(90);
delay(2000);
servo1.write(150);
delay(2000);
}
}
改成上面應該SERVO就會一直動作,直到串口收到非'a'的指令後停止動作.
越是親密的人 越需要你的尊重 ,尊重你的另一半 感情才能長長久久
內文搜尋

X