連續型伺服馬達基本控制

Spread the love

介紹 :

        連續型伺服馬達跟標準的伺服馬達有所不同。它們通常用於需要連續旋轉而不是特定角度位置的應用。與普通馬達相似,但具有內置的控制電路,可以以不同的速度和方向旋轉。常用於輸送帶系統、機器人和其他需要連續旋轉運動的應用。

總之,連續型伺服馬達是一種非常有用的設備,特別是需要連續旋轉而不是固定位置的時候。

 

實驗材料 :

                    LED燈 X5

                    電阻 220歐姆 X5

                    連續型伺服馬達 x1

 

Arduino線路圖

 

Arduino程式碼

程式碼說明 : 在序列埠監控視窗分別輸入 D、R、N、F、Z,觀察馬達轉動的方向和速度及LED燈號的狀態。 也可自行調整馬達的運轉速度

Code

  1. #include <Servo.h>
  2. Servo servo;
  3. int led[5]; //建立5個led燈
  4. int i; //迴圈變數
  5. void setup() {
  6. Serial.begin(9600);
  7. servo.attach(4); //連接馬達信號線
  8. servo.write(90); //馬達初始狀態為停止
  9. for(i=0;i<=4;i++){
  10. led[i]=8+i; //連接led燈的腳位
  11. pinMode(led[i],OUTPUT);
  12. }
  13. }
  14. void loop() {
  15. if(Serial.available()) //是否有輸入
  16. {
  17. char ch=Serial.read(); //讀取輸入的資訊
  18. if(ch=='d'||ch=='D') //判斷輸入的資訊是否為D
  19. {
  20. servo.write(180); //以最快的速度逆時針轉動
  21. digitalWrite(led[0],1);
  22. digitalWrite(led[1],0);
  23. digitalWrite(led[2],0);
  24. digitalWrite(led[3],0);
  25. digitalWrite(led[4],0);
  26. Serial.println("逆時針快速旋轉");
  27. }else if (ch=='R'||ch=='r') //判斷輸入的資訊是否為R
  28. {
  29. servo.write(0); //以最快的速度逆時針轉動
  30. digitalWrite(led[0],0);
  31. digitalWrite(led[1],1);
  32. digitalWrite(led[2],0);
  33. digitalWrite(led[3],0);
  34. digitalWrite(led[4],0);
  35. Serial.println("順時針快速旋轉");
  36. }else if (ch=='n'||ch=='N') //判斷輸入的資訊是否為N
  37. {
  38. servo.write(90); //停止轉動
  39. digitalWrite(led[0],0);
  40. digitalWrite(led[1],0);
  41. digitalWrite(led[2],1);
  42. digitalWrite(led[3],0);
  43. digitalWrite(led[4],0);
  44. Serial.println("停止");
  45. }else if (ch=='F'||ch=='f') //判斷輸入的資訊是否為F
  46. {
  47. servo.write(135); // 馬達逆時針慢速轉動
  48. digitalWrite(led[0],0);
  49. digitalWrite(led[1],0);
  50. digitalWrite(led[2],0);
  51. digitalWrite(led[3],1);
  52. digitalWrite(led[4],0);
  53. Serial.println("逆時針慢速旋轉");
  54. }else if (ch=='Z'||ch=='z') //判斷輸入的資訊是否為Z
  55. {
  56. servo.write(45); // 馬達順時針慢速轉動
  57. digitalWrite(led[0],0);
  58. digitalWrite(led[1],0);
  59. digitalWrite(led[2],0);
  60. digitalWrite(led[3],0);
  61. digitalWrite(led[4],1);
  62. Serial.println("順時針慢速旋轉");
  63. }
  64. }
  65. }