Robofun 機器人論壇

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

藍芽控制伺服馬達

[複製鏈接]
跳轉到指定樓層
1#
發表於 2017-11-23 23:37:04 | 顯示全部樓層 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我使用藍芽+inventor 2 APP(手機控制)+arduino  控制伺服馬達   我希望能夠按住1個按鈕=>角度慢慢上升&下降 +指定角度    目前可以指定伺服馬達到180度&1度    但現在按住按鈕伺服馬達的角度會=第6行"float ang = 90;"的角度   放開後會回到接近90度的位置    請問一下可以講解是什麼問題嗎?
程式是抓別人的然後小改一下    下面是inventor 2的物件圖&積木圖& arduino程式

inventor 2物件圖
inventor 2積木圖

#include<SoftwareSerial.h>
#include <Servo.h>
Servo myservo;
SoftwareSerial BT (1,0);
char command;
float ang = 90;

void setup()
  {
    BT.begin(38400);
    myservo.attach(9);
    myservo.write(90);

  }
void loop()
{
      if(BT.available()>0)
      {
        Serial.println(command);
        command=BT.read();
        switch(command)   {
         case'A':
                ang =ang + 1;if(ang>180) ang=180;
                myservo.write(ang);
                delay(40);
                break;

        case 'B':
                if(ang>0) ang =ang - 1;
                ang =ang - 1;if(ang<0) ang=0;
                myservo.write(ang);
                delay(40);
                break;
       case'C':
               myservo.write(180);
               break;
       case'D':
               myservo.write(0);         
               break;        
       case'E':
               Serial.println("Stop");
               stop();
               delay(40);
               break;

       case'F':
              Serial.println("Stop");
              stop();
              delay(40);
              break;
       default:
              break;
         
           }
      }   
}

int stop()
{
  myservo.writeMicroseconds(1600);
}
2#
 樓主| 發表於 2017-11-24 18:44:28 來自手機 | 顯示全部樓層
本帖最後由 f660229 於 2017-11-30 09:47 編輯

謝謝講解  請問我該怎麼改?
3#
 樓主| 發表於 2017-11-24 21:35:31 來自手機 | 顯示全部樓層
本帖最後由 f660229 於 2017-11-24 22:55 編輯

拿掉之後 就變成按下up&down鍵後直接到0度
4#
 樓主| 發表於 2017-11-30 09:40:33 | 顯示全部樓層
本帖最後由 f660229 於 2017-11-30 11:51 編輯

對不起我是新手看不太懂   
請問應該怎麼設置積木?還是說Arduino的程式需要更改?
謝謝講解
5#
 樓主| 發表於 2017-11-30 14:01:52 | 顯示全部樓層
本帖最後由 f660229 於 2017-11-30 14:07 編輯

這是我改過的積木圖   Arduino有"stop"的部分都刪除了
可是這樣動作出來up&down都變成90度

javascript:;

0000.png (81.65 KB, 下載次數: 311)

0000.png
6#
 樓主| 發表於 2017-12-6 00:25:45 | 顯示全部樓層
本帖最後由 f660229 於 2017-12-6 00:27 編輯

我的也是UNO板   藍芽的鮑率我有改過 因為學校是教我們用38400
跳到90度是指 --> 按住會跑到0度  放開就會跳到接近90度的位置
請問  1.Serial 跟SoftwareSerial的差別在哪裡??
        2.怎麼改上升下降的速度??
        3.可以講解我的積木圖為什麼錯誤嗎??

可以動作了   只是從0度要往上的時候會卡一下
真的很感謝你   
7#
 樓主| 發表於 2017-12-6 22:35:34 | 顯示全部樓層
本帖最後由 f660229 於 2017-12-6 22:47 編輯

謝謝你的講解

請問 case 'A'  跟  case 'B'  的程式為什麼不太一樣  

對不起我問題有點多   因為一些原因沒辦法把問題一次提出來
8#
 樓主| 發表於 2017-12-7 23:44:17 | 顯示全部樓層
case 'A'
ang = ang + 1;
if (ang > 180) ang = 180;

case 'B'
if (ang > 0) ang = ang - 1;

這2個不是類似的嗎?為什麼case 'B要這樣改??

9#
 樓主| 發表於 2017-12-9 00:34:33 | 顯示全部樓層
case 'B' 不能改成這樣嗎??
ang = ang - 1;
if (ang < 0) ang = 0;
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-14 08:53 , Processed in 0.243748 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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