Robofun 機器人論壇

標題: 藍芽控制伺服馬達 [打印本頁]

作者: ff8988100    時間: 2015-1-4 21:11
標題: 藍芽控制伺服馬達
我是用手機來控制伺服馬達線在我按下去後能夠轉到我要的角度
想請教一下 如何把它改成當我按一次手機伺服馬達的角度就增加一度或我暗助手機按鈕她就一直增加角度呢

以下是小弟的程式

#include<SoftwareSerial.h>
#include <Servo.h>
Servo myservo;

SoftwareSerial BT (3,2);
char command;





void setup()
{
  BT.begin(9600);
myservo.attach(9);
  myservo.write(0);
}
void loop()
{

  if(BT.available()>0)
{
  command=BT.read();
  switch(command)
{
  case'w':
       myservo.write(10);              // tell servo to go to position in variable 'pos'


   break;

case'x':
myservo.write(90);
break;

case'a':

break;

case 'd':


break;

case's':


break;
}
}   
}
作者: ates1687    時間: 2015-1-4 22:43
回復 1# ff8988100


    = =我有個疑問,你上面的程式是出了什麼問題嗎?

我目前的經驗是手機丟進來的都是ASCll碼來做判斷,

如果要加的話↓

case'a':
(這邊就寫PWM在哪隻腳位就好)
break;
作者: ff8988100    時間: 2015-1-5 08:41
回復 2# ates1687

這程式沒問題 當我手機按下w伺服馬達就轉90度 只是我想改成按下去增加1度或是按住他伺服馬達就一直增加角度 我想用藍芽來控制機械手臂
作者: pizg    時間: 2015-1-5 12:47
本帖最後由 pizg 於 2015-1-5 17:10 編輯

  1. #include<SoftwareSerial.h>
  2. #include <Servo.h>
  3. Servo myservo;

  4. SoftwareSerial BT (3,2);
  5. char command;

  6. int ang = 90;



  7. void setup()
  8. {
  9.   BT.begin(9600);
  10. myservo.attach(9);
  11.   myservo.write(90);
  12. }
  13. void loop()
  14. {

  15.   if(BT.available()>0)
  16. {
  17.   command=BT.read();
  18.   switch(command)
  19. {
  20.   case'w':
  21.        myservo.write(10);              // tell servo to go to position in variable 'pos'


  22.    break;

  23. case'x':
  24. myservo.write(90);
  25. break;

  26. case'a':ang += 1;if(ang>180) ang=180;
  27. myservo.write(ang);delay(20);
  28. break;

  29. case 'd':
  30. ang -= 1;if(ang<0) ang=0;
  31. myservo.write(ang);delay(20);
  32. break;

  33. case's':


  34. break;
  35. }
  36. }   
  37. }
複製代碼
回復 3# ff8988100

作者: ff8988100    時間: 2015-1-5 23:42
回復 4# pizg

有了 感謝~




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2