单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:5408|回复:3

DIY Arduino追光器

[复制链接]
ID:426684发表于 2019-12-20 19:45|显示全部楼层
DIY Arduino追光器

1.Arduino UNO

2.舵机 x2

3.光敏电阻 x4

4.电阻 x4


IMG_20191220_191026.jpg
IMG_20191220_191042.jpg


代码:

//追光系统
#include< Servo.h>  //载入Servo库
#define InA A0     //定义读取a光敏电阻的模拟口
#define InB A1     //定义读取b光敏电阻的模拟口
#define InC A2     //定义读取c光敏电阻的模拟口
#define InD A3     //定义读取d光敏电阻的模拟口

int valA,valB;     //用于存储两个光敏电阻的数值
int valC,valD;     //用于存储两个光敏电阻的数值  
int angle1 = 90;   //设置初始角度
int range1 = 100;   //设置范围
int angle2 = 45;   //设置初始角度
int range2 = 100;   //设置范围
Servo myServo1;
Servo myServo2;

void setup() {
   myServo1.attach(2);     //定义舵机接口
   myServo1.write(angle1);   //初始化舵机角度为90度
   myServo2.attach(3);     //定义舵机接口
   myServo2.write(angle2);   //初始化舵机角度为90度
   Serial.begin(9600);   //设置串口波特率
}

void loop() {
   valA = analogRead(InA);  //读取A光敏电阻数据
   valB = analogRead(InB);  //读取B光敏电阻数据
   valC = analogRead(InC);  //读取C光敏电阻数据
   valD = analogRead(InD);  //读取D光敏电阻数据
   //正极接光敏,越光数值越大 A大于B,A比B光 A-B为正数 舵机向A方向转
   if(valA-valB > range1){
   angle1 = angle1 + 20;           //角度+1
   angle1 = constrain(angle1,0,180);  //约束输出
   myServo1.write(angle1);         //执行角度
   }
   //A小于B,B比A光 A-B为负数 舵机向B方向转
   else if(valA - valB< -range1){
   angle1 = angle1 - 20;
   angle1 = constrain(angle1,0,180);
   myServo1.write(angle1);  
   }

   //C大于B,C比D光C-D为正数 舵机向C方向转
   if(valC-valD > range2){
   angle2 = angle2 + 20;           //角度+1
   angle2 = constrain(angle2,0,180);  //约束输出
   myServo2.write(angle2);         //执行角度
   }
   //C小于D,D比A光C-D为负数 舵机向D方向转
   else if(valC - valD< -range2){
   angle2 = angle2 - 20;
   angle2 = constrain(angle2,0,180);
   myServo2.write(angle2);  
   }

   //串口输出数据,便于观察工作原理
   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);  //延时

}
视频:





评分

黑币 +50
收起理由
+ 50
共享资料的黑币奖励!

查看全部评分

ID:230374发表于 2020-4-9 12:21|显示全部楼层
谢谢分享
ID:701198发表于 2020-4-26 14:18|显示全部楼层
从视频上看效果还不够明显
ID:688391发表于 2020-5-11 12:35|显示全部楼层
有接线图吗,舵机不动啊

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网