找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6324|回复: 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);  //延时

}
视频:





评分

参与人数 1黑币 +50 收起 理由
admin + 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 单片机教程网

快速回复 返回顶部 返回列表