Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2678|回復: 2
打印 上一主題 下一主題

arduino及app inventor控制舵機問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2015-8-12 18:35:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位前輩大家好,我是剛剛接觸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'
這個問題已經卡了我好多天了
有沒有好的建議方法可以解決??
謝謝大家
2#
 樓主| 發表於 2015-8-12 18:37:05 | 只看該作者
補充一下  按下按鈕是輸出一次'1'
並不是一直送出數直
3#
發表於 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);


}
}
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2025-1-31 07:40 , Processed in 0.097605 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表