创泽机器人
CHUANGZE ROBOT
当前位置:首页 > 新闻资讯 > 机器人开发 > 机器人直线行走的编程-接口、传感器的读数、地面的灰度阈值

机器人直线行走的编程-接口、传感器的读数、地面的灰度阈值

来源:机器人的天空     编辑:创泽   时间:2026/3/9   主题:其他 [加盟]

将两个巡线传感器分开一 点距离(大于线的宽度)安装在机器人的底盘 上,开始巡线的时候令黑线正好从两个巡线传 感器之间穿过,如图8-1所示。这样,如果两 个传感器检测到都在白色的地板上方,就说明 机器人在线的上方,可以让机器人一直往前 走;如果右边的传感器检测到了黑线,就往右 转;如果左边的传感器检测到了黑线就往左 转。若用原来的方法,即使机器人遇到一根直线,也要走“之”字形前进,而如果采用刚刚 设计的方案,机器人在巡直线的时候就完全可以笔直前进了,这样它就可以比“之”字形巡 线法跑得更快了。

当使用两个传感器时,在巡直线时机器人可以一直前进而不用拐弯,这样比走“之”字形的 轨迹就要平滑得多了。怎样让它走得更加平滑呢?很自然地,同学们就会想到,能不能再 增加更多的传感器数量呢?没错,这是一种很常用的办法。

如果有4个巡线传感器,就可以这么做:假设把4个传感器从右到左分别叫做1号、 2号、3号、4号。如果1号检测到了黑线,说明机器人行进的方向和黑线之间的角度已经 很大了,应该马上向右大幅转动;否则,如果2号检测到了黑线,则说明机器人的行进方向 和黑线之间有角度但还不是很大,只需要向右“温柔”地转弯就可以了。对于3号、4号传 感器,同学们可以用类似的方法进行分析。这样我们在控制程序中就可以判断,根据不同 的传感器给出不同的电机控制信号。用这种方法,机器人不仅比只有两个传感器时跑得 更快、更平滑,而且对于突然急转弯的黑线有更好的适应性。同学们会发现小机器人跑得 更加可靠了。

到目前为止,我们已经为机器人编写过好几个小程序了。在每个程序中都免不了要 和各种数字打交道,比如所使用的接口、传感器的读数、地面的灰度阈值等。在编写程序的过程中,也许有的同学已经发现了很多不方便的地方。

比如说在使用 pinMode 命令为端口规定方向时肯定要用到它的编号,然后再用 digitalRead 之类的命令操纵端口时也要用到同一个编号。同学们想一想,如果某天我们 突然要改为使用另一个端口,那么是不是要一个一个地把它的编号改变过去呢?显然用 这种方式编写程序修改起来既费力又容易出错。

再比如说,有时我们用analogRead 命令读到了传感器当前的值,但如果在接下来的 程序里我们还要用到这个值做比较复杂的计算,该怎么办呢?我们可不想在接下来的算 式中每个用到这个值的地方都去调用一次analogRead 命令,因为这样做的代价太大了。 实际上,在C 语言编程中,只要合理地使用常量和变量就可以很方便地解决上面这 几个问题了。

1.变量

变量是什么?顾名思义,变量就是数值可能发生变化的量。在程序中,常常需要把一 个数据存储起来供以后使用,还可能随时在程序中更改这个数据的值。这种情况下,就要 用到变量了。变量由数据类型、变量名和变量的值组成。

假设主控板上有一个温度传感器能感知外界温度。可以在程序里就可以声明一个叫 作温度(Temperature) 的变量来记录传感器的数值,并且声明它的类型是整数型。

int temperature; //int 代表变量类型是整数,变量名为 temperature, 表示温度

而在后面的程序运行过程中,主控板测得当前温度为20℃,在程序中就可以给温度 变量赋值为20。这时,如果要用它做各种计算,那么只要用temperature 这个变量名就可 以代表当前的温度值了。

temperature=20; //将温度赋值为20℃

2.变量的声明与赋值

上面的例子中,先声明了一个名叫 temperature 的整数型的变量。然后又将它赋值 为20。我们这么做时,变量的声明和赋值是分开进行的。而在另一种情况下,也可以在 声明变量的同时就为它赋值。这时给变量赋予的值叫作初始值或是默认值。比如,我们 认为房间内大部分情况下温度是23℃。就可以这样做:

int temperature=23; //声明名为temperature 的整型变量,并设初始值为23

当然,在后续的程序中随时可以改变这个变量的值,将它重新赋值为那时的温度值。 这也是我们为什么要使用变量的原因。

在为变量命名时,可以根据习惯使用英文或汉语拼音。但是,要注意的是变量名一般 都要和变量的实际用途相关。有的同学为了省事,喜欢用a0 、b1 之类的简单字母加上个 数字作为变量名。这样做是很坏的习惯,你的代码将会很难被别人读懂,甚至不久后你自 己都忘了它们是做什么用的。所以,请同学们一定要养成良好的命名习惯。这也是优秀 的程序员的标志之一。

3.常量

常量就是数值永远不会发生变化的量。我们在数学课中已经接触过好几个大名鼎鼎 的变量,和它相对的自然就是常量了。圆周率π就是一个大小永远不变的量 — — 常量。 在计算机程序中,有的数值是在程序的整个生命中都不会被改变的,我们就Z好用常量来 表示它们。常量的声明很简单,只要在变量的类型前加上一个 const 就可以了。不过,和 变量不同的一点是,常量在声明时一定要给它赋值,这个值就是它那个永远不变的值。

现在,同学们可能已经想到了,我们在程序中所使用的端口的编号就是典型的应该使 用常量来定义的。下面的例子就声明了一个整数类型的常量,用来表示 LED 小灯连接到 了主控板上的3号端口上。

const int ledPort=3; //声明一个名为 ledPort 的整数型常量,并赋值为3

4.数据类型

以前所举的所有例子里,变量和常量都是用来表示整数的。同学们一定会好奇,除了 整数类型,我们至少还学习过小数啊!比如,如果测得的温度值是20.5℃,那可怎么办 呢?现在就来介绍 一 下C 语言中的其他几种常用数据类型

此外,如果在 int 和 char 类型的变量前加上 unsigned 关键字,就代表这个变量不可 能为负值。

好了,现在就在一个实际例子中,用刚刚学到的知识定义几个不同类型的变量。

假设我们的程序需要处理学生的成绩,每个学生在考试中都得到了一个百分制的分 数,而这个分数又可以分为A、B 、C、D4 挡,还可以根据分数够不够60分判断是否及格。 已知全班同学的分数后还可以计算出平均分。那么很可能需要声明以下几个变量:

int score;

boolean isQualified;

char grade;

float averageScore;

//整数类型变量score 代表学生的分数

//布尔类型变量isQualified 代表学生是否及格

//字符类型变量 char 代表学生的分数等JA,B,C,D //浮点数类型变量averageScore 代表全班的平均分






智能巡线机器人的制作:digitalRead 、digitalWrite 、analogRead 、analogWrite、 pinMode 、delay

机器人传感器的位置在靠近黑线的左侧或者正好在黑线上;digitalRead 、digitalWrite 、analogRead 、analogWrite、 pinMode 、delay。它们构成了Arduino 中最为重要、最为常用的功能

微触开关传感器-很简单的传感器,用程序就能很准确地检测到它的开闭变化

微触开关也只有“开”和“闭” 两种不同的状态,把它连接到主控制器,用程序就能很准确地检测到它的开闭变化了,只要用 digitalRead 命令就可以很 方便地读取微触开关的值了,这个命令的用法

为机器人安上转向灯:连接机器人,编写程序,观察现象

将机器人、扩展板和小灯模块连接好,将右转向灯连接D5 号口,左转向灯连接D3号口;编写程序,让转向灯亮灭的语句,左转向灯熄灭,同时机器人向右转弯

简单机器人的主控制器与扩展板

机器人的主控制器可以用这些插针和各种传感器或执行器共同工作,用灰色的RJ11 线连接各种传感器 和执行器,而不用担心线路连错或连反,连接时如果听到“咔嚓”就代表连接成功

机器人中最为流行的驱动方式-双轮差速驱动

常见的一种机器人驱动方式—双轮差速驱动,左轮和右轮以同样的速率向前转动,机器人向正前方前进;左轮和右轮 以同样的速率向后转动,转弯半径的大小取决于左右两个轮子的转动速度之差

机器龟的结构制作材料:底盘,执行器,传感器,中型减速电机,万向轮,标准舵机

机器龟有一个PWM驱动的活动 底盘,底盘上搭载了一个可旋转的传感器平台,机器人头部设置了一个距离传感 器,底盘下装有4个边缘传感器

机器人的避障功能原理:接触式传感器触发的“神经阻断”电路

制作静片使用的材料是端子芯和黄铜管,把一根有弹性的金属丝套在铜管里做开关的动 片,碰到物体后,金属丝和铜管内壁接触,电路导通,以用电阻引脚弯个圆圈做成静片

4足机器人的制作材料:微型减速电机,车条,曲别针,热缩管

电机的布局建议稍微靠后,给两条前腿留出多 一点活动空间。因为前面制作的CPG 是主-从神经元结构,前腿带着后腿走,前腿的动作幅度大于后腿。这样的设计可以使机器人跨越路面上的一些小障碍

机器人CPG(中枢模式发生器)的制作材料:74HC240,电阻,洞洞板,20脚PDIP插座,锂电池,LED

神经网络中最关键的元件是电阻R3,R3的阻值过小,左、 右两侧机体就无法协调运转,机器人就好像喝醉了一样。实际R3的阻值可以选取 1~10MΩ

蚂蚁机器人的制作材料:74HC240,光敏二极管,微型电机,电源端子,插头尾簧,洞洞板

,74HC240,4个,光敏二极管,2个,0.22μF无极电容,6个,微型电机,2个,1MΩ电阻,6个,1.5MΩ电阻,2个,PC电源端子(母,拆芯),2位,小型压线端子(拆芯),2位,3mm黄铜管(可选),1小段,RCA插头尾簧,1个

3D光电跟踪头的制作材料:74HC240,二极管,电容电阻,锂电池,开关端子

光电跟踪头的感光元件可以使用任何规格的光敏二极管或红外线接收二极管;74HC240 在这里作为两组神经元电路使用;74HC245 是小型BEAM 机器人常用的双向电机驱动芯片

2D光电跟踪头的构造:两个光敏二极管, 一 片数字逻辑集成电路,一个减速电机

电机为机器人制作中常用的N20 微型减速电机,标称电压为6V;感光元件串联在电源两端;芯片的第1/19脚为 使能端,实际使用中要接低电平;端子芯取自工业连接器里面的接线排座
资料获取
机器人开发
== 资讯 ==
机器人直线行走的编程-接口、传感器的读数
智能巡线机器人的制作:digitalRe
OpenClaw 完全使用手册-所需的硬
智能复合机器人的成本构成:硬件本体,场景
具身智能复合移动机器人产业发展蓝皮书20
OpenClaw自我研究1.0报告 by
OpenClaw发展研究报告1.0-Th
微触开关传感器-很简单的传感器,用程序就
为机器人安上转向灯:连接机器人,编写程序
简单机器人的主控制器与扩展板
机器人中最为流行的驱动方式-双轮差速驱动
机器人对人类的帮助:代替人类完成体力劳动
机器人的四大组成部分:主控制器,传感器,
AI 革命进入新阶段,赋能全场景终端-从
具身智能商业化元年全洞察-政策密集出台,
== 机器人推荐 ==
迎宾讲解服务机器人

服务机器人(迎宾、讲解、导诊...)

智能消毒机器人

智能消毒机器人

机器人开发平台

机器人开发平台


机器人底盘 Disinfection Robot 消毒机器人  讲解机器人  迎宾机器人  移动机器人底盘  商用机器人  智能垃圾站  智能服务机器人  大屏机器人  雾化消毒机器人  展厅机器人  服务机器人底盘  具身智能教育机器人  智能配送机器人  导览机器人 
版权所有 创泽智能机器人集团股份有限公司 运营中心:北京 清华科技园九号楼5层 生产中心:山东日照太原路71号
销售1:4006-935-088 销售2:4006-937-088 客服电话: 4008-128-728