欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Arduino控制舵機(jī)詳解 附代碼

 更新時(shí)間:2023年05月19日 15:11:27   作者:項(xiàng)目申報(bào)小狂人  
rduino是一款便捷靈活、方便上手的開源電子原型平臺(tái),它構(gòu)建于開放原始碼simple I/O介面版,并且具有使用類似Java、C語言的Processing/Wiring開發(fā)環(huán)境,這篇文章主要介紹了Arduino控制舵機(jī)詳解(含代碼),需要的朋友可以參考下

Arduino使用C/C++編寫程序,雖然C++兼容C語言,但不是C語言。C語言是Arduino語言的一種。早期的Arduino核心庫(kù)使用C語言編寫,后來引進(jìn)了面向?qū)ο蟮乃枷?,目前最新的Arduino核心庫(kù)采用C與C++混合編寫而成。

rduino是一款便捷靈活、方便上手的開源電子原型平臺(tái)。包含硬件(各種型號(hào)的Arduino板)和軟件(ArduinoIDE)。由一個(gè)歐洲開發(fā)團(tuán)隊(duì)于2005年冬季開發(fā)。其成員包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。

它構(gòu)建于開放原始碼simple I/O介面版,并且具有使用類似Java、C語言的Processing/Wiring開發(fā)環(huán)境。主要包含兩個(gè)的部分:硬件部分是可以用來做電路連接的Arduino電路板;另外一個(gè)則是Arduino IDE,你的計(jì)算機(jī)中的程序開發(fā)環(huán)境。你只要在IDE中編寫程序代碼,將程序上傳到Arduino電路板后,程序便會(huì)告訴Arduino電路板要做些什么了。

Arduino能通過各種各樣的傳感器來感知環(huán)境,通過控制燈光、馬達(dá)和其他的裝置來反饋、影響環(huán)境。板子上的微控制器可以通過Arduino的編程語言來編寫程序,編譯成二進(jìn)制文件,燒錄進(jìn)微控制器。對(duì)Arduino的編程是通過 Arduino編程語言 (基于 Wiring)和Arduino開發(fā)環(huán)境(基于 Processing)來實(shí)現(xiàn)的。基于Arduino的項(xiàng)目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上運(yùn)行的軟件,它們之間進(jìn)行通信 (比如 Flash, Processing, MaxMSP)來實(shí)現(xiàn)。

1. 舵機(jī)簡(jiǎn)介

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

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

  • 棕、紅、橙(棕色連接GND、紅色連接VCC、橙色連接信號(hào));
  • 紅、黑、黃(紅色連接VCC、黑色連接GND、黃色連接信號(hào))。

圖1 舵機(jī)實(shí)物圖

2 硬件電路連線

Arduino

Arduino

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

3 項(xiàng)目:舵機(jī)來回轉(zhuǎn)動(dòng)

實(shí)現(xiàn)功能:舵機(jī)0~180°來回轉(zhuǎn)動(dòng)。

3.1 控制代碼

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

3.2 仿真結(jié)果

圖2 舵機(jī)連線及仿真圖

4 項(xiàng)目2:光控舵機(jī)

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

4.1硬件電路連線

Arduino

Arduino

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

4.2 控制代碼

#include <Servo.h>
const int sensorPin = A0;       
int led=13;         
int pos = 0;
Servo myservo;//創(chuàng)建舵機(jī)對(duì)象
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 光控舵機(jī)仿真

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

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

串口輸入2,led點(diǎn)亮,同時(shí)串口打印“ON”,舵機(jī)轉(zhuǎn)動(dòng)到90°。

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

 
#include <Servo.h>
int led4=4;       
int led=13;         
Servo myservo;//創(chuàng)建舵機(jī)對(duì)象
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 串口控制舵機(jī)仿真

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

  • Serial.begin()是串口初始化函數(shù),設(shè)置傳輸速率。
  • Serial.println()與Serial.print()的區(qū)別在于前者具備換行功能,后者不具備。
  • Servo.h是舵機(jī)庫(kù)文件,直接在Aruidno IDE中可以加載。
  • Servo myservo為創(chuàng)建對(duì)象,本質(zhì)就是一個(gè)名稱,myservo可自己命名。
  • myservo.attach(9)表示控制舵機(jī)的引腳。
  • myservo.write(45)表示舵機(jī)旋轉(zhuǎn)到45°的位置,而不是旋轉(zhuǎn)了45°。
  • 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。

到此這篇關(guān)于Arduino控制舵機(jī)詳解(含代碼)的文章就介紹到這了,更多相關(guān)Arduino控制舵機(jī)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Qt5.9繼承QObject創(chuàng)建多線程實(shí)例

    Qt5.9繼承QObject創(chuàng)建多線程實(shí)例

    本文主要介紹了Qt5.9繼承QObject創(chuàng)建多線程實(shí)例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 關(guān)于c語言指針的兩處小tip分享

    關(guān)于c語言指針的兩處小tip分享

    本篇文章是對(duì)c語言中指針的兩處小tip進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 怎么在C++二進(jìn)制文件中注入git信息詳解

    怎么在C++二進(jìn)制文件中注入git信息詳解

    這篇文章主要給大家介紹了關(guān)于怎么在C++二進(jìn)制文件中注入git信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-06-06
  • 一篇文章帶你使用C語言編寫內(nèi)核

    一篇文章帶你使用C語言編寫內(nèi)核

    內(nèi)核是操作系統(tǒng)最核心的內(nèi)容,主要提供硬件抽象層、磁盤及文件系統(tǒng)控制、多任務(wù)等功能,由于其涉及非常廣泛的計(jì)算機(jī)知識(shí),很少被人們所熟悉,因而披上了一層神秘的面紗
    2021-08-08
  • C語言實(shí)現(xiàn)繪制南丁格爾玫瑰圖的示例代碼

    C語言實(shí)現(xiàn)繪制南丁格爾玫瑰圖的示例代碼

    玫瑰圖中有一種不等半徑的統(tǒng)計(jì)圖稱為南丁格爾玫瑰圖,網(wǎng)上很熱門,是一很有藝術(shù)感的漂亮的統(tǒng)計(jì)圖,下面我們就來看看如何使用C語言繪制它吧
    2024-03-03
  • C++之set自定義排序問題

    C++之set自定義排序問題

    這篇文章主要介紹了C++之set自定義排序問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 手把手教你如何優(yōu)化C語言程序

    手把手教你如何優(yōu)化C語言程序

    程序進(jìn)行優(yōu)化,通常是指優(yōu)化程序代碼或程序執(zhí)行速度。優(yōu)化代碼和優(yōu)化速度實(shí)際上是一個(gè)予盾的統(tǒng)一,一般是優(yōu)化了代碼的尺寸,就會(huì)帶來執(zhí)行時(shí)間的增加,如果優(yōu)化了程序的執(zhí)行速度,通常會(huì)帶來代碼增加的副作用,很難魚與熊掌兼得,只能在設(shè)計(jì)時(shí)掌握一個(gè)平衡點(diǎn)
    2013-07-07
  • C++二分法在數(shù)組中查找關(guān)鍵字的方法

    C++二分法在數(shù)組中查找關(guān)鍵字的方法

    這篇文章主要介紹了C++二分法在數(shù)組中查找關(guān)鍵字的方法,涉及C++數(shù)組查找算法的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • C++編程中將引用類型作為函數(shù)參數(shù)的方法指南

    C++編程中將引用類型作為函數(shù)參數(shù)的方法指南

    這篇文章主要介紹了C++編程中將引用類型作為函數(shù)參數(shù)的方法指南,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • C++動(dòng)態(tài)規(guī)劃之背包問題解決方法

    C++動(dòng)態(tài)規(guī)劃之背包問題解決方法

    這篇文章主要介紹了C++動(dòng)態(tài)規(guī)劃之背包問題解決方法,實(shí)例分析了背包問題的原理與C++實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04

最新評(píng)論