找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 6324|回復(fù): 3
收起左側(cè)

DIY Arduino追光器

[復(fù)制鏈接]
ID:426684 發(fā)表于 2019-12-20 19:45 | 顯示全部樓層 |閱讀模式
DIY Arduino追光器

1.Arduino UNO

2.舵機(jī) x2

3.光敏電阻 x4

4.電阻 x4


IMG_20191220_191026.jpg IMG_20191220_191042.jpg

代碼:

//追光系統(tǒng)
#include <Servo.h>  //載入Servo庫(kù)
#define InA A0     //定義讀取a光敏電阻的模擬口
#define InB A1     //定義讀取b光敏電阻的模擬口
#define InC A2     //定義讀取c光敏電阻的模擬口
#define InD A3     //定義讀取d光敏電阻的模擬口

int valA,valB;     //用于存儲(chǔ)兩個(gè)光敏電阻的數(shù)值
int valC,valD;     //用于存儲(chǔ)兩個(gè)光敏電阻的數(shù)值   
int angle1 = 90;    //設(shè)置初始角度
int range1 = 100;   //設(shè)置范圍
int angle2 = 45;    //設(shè)置初始角度
int range2 = 100;   //設(shè)置范圍
Servo myServo1;
Servo myServo2;

void setup() {
  myServo1.attach(2);      //定義舵機(jī)接口
  myServo1.write(angle1);   //初始化舵機(jī)角度為90度
  myServo2.attach(3);      //定義舵機(jī)接口
  myServo2.write(angle2);   //初始化舵機(jī)角度為90度
  Serial.begin(9600);    //設(shè)置串口波特率
}

void loop() {
  valA = analogRead(InA);  //讀取A光敏電阻數(shù)據(jù)
  valB = analogRead(InB);  //讀取B光敏電阻數(shù)據(jù)
  valC = analogRead(InC);  //讀取C光敏電阻數(shù)據(jù)
  valD = analogRead(InD);  //讀取D光敏電阻數(shù)據(jù)
  //正極接光敏,越光數(shù)值越大 A大于B,A比B光 A-B為正數(shù) 舵機(jī)向A方向轉(zhuǎn)
  if(valA-valB > range1){
    angle1 = angle1 + 20;               //角度+1
    angle1 = constrain(angle1,0,180);  //約束輸出
    myServo1.write(angle1);            //執(zhí)行角度
  }
  //A小于B,B比A光 A-B為負(fù)數(shù) 舵機(jī)向B方向轉(zhuǎn)
  else if(valA - valB < -range1){
    angle1 = angle1 - 20;
    angle1 = constrain(angle1,0,180);
    myServo1.write(angle1);   
  }

  //C大于B,C比D光C-D為正數(shù) 舵機(jī)向C方向轉(zhuǎn)
  if(valC-valD > range2){
    angle2 = angle2 + 20;               //角度+1
    angle2 = constrain(angle2,0,180);  //約束輸出
    myServo2.write(angle2);            //執(zhí)行角度
  }
  //C小于D,D比A光C-D為負(fù)數(shù) 舵機(jī)向D方向轉(zhuǎn)
  else if(valC - valD < -range2){
    angle2 = angle2 - 20;
    angle2 = constrain(angle2,0,180);
    myServo2.write(angle2);   
  }

  //串口輸出數(shù)據(jù),便于觀察工作原理
  Serial.print("A=");
  Serial.print(valA);
  Serial.print("||B=");
  Serial.println(valB);
  Serial.print("Angle1=");
  Serial.println(angle1);
  Serial.print("C=");
  Serial.print(valC);
  Serial.print("||D=");
  Serial.println(valD);
  Serial.print("Angle2=");
  Serial.println(angle2);
  delay(500);  //延時(shí)

}
視頻:





評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:230374 發(fā)表于 2020-4-9 12:21 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:701198 發(fā)表于 2020-4-26 14:18 | 顯示全部樓層
從視頻上看效果還不夠明顯
回復(fù)

使用道具 舉報(bào)

ID:688391 發(fā)表于 2020-5-11 12:35 | 顯示全部樓層
有接線圖嗎,舵機(jī)不動(dòng)啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表