標(biāo)題: arduino舵機(jī)控制實(shí)驗(yàn) [打印本頁]

作者: 314474991    時(shí)間: 2017-2-14 21:32
標(biāo)題: arduino舵機(jī)控制實(shí)驗(yàn)

這里使用arduino duemilanove通過電位器控制一個(gè)舵機(jī)轉(zhuǎn)動(dòng)


使用原件:
arduino duemilanove一塊
10K電位器一個(gè)
舵機(jī)一個(gè)
面包板一個(gè)
面包板連接線若干

這里要注意,不要使用電腦usb供電,因?yàn)槿绻娏餍枨蟠笥?00ma,會(huì)有燒毀usb的可能,推薦使用電池外置供電。

電位器左右兩腳分別接3.3V和GND,中間接模擬口0。
舵機(jī)接5V和GND,信號(hào)口接數(shù)字7號(hào)口。

把下面代碼下載進(jìn)入arduino,然后再進(jìn)行線路連接,運(yùn)行時(shí)一定要使用電池供電。[pre lang="arduino" line="1"]int readPin = 0;   //用來連接電位器
int servopin = 7;    //定義舵機(jī)接口數(shù)字接口7

void servopulse(int angle)//定義一個(gè)脈沖函數(shù)
{
  int pulsewidth=(angle*11)+500;  //將角度轉(zhuǎn)化為500-2480的脈寬值
  digitalWrite(servopin,HIGH);    //將舵機(jī)接口電平至高
  delayMicroseconds(pulsewidth);  //延時(shí)脈寬值的微秒數(shù)
  digitalWrite(servopin,LOW);     //將舵機(jī)接口電平至低
  delayMicroseconds(20000-pulsewidth);
}

void setup()
{
  pinMode(servopin,OUTPUT);//設(shè)定舵機(jī)接口為輸出接口
}

void loop()
{
  //讀取電位器(傳感器)的讀數(shù),接到3.3V,值范圍從0到660左右
  int readValue = analogRead(readPin);
  //把值的范圍映射到0到165左右
  int angle = readValue / 4;
  //發(fā)送50個(gè)脈沖
  for(int i=0;i<50;i++)
  {
    //引用脈沖函數(shù)
    servopulse(angle);
  }
}





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1