Robofun 機器人論壇
標題:
arduino及app inventor控制舵機問題
[打印本頁]
作者:
wiskfly
時間:
2015-8-12 18:35
標題:
arduino及app inventor控制舵機問題
各位前輩大家好,我是剛剛接觸arduino的新手有些疑問想請教大家
目的:使用手機控制舵機左右轉 (即放即停,經由藍芽)
我是設定inventor按下button1時送出 '1' 數值 (正轉)
放開button時送出'0'
按下button2時送出'2' (逆轉)
放開送出'0'
↓↓↓是我寫的程式碼↓↓↓
#include <Servo.h>
#include <SoftwareSerial.h>
#include <Wire.h>
Servo myservo;
SoftwareSerial BT(0,1);
int a,i=90;
void setup() {
myservo.attach(3);
Serial.begin(9600);
BT.begin(9600);
myservo.write(i);
}
void loop() {
if (BT.available()>0){
a = BT.read(); //讀取藍芽數值
Serial.println(a);
do{
if(i>=0 && i<=180){
myservo.write(i++);
delay(50);
}
}while(a=1);
do{
if(a=2){
myservo.write(i--);
delay(50);
}
}while(a=2);
}
}
寫這樣的話變成收到1後就卡在那迴圈裡了
放開button從serial port上也看不到放開button時應有的數值'0'
這個問題已經卡了我好多天了
有沒有好的建議方法可以解決??
謝謝大家
作者:
wiskfly
時間:
2015-8-12 18:37
補充一下 按下按鈕是輸出一次'1'
並不是一直送出數直
作者:
lzx
時間:
2015-8-15 23:34
void loop() {
if (BT.available()>0){
a = BT.read(); //讀取藍芽數值
Serial.println(a); //這裡讀取a
do{
if(i>=0 && i<=180){
myservo.write(i++);
delay(50);
}
}while(a=1); //a在迴圈內無法更新讀取所以a永遠=1,而且要比較應該是用==,錯的很基礎,建議C語言的書要看一下,熟悉一下語法.
do{
if(a=2){
myservo.write(i--);
delay(50);
}
}while(a=2);
}
}
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2