最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

Arduino使用C/C++編寫程序,雖然C++兼容C語言,但不是C語言。C語言是Arduino語言的一種。早期的Arduino核心庫使用C語言編寫,后來引進(jìn)了面向?qū)ο蟮乃枷耄壳白钚碌腁rduino核心庫采用C與C++混合編寫而成。

rduino是一款便捷靈活、方便上手的開源電子原型平臺。包含硬件(各種型號的Arduino板)和軟件(ArduinoIDE)。由一個歐洲開發(fā)團(tuán)隊于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)境。主要包含兩個的部分:硬件部分是可以用來做電路連接的Arduino電路板;另外一個則是Arduino IDE,你的計算機(jī)中的程序開發(fā)環(huán)境。你只要在IDE中編寫程序代碼,將程序上傳到Arduino電路板后,程序便會告訴Arduino電路板要做些什么了。

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

1. 舵機(jī)簡介

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

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

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

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

2 硬件電路連線

Arduino

Arduino

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

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

實(shí)現(xiàn)功能:舵機(jī)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 舵機(jī)連線及仿真圖

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

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

4.1硬件電路連線

Arduino

Arduino

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

4.2 控制代碼

#include <Servo.h>
const int sensorPin = A0;       
int led=13;         
int pos = 0;
Servo myservo;//創(chuàng)建舵機(jī)對象
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項目3:串口控制舵機(jī)和內(nèi)置LED燈

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

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

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

 
#include <Servo.h>
int led4=4;       
int led=13;         
Servo myservo;//創(chuàng)建舵機(jī)對象
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ī)庫文件,直接在Aruidno IDE中可以加載。
  • Servo myservo為創(chuàng)建對象,本質(zhì)就是一個名稱,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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言實(shí)現(xiàn)簡單彈球游戲

    C語言實(shí)現(xiàn)簡單彈球游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單彈球游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 使用VS2010創(chuàng)建MFC ActiveX工程項目

    使用VS2010創(chuàng)建MFC ActiveX工程項目

    VS2010開發(fā)ActiveX有兩種方法,分別是MFC和ATL。MFC開過起來比較簡單,但是最終生成的文件比較大,ATL是專門用來開發(fā)ActiveX的,但是相對比較難,必須知道很多原理機(jī)制和API。咱先從MFC開發(fā)ActiveX開始吧。
    2015-06-06
  • C語言編寫Linux守護(hù)進(jìn)程實(shí)例

    C語言編寫Linux守護(hù)進(jìn)程實(shí)例

    這篇文章主要介紹了C語言編寫Linux守護(hù)進(jìn)程實(shí)例,本文講解了守護(hù)進(jìn)程及其特性、守護(hù)進(jìn)程的編程要點(diǎn)、守護(hù)進(jìn)程代碼實(shí)例等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • 詳解C++實(shí)現(xiàn)匈牙利算法

    詳解C++實(shí)現(xiàn)匈牙利算法

    匈牙利算法是一種在多項式時間內(nèi)求解任務(wù)分配問題的組合優(yōu)化算法,并推動了后來的原始對偶方法。美國數(shù)學(xué)家哈羅德·庫恩于1955年提出該算法。此算法之所以被稱作匈牙利算法,是因?yàn)樗惴ê艽笠徊糠质腔谝郧靶傺览麛?shù)學(xué)家Dénes K&#337;nig和Jen&#337; Egerváry的工作之上創(chuàng)建起來的
    2021-06-06
  • 深入理解 C++ 的 std::initializer_list及使用場景分析

    深入理解 C++ 的 std::initializer_list及使用場景分析

    本文介紹了C++11引入的std::initializer_list模板類,它作為統(tǒng)一初始化語法的重要橋梁,封裝同類型常量值,常用于容器初始化、函數(shù)參數(shù)傳遞和自定義類支持花括號初始化,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • C++實(shí)現(xiàn)LeetCode(150.計算逆波蘭表達(dá)式)

    C++實(shí)現(xiàn)LeetCode(150.計算逆波蘭表達(dá)式)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(150.計算逆波蘭表達(dá)式),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • VC WinExec打開指定程序或者文件的方法

    VC WinExec打開指定程序或者文件的方法

    使用WinExec命令打開指定程序或者文件的參數(shù)說明
    2008-11-11
  • 淺談do {...} while (0) 在宏定義中的作用

    淺談do {...} while (0) 在宏定義中的作用

    下面小編就為大家?guī)硪黄獪\談do {...} while (0) 在宏定義中的作用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C++空間命名的使用

    C++空間命名的使用

    本文主要介紹了C++空間命名的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Python/Java/JS語言調(diào)用C/C++庫的底層原理詳解

    Python/Java/JS語言調(diào)用C/C++庫的底層原理詳解

    開發(fā)過程中很多時候都會遇到調(diào)用C++動態(tài)庫dll的需求,下面這篇文章主要介紹了Python/Java/JS語言調(diào)用C/C++庫的底層原理,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-01-01

最新評論

兰溪市| 象山县| 梁山县| 陈巴尔虎旗| 安徽省| 敦煌市| 石狮市| 肇庆市| 延吉市| 三明市| 桃江县| 临泽县| 深水埗区| 图们市| 沂水县| 两当县| 保山市| 浦江县| 西乌珠穆沁旗| 东阳市| 和政县| 黄山市| 壶关县| 吉安市| 晴隆县| 新昌县| 南投市| 河西区| 甘孜| 鹤庆县| 江北区| 关岭| 马公市| 东辽县| 文水县| 菏泽市| 大安市| 琼海市| 乐山市| 潜江市| 大邑县|