DIY Arduino自动追光器
DIY Arduino自动追光器材料:Arduino UNO两个舵机四个光敏电阻四个小电阻代码://追光系统#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);//延时
}视频:https://pan.baidu.com/s/1uwRdmawszXfamLB5g4pppA
十分感谢楼主分享,过来学习一下。其中几个判断句中,格式是否应为:if((valA-valB)>range1)?以下几处类同;在C与D的第一次比较中,注释语句应为C大于D;另外视频文件无法播放,能否重新处理一下?再次深表感谢。 视频文件无法播放,能否重新处理一下. 教程详细,可以学到 有没有电路图
有没有电路图 跪求电路图
碌碌无为 发表于 2019-12-31 16:42
十分感谢楼主分享,过来学习一下。其中几个判断句中,格式是否应为:if((valA-valB)>range1)?以下几处类同 ...
大佬能不能发一下电路图谢谢 向楼主学习
页:
[1]