電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設計 | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 基礎入門 >> Arduino開發(fā)學習 >> 正文

Arduino控制舵機詳解(含代碼)_Arduino舵機控制程序

作者:佚名    文章來源:網(wǎng)絡整理    點擊數(shù):    更新時間:2024/4/6

目 錄

1. 舵機簡介

2 硬件電路連線

3 項目:舵機來回轉(zhuǎn)動

3.1 控制代碼

3.2 仿真結(jié)果

4 項目2:光控舵機

4.1 硬件電路連線

4.2 控制代碼

4.3 仿真結(jié)果

5 項目3:串口控制舵機和內(nèi)置LED燈

5.1 仿真結(jié)果

6 用到的函數(shù)解釋


1. 舵機簡介

舵機是一種位置(角度)伺服的驅(qū)動器。舵機只是一種通俗的叫法,其實質(zhì)是一個伺服馬達。在需要角度不斷變化并可以保持的控制系統(tǒng)中應用廣泛。如遙控機械人、飛機模型等。

舵機的轉(zhuǎn)動角度為0~180°,其內(nèi)部結(jié)構(gòu)包括電機,控制電路和機械結(jié)構(gòu)三部分。電機有三根線引出,分別接VCC、GNG和信號線。主要有兩種引出線的格式:

  1. 棕、紅、橙(棕色連接GND、紅色連接VCC、橙色連接信號);
  2. 紅、黑、黃(紅色連接VCC、黑色連接GND、黃色連接信號)。

 

9g舵機實物圖 

圖1 舵機實物圖

2 硬件電路連線

Arduino

功能 舵機 功能
VCC 正極 紅色 正極
GND 負極 棕色 負極
D9(PWM) 數(shù)字引腳(PWM) 橙色(信號傳輸) 信號輸入

3 項目:舵機來回轉(zhuǎn)動

實現(xiàn)功能:舵機0~180°來回轉(zhuǎn)動。

3.1 控制代碼

#include <Servo.h>            //加載文件庫
int pos = 0;
Servo myservo;
void setup()
{
  myservo.attach(9, 500, 2500);          //修正脈沖寬度
}
void loop()
{
  for (pos = 0; pos <= 180; pos += 1) {       //pos+=1等價于pos=pos+1
    myservo.write(pos);
    delay(15);     
  }
  for (pos = 180; pos >= 0; pos -= 1) {
    myservo.write(pos);
    delay(15);      
  }
}

3.2 仿真結(jié)果

舵機連線及仿真圖 

 

圖2 舵機連線及仿真圖

4 項目2:光控舵機

實現(xiàn)功能:隨著光照強度增加,舵機跟著轉(zhuǎn)動。A0產(chǎn)生的模擬值大于500時,內(nèi)置的13引腳的可編程LED發(fā)光。

4.1 硬件電路連線

Arduino

功能 舵機 功能
VCC 正極 紅色 正極
GND 負極 棕色 負極
D9(PWM) 數(shù)字引腳(PWM) 橙色(信號傳輸) 信號輸入
A0 模擬接口(光敏電阻)

4.2 控制代碼

#include <Servo.h>
const int sensorPin = A0;       
int led=13;         
int pos = 0;
Servo myservo;//創(chuàng)建舵機對象
void setup(){
  myservo.attach(9, 500, 2500);
  pinMode(led,OUTPUT);
  Serial.begin(9600);
}
void loop(){
  int val=analogRead(sensorPin);
  if(val>500){
    digitalWrite(led,HIGH);
  }
  else{
    digitalWrite(led,LOW);
  }
  
  int yp=map(val,0,1023,0,180);
    //數(shù)值轉(zhuǎn)換,將[0,1023]產(chǎn)生的模擬值轉(zhuǎn)換成[0,180]中的值
  Serial.println(yp);
  myservo.write(yp);
  delay(10);
}

4.3 仿真結(jié)果

光控舵機仿真 

 

圖4 光控舵機仿真

5 項目3:串口控制舵機和內(nèi)置LED燈

實現(xiàn)功能如下:

串口輸入2,led點亮,同時串口打印“ON”,舵機轉(zhuǎn)動到90°。

串口輸入4,led熄滅,同時串口打印“OFF”,舵機轉(zhuǎn)動到180°


#include <Servo.h>
int led4=4;       
 
int led=13;         
Servo myservo;//創(chuàng)建舵機對象
 
void setup(){
  myservo.attach(9, 500, 2500);
  pinMode(led,OUTPUT);
  pinMode(led4,OUTPUT);
  Serial.begin(9600);
}
 
void loop(){
  if(Serial.available()>0){
    char c=Serial.read();
    if(c=='2'){
      digitalWrite(led,HIGH);
      digitalWrite(led4,HIGH);
      myservo.write(90);
      Serial.println("ON");
    }
    else if(c=='4'){
      digitalWrite(led,LOW);
      digitalWrite(led4,LOW);
      myservo.write(180);
      Serial.println("OFF");
    }
  }
}

5.1 仿真結(jié)果

串口控制舵機仿真 

 

圖4 串口控制舵機仿真

6 用到的函數(shù)解釋

  1. Serial.begin()是串口初始化函數(shù),設置傳輸速率。
  2. Serial.println()與Serial.print()的區(qū)別在于前者具備換行功能,后者不具備。
  3. Servo.h是舵機庫文件,直接在Aruidno IDE中可以加載。
  4. Servo myservo為創(chuàng)建對象,本質(zhì)就是一個名稱,myservo可自己命名。
  5. myservo.attach(9)表示控制舵機的引腳。
  6. myservo.write(45)表示舵機旋轉(zhuǎn)到45°的位置,而不是旋轉(zhuǎn)了45°。
  7. map()函數(shù)的使用率比較高,將某一區(qū)間的值轉(zhuǎn)換為另外區(qū)間的值。

語法格式為: val =map(value, fromLow, fromHigh, toLow, toHigh);

val,value為同類型變量,fromHigh與fromLow為變量a的最大與最小值,toHigh與toLow為val變量的最大與最小值。map()函數(shù)根據(jù)范圍比例即可將某一區(qū)間的值縮放至另外區(qū)間的值,并將值賦予val。

Tags:Arduino,程序代碼,控制舵機  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網(wǎng)友評論
關(guān)于我們 - 聯(lián)系我們 - 廣告服務 - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
日本免费高清一本视频| 天天做天天爱夜夜爽| 中文字幕在线视频免费观看| 日本一二三精品黑人区| 久久伊人精品一区二区三区| 无遮挡动漫画在线观看| 久久久久久成人毛片免费看| 成人性视频在线| 中文字幕一区日韩精品| 好深好爽办公室做视频| 一级看片免费视频| 在线视频一二三区| 99热这里只/这里有精品| 国产精品嫩草影院永久一| 91蝌蚪在线播放| 国产男女猛烈无遮挡免费网站 | 特级毛片a级毛片在线播放www| 又污又爽又黄的网站| 理论片2023最新在线观看| 人妻系列无码专区久久五月天| 欧美日韩一二三| 亚洲国产日韩欧美在线| 日韩中文字幕电影在线观看| 久久国产劲暴∨内射新川| 成人免费区一区二区三区| 一本色道久久88综合亚洲精品高清| 在线观看亚洲网站| 91精品国产91久久久久久青草| 国产熟女乱子视频正在播放| 裴远之的原型人物是谁| 国产99视频精品免视看7| 男人免费桶女人45分钟视频| 亚洲精品无码专区在线播放| 欧洲成人在线视频| 久久精品国产亚洲香蕉| 成人午夜精品久久久久久久小说 | 在线观看亚洲av每日更新| 91最新高端约会系列178| 国产成人www| 美女内射毛片在线看免费人动物| 午夜精品久久久久久毛片|