Arduino使用循迹传感器

本文介绍我买的37款传感器套件中的循迹传感器模块,它的实物图如下:
Arduino使用循迹传感器 - gc_2299 - gc_2299的博客
  模块的左边是红外发射和接收装置,模块中间靠右位置是一个调节测量距离的可调电阻,它总共有三个引脚,从上到下分别为:
VCC:接电源正极
OUT:信号输出引脚,输出1表示测量面颜色较深,输出0表示测量面颜色比较浅
GND:接电源负极

参考卖家和参考文献中给的代码进行测试,测试代码如下:

int Led = 13; //定义LED 接口
int buttonpin = 9; //定义寻线传感器接口
int val;//定义数字变量val
void setup()
{
pinMode(Led, OUTPUT); //定义LED 为输出接口
pinMode(buttonpin, INPUT); //定义寻线传感器为输出接口
}
void loop()
{
val = digitalRead(buttonpin); //将数字接口3的值读取赋给val
if (val == HIGH) //当寻线传感器检测有信号时,LED 闪烁
{
digitalWrite(Led, HIGH);
}
else
{
digitalWrite(Led, LOW);
}
}

实物连接图如下:
Arduino使用循迹传感器 - gc_2299 - gc_2299的博客
 
最后是演示视频:

注意事项
1)实际应用时,红外发射接收装置应该朝向地面,之前测试时不清楚,红外装置朝上,信号输出引脚的输出值始终没有变化;
2)实际应用时,一般是多个循迹模块同时使用,Arduino通过判断不同位置的循迹模块的输出值,来判断小车或者其它设备该如何移动。
3)需要调节可调电阻,找到最佳的检测距离,否则循迹模块的输出引脚始终输入高电平或者低电平。

参考文献:
[1]http://s.etao.com/detail/38038171970.html?tbpm=20161226
[2]http://www.fishing-sh.com/et/item.php?id=528132899161
[3]https://sites.google.com/site/studyarduino/04mblock/03mblock-xun-ji-che
为了调试Arduino循迹小车的PID算法,你可以按照以下步骤进行操作: 1. 首先,确保你已经正确连接了红外发射接收传感器和电机驱动模块,并且将引脚连接到正确的Arduino引脚上。 2. 在Arduino的setup()函数中,初始化红外传感器引脚为输入模式。你可以使用以下代码进行初始化: ```cpp void setup() { for (int i = 0; i < numSensors; i++) { pinMode(sensors\[i\], INPUT); } } ``` 其中,numSensors是传感器的数量,sensors是一个数组,包含了每个传感器的引脚号。 3. 在Arduino的loop()函数中,读取传感器的值并计算PID输出。你可以使用以下代码进行计算: ```cpp void loop() { // 读取传感器的值 for (int i = 0; i < numSensors; i++) { sensorValues\[i\] = digitalRead(sensors\[i\]); } // 计算误差 float error = 0; float sum = 0; for (int i = 0; i < numSensors; i++) { error += (i - 3.5) * sensorValues\[i\]; // i - 3.5 是为了让误差在\[-3.5, 3.5\]之间 sum += sensorValues\[i\]; } if (sum == 0) { // 避免除0错误 return; } error /= sum; // 计算PID输出 float pidOutput = Kp * error + Kd * (error - lastError) + Ki * totalError; lastError = error; totalError += error; // 控制小车运动 int leftSpeed = 200 + pidOutput; // 左轮的速度 int rightSpeed = 200 - pidOutput; // 右轮的速度 if (leftSpeed > 255) { // 速度限制在\[0, 255\]之间 leftSpeed = 255; } else if (leftSpeed < 0) { leftSpeed = 0; } if (rightSpeed > 255) { rightSpeed = 255; } else if (rightSpeed < 0) { rightSpeed = 0; } analogWrite(3, leftSpeed); // 控制左轮速度的引脚 analogWrite(5, rightSpeed); // 控制右轮速度的引脚 } ``` 其中,Kp、Kd和Ki是PID控制器的参数,lastError和totalError是用于保存上一次误差和累计误差的变量。 4. 上传代码到Arduino,并观察循迹小车的运动。你可以通过串口监视器输出调试信息,例如打印误差值、PID输出等,以便更好地理解和调试算法。 5. 根据实际情况,调整PID参数,使得循迹小车能够更精确地跟随黑色线条。你可以逐步增加或减小Kp、Kd和Ki的值,并观察小车的运动效果,直到达到你期望的效果为止。 希望以上步骤对你调试Arduino循迹小车的PID算法有所帮助! #### 引用[.reference_title] - *1* *2* *3* [pid循迹小车的实现,arduino](https://blog.csdn.net/u010970956/article/details/130398092)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值