wiskfly 發表於 2015-8-12 18:35:45

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:05

補充一下按下按鈕是輸出一次'1'
並不是一直送出數直

lzx 發表於 2015-8-15 23:34:53

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);


}
}
頁: [1]
查看完整版本: arduino及app inventor控制舵機問題