arduino黑线循迹小车程序_基于arduino的循迹小车(含有PID算法)

这篇博客详细介绍了如何基于Arduino实现黑线循迹小车的程序,涵盖从简单的闭环赛道到包含90度弯道、十字路口、S形弯道等复杂情况。文章通过检测循迹模块的数据,运用PID算法进行转向控制,确保小车稳定行驶。作者提供了包含PID和不包含PID的完整程序链接供读者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

循迹小车一般分为两方面:一方面是简单的闭环赛道只有直道和弯道,另一方面是毕设类型的包括一些元素:90度弯道、十字道路、S形弯道等。

本篇博客试根据下图来进行书写的,如果大家有什么新的元素,也可以在下方评论,我进行更新。

4d141245ca4814a5416bd46a9f71809b.png

作者:sumjess

注意本篇博客循迹模块使用了5个

一、简单的闭环赛道

随意画了一个

15e5ae6a33029a39cbf360fe76e87bc9.png

(1)逻辑部分:

   ecb65c85bf2e0ef44af201ba8d04d5ff.png

所以程序的写法也很简单,就是检测到哪种情况对应着哪种反应。这一过程可以用switch也可以用if来实现这一过程。下文用if来演示。

(2)各程序片段

总的循环:

void loop(){
         read_sensor_values();  //获取5个循迹模块的数值情况     calc_pid();            //pid计算出转向的pwm值     motor_control();       //电机转动}

第一部分:检测部分程序片段

void read_sensor_values(){
      sensor[0] = digitalRead(leftA_track_PIN);  sensor[1] = digitalRead(leftB_track_PIN);  sensor[2] = digitalRead(middle_track_PIN);  sensor[3] = digitalRead(righA_track_PIN);  sensor[4] = digitalRead(righB_track_PIN);    if ((sensor[0] == 0) && (sensor[1] == 0) && (sensor[2] == 0) && (sensor[3] == 0) && (sensor[4] == 1)) {
          error = 2;//          0 0 0 0 1    } else if ((sensor[0] == 0) && (sensor[1] == 0) && (sensor[2] == 0) && (sensor[3] == 1) && (sensor[4] == 0)) {
          error = 1;//          0 0 0 1 0    } else if ((sensor[0] == 0) && (sensor[1] == 0) && (sensor[2] == 1) && (sensor[3] == 0) && (sensor[4] == 0)) {
          error = 0;//          0 0 1 0 0    } else if ((sensor[0] == 0) && (sen
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值