巡防小车的巡线功能同时可以用图形化编程软件来实现。博主这里用的图形化编程软件是KRobot。

三、图形化巡线小车编程

  • 3.1 编程环境配置
    • 3.1.1 下载编程软件
    • 3.1.2 安装编程软件
  • 3.2 Krobot(啃萝卜)编程软件
    • 3.2.1 硬件接线
    • 3.2.2 图形模块
  • 3.3 巡线小车图形化编程
    • 3.3.1 硬件模块连接
    • 3.3.2 图形化编程
    • 3.3.3 巡线小车源码说明

3.1 编程环境配置

3.1.1 下载编程软件

Krobot软件可以到百度(www.baidu.com)搜索“Krobot下载”,在搜索结果中选中第2个链接,下拉页面找到下载地址,选中任意一个链接进行下载。

Krobot下载后的软件安装包如下图2所示,目前的停更版本为V0.8.5。

3.1.2 安装编程软件

双击安装包准备安装软件,在弹出的“许可证协议”界面选择“我同意”,将会进入下一步选项。

下一步是选择软件安装路径,默认是装在C盘,可以自定义路径安装,不会影响软件操作,选择“安装”。

显示Krobot软件的安装进度,以及创建一些必要的文件等。

完成安装,点击“完成”退出安装向导,界面中的“运行KRobot”选项前面复选框是打√的,所以退出安装向导后会直接运行Krobot。

如果能正确打开Krobot(啃萝卜)软件,说明安装过程没出现什么问题,在下次想打开软件时,只需要双击电脑桌面生成的“KRobot”快捷方式。对软件界面中的电路板是不是有点印象呢

3.2 Krobot(啃萝卜)编程软件

3.2.1 硬件接线

打开Krobot软件首先看到的是硬件接线界面,除了基本菜单栏之外,基本分外左右两个部分。左边的是标准模块列表,Arduino控制器所能用到的外接设备在这个列表基本都齐了,模块主要分为3类,(1)传感:即设备输入类,如按键;(2)执行:即设备输出类,如LED灯;(3)通信:即通讯设备,如串口。(所有模块详细介绍见附录)

右边是接线界面,首先我们看左上角的一个下拉菜单,点开后能看到下拉菜单中包含了几款常用的Arduino控制器:Arduino UNO、Arduino Leonardo、Arduino Nano和Arduino Mega 2560,默认是选择Arduino UNO。当我们选择其他Arduino控制器的时候,可以发现位于中间的小板子也跟着改变成所选Arduino控制器的模样,给人感觉很友善。

3.2.2 图形模块

接下来单击软件界面右上角“编程”图标,切换到图形编程界面。如下图所示。

图形编程界面,往后给Arduino控制器编写程序/固件的界面。主要分为左右的模块选取列表、模块编程区。

模块选取列表:位于界面左侧,模块类别细分为模块类、数据类、变量类、函数类、控制类、运算类、代码类、时间类:
(1)模块类:存放配置引脚功能的模块,如配置引脚的数字量、模拟量等;
(2)数据类:给引脚/模块赋值数字量(高电平、低电平),添加文本等操作;
(3)变量类:新建变量,变量赋值,设置变量类型,新建变量数组,变量数组调用等操作;
(4)函数类:新建自定义函数,自定义函数调用,设置函数返回值等;
(5)控制类:逻辑模块调用类,如操作循环次数控制,如果…那么,否则如果…那么,否则那么…等;
(6)运算类:数据判断类,判断两个变量/数据大小、最大值,逻辑运算等;
(7)代码类:可以为自己编写的模块做代码注释,或是自定义输入自己的代码等;
(8)时间类:可以控制每个操作之间停留的时间间隔的模块,做延时操作用。
每个模块类所展示出来的都是基本模块,在这些模块右上角还有一个不起眼的“高级”图标,单击“高级”图标可以看到该类中更加丰富的图形模块。如果在基础模块中找不到你想要的控制模块时,试试进入高级模块中看看。图13所示为控制类的基础模块和高级模块。(所有图形模块详细使用见附录)

模块编程区:位于界面右侧,划分为3项内容:
(1)全局变量、函数:上面提到的变量类的新建变量,以及函数类的新建函数等操作,就是在这一项里面完成的。全局变量,即初始化一次,就可以在所有函数中调用和重新赋值,如果只能在单个函数中使用的,称为局部变量;
(2)Setup:Setup实质上是一个初始化函数Setup(),作用在于Arduino控制器上电之后的板载设备初始化,如初始化内存后可以运行固件,初始化系统时钟等;在本书中我们只需对引脚I/O(Input/Output)做初始化配置就足够了,系统资源已经默认配置好了;Setup函数的内容在电路板上电过后只做一遍,在按下电路板复位按键时,会重新执行一遍Setup函数;
(3)Loop:循环函数Loop(),将Arduino控制器上电后需要重复运行的操作放在这里,在Arduino控制器运行过一次Setup函数后,就会一直做Loop函数里面的事情,而且是无限循环;比如要实现蜂鸣器2秒鸣叫一次,只需要在Loop函数中加
入蜂鸣器鸣叫模块和2秒的延时模块,即可以实现所要的效果。因为是无限循环,所以在Loop函数中加入模块需要慎重。

3.3 巡线小车图形化编程

3.3.1 硬件模块连接

打开Krobot软件,在模块连接界面默认控制器是Arduino UNO,拖动左侧模块列表,分别找到舵机模块、串口模块和软串口模块(连接OpenMV串口),接线引脚如下表所示。

模块引脚 Arduino引脚
舵机模块 Pin3
串口模块 Pin Serial
软串口模块(RX) Pin9
软串口模块(TX) Pin10

按照引脚连接表进行模块连接,如下图所示。

3.3.2 图形化编程

通过点击右上角“编程”选项进入图形化编程界面,左侧为图形化指令模块,右侧则为图形化指令模块的逻辑编程区:全局变量、函数定义区、setup编程区、loop编程区。


选择左侧“变量”类指令的高级指令,在全局变量区分别定义文本变量Angle_str为空文本,定义整数变量Angle_value初始值为0,定义布尔变量RunOrder为False;变量赋值的指令模块可以“数据”类指令中找到,再单击输入框进行变量赋值。

在全局变量、函数区定义全局函数,作为使小车前进的驱动函数,在“函数”类指令中可找到函数定义模块,从“模块”类中添加相关引脚数字量及模拟量设置,引脚的赋值指令可在“数据”类中找到,从“时间”类中添加延时指令,如下图中的配置。

在setup编程区中,进行小车电机相关控制引脚的模式设置,设置串口和软串口的串口波特率,设置舵机(小车车头转向)的初始角度值。

在loop编程区中检测软串口数据接收,当接收到软串口数据时,使用“控制”类循环指令进行软串口数据完整获取,定义整数型变量SoftRead_int赋值为软串口接收的数据,再对变量SoftRead_int做出判断,不为结束符时将变量SoftRead_int转换成字符型变量SoftRead_char,再进行字符串赋值。

当判断软串口数据位结束符时,调用小车前进的全局函数RunForward,定义整型(int)变量Angle_int并赋值为软串口字符串数据转为整型数据,通过串口将变量Angle_int值进行串口打印,同时计算角度值赋值给舵机引脚进行舵机旋转角控制,其中字符串转换整数部分使用“代码”类指令直接进行代码编写。

3.3.3 巡线小车源码说明

进行图形编程后,可直接在Krobot中看到图形编程指令对应的实现代码,在编程界面点击右上角的“显示/隐藏源码”,即可看到对应代码。

巡线小车源码与图形指令的内容一样对应,下面对源码做简单说明。

#include <Servo.h>                     //添加舵机头文件
#include <SoftwareSerial.h>               //添加软串口相关函数头文件SoftwareSerial serial2_0(9, 10);      //定义软串口引脚,Pin9(rx),Pin10(tx)
Servo servo_0;                          //创建舵机对象//新建全局变量
String Angle_str = "";
int Angle_value = 0;
bool RunOrder = false;//控制小车前进的函数
void RunForward() {digitalWrite(8, HIGH);digitalWrite(7, LOW);analogWrite(6, 150);digitalWrite(2, HIGH);digitalWrite(4, LOW);analogWrite(5, 150);delay(100);analogWrite(6, 60);analogWrite(5, 60);
}//setup函数
void setup() {Serial.begin(9600);serial2_0.begin(9600);servo_0.attach(3);               //初始化舵机连接引脚为Pin3pinMode(2, OUTPUT);             //设置小车电机引脚为输出模式pinMode(4, OUTPUT);              //设置小车电机引脚为输出模式pinMode(7, OUTPUT);              //设置小车电机引脚为输出模式pinMode(8, OUTPUT);              //设置小车电机引脚为输出模式Serial.begin(115200);            //设置串口波特率115200serial2_0.begin(115200);         //设置软串口波特率115200servo_0.write(90);              //为舵机写入初始化角度 -- 90度
}//loop函数
void loop() {//软串口数据监测if (serial2_0.available()) {//串口数据获取while (serial2_0.available()) {int SoftRead_int = serial2_0.read();            //新建变量赋值串口数据//判断是否收到完整数据if (SoftRead_int == '\n') {//当小车目前未静止状态时,驱动小车前进行驶if (RunOrder == false) {RunForward();RunOrder = true;}int Angle_int;                             //定义整型数据Angle_int = Angle_str.toInt();         //将字符串数据转换成整型数据并赋值Serial.print("Angle Value is : ");      //串口数据打印Angle_value = (90 + (int)(Angle_int / 2));    //计算舵机需要转动的角度Serial.println(Angle_value);               //串口打印舵机转动角度值servo_0.write(Angle_value);                //将新角度写入舵机引脚控制小车转向Angle_str = "";                            //字符串清空} else {char SoftRead_char = SoftRead_int;      //将串口整型数据转换成字符型数据Angle_str = (Angle_str + SoftRead_char); //字符串赋值}}}
}

编写完成程序后,单击编程区上方的“上传”图标,保存案例路径,把程序通过USB线上核心板的MCU中。当软件能检测到有多个端口时,打开电脑设备管理器,确定串口芯片CH340的连接端口,如图所示。选择Arduino控制器的端口,确定程序上传,程序上传成功后,会有窗口提示上传完成。

程序编译完成后,选择上传串口,上传固件。

然后可以用小车去测试巡线功能了。

Arduino案例实操 -- 智能巡防小车(三)图形化巡线小车编程相关推荐

  1. Arduino案例实操 -- 智能巡防小车(三)Arduino IDE巡线小车编程

    三.Arduino IDE巡线小车编程 3.1 Arduino开发环境 下载免安装ZIP包 下载IDE安装包 3.2 Arduino IDE 3.3 Blink项目实例 打开内置案例 进行程序上传 3 ...

  2. Arduino案例实操 -- 智能巡防小车(四)火焰检测功能扩展

    当小车可以自行完成巡线功能后,在有剩余空闲I/O口的情况下,还可以为巡线小车添加火焰检测功能,让它成为名副其实的 "巡防小车" ! 添加火焰检测功能 4.1 添加器件 4.2 火焰 ...

  3. Arduino案例实操 -- 智能巡防小车(五)小车APP功能扩展

    智能巡防小车做到第四篇的程度基本把需要的功能都完成了,还可以另外扩展一个控制小车的APP出来,小车与APP交互的数据包括小车当前行走状态.火源勘测状态,舵机角度(小车转向角和风扇转向角).风扇开关状态 ...

  4. Arduino案例实操 -- 语音播放模块(DY-SV5W)

    案例主控板如不做特殊说明的话,均默认是Arduino UNO控制板. 本次实验以UNO发送串口协议控制语音播放器播放歌曲,语音播放模块选型DY-SV5W. 文章标题导航 一.硬件选择 1. Ardui ...

  5. Arduino案例实操 -- 磁悬浮套件(上推式)

    磁悬浮装置,是由转子.传感器.控制器和执行器4部分组成,其中执行器包括电磁铁和功率放大器两部分.假设在参考位置上,转子受到一个向下的扰动,就会偏离其参考位置,这时传感器检测出转子偏离参考点的位移,作为 ...

  6. Arduino案例实操 -- AS608光学指纹模块

    指纹,也叫手印,即是表皮上突起的纹线.由于人的指纹是遗传与环境共同作用产生的,因而指纹人人皆有,却各不相同.由于指纹重复率极小,大约150亿分之一,故其称为"人体身份证". 目录指 ...

  7. (三)stm32巡线小车首尝试 测速篇

    #采用stm32f103c8t6芯片 这回是测速篇了!越来越难了,呜呜呜. 这里的测速,指的是测量轮子的转速,来确定车子前进的方向,同时方便控制小车的转向.我手上的测速元件是u型的光电传感器,型号是m ...

  8. 新硬盘挂载-fdisk+mount案例实操

    新硬盘挂载-fdisk+mount案例实操 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 现在很多服务器都支持热插拔了,当有新的硬盘插入到服务器上我们需要将其分区,格式化,然后挂载 ...

  9. 数据模型同学看过来|代码案例实操来袭

    去年年底,央行开出反洗钱罚单,多家银行合计被罚1040万元. 当时,中国人民银行石家庄中心支行披露的反洗钱行政处罚信息公示表显示,因涉及未按照规定履行客户身份识别义务等,中行.邮储.浦发三家银行以及阳 ...

最新文章

  1. Java并发编程之介绍
  2. rbf神经网络_基于RBF神经网络的监督控制(09)
  3. kuka机器人if逻辑编程_【视频】说说工业机器人控制与PLC通讯
  4. 2012_Houdini_ShowReel.
  5. 从抵触到力推,.Net Core的成功让微软正视开源
  6. [读书笔记]Ajax的通信方式 (一)
  7. [010]Try块和异常处理
  8. XRF与ICP比较的差异
  9. nanodlp micro USB mini USB接线图
  10. uCore OS Lab 1 系统软件启动过程
  11. 大数据分析师的报考条件是什么?
  12. css3动画animation属性大全
  13. android触屏对焦_Android自定义相机实现自动对焦和手动对焦
  14. 示例填充图片_用示例解释洪水填充算法
  15. 电子邮件营销与MailChimp。它是适合你
  16. 当程序崩溃的时候怎么办 part-1 Iven 本文由 大侠自来也
  17. apprtcH5+iOS+android音视频通信
  18. unity 加载c++ dll文件提示DllNotFoundException的解决办法
  19. 螯合物116052-88-1,DOTA-P-苯-NO2具有强亲水性
  20. 史上最全机器学习_深度学习毕设题目汇总——视频

热门文章

  1. 背记不如实战系列-javaGUI实例-日历制作
  2. C语言 获取网页内容
  3. MIUI8不用root更换字体的方法
  4. Mac 电脑四大类生产力软件,你还缺少哪些?
  5. win10桌面图标有小白标_白标移动应用程序,带有react native和babel
  6. iPhone闯大祸!车祸检测大量误报挤占救援资源
  7. Python pdf转csv
  8. Android自定义TabBar
  9. 2022年证券从业资格投资顾问考试每日一练及答案
  10. 网卡清空缓存命令_怎么清除dns缓存 查看与刷新本地DNS缓存方法 (全文)