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