一起玩儿物联网人工智能小车(ESP32)——14. 用ESP32的GPIO控制智能小车运动起来(二)

摘要:本文主要讲解如何使用Mixly实现对单一车轮的运动控制。

下面就该用程序控制我们的小车轮子转起来了。打开Mixly软件,然后单击顶部"文件"菜单中的"新建"功能,我们来开启一个新程序的开发工作。

我们的工作同样是先从最简单的开始,初期只控制一个轮子,实现轮子的正转3秒钟、停止3秒钟、反转3秒钟、停止3秒钟,然后再正转......,依次循环。

在进行具体开发之前,再回忆一下使用GPIO的步骤有哪些吧(以后会看到大部分的硬件功能都是这个模式)。

首先是设置工作模式和参数,对设备进行初始化工作。其次是控制GPIO端口输出高电平或者低电平。第一步设置GPIO工作模式的工作由Mixly自动完成了,我们不需要做什么事情。我们只需要将所使用的GPIO引脚初始化为低电平,却把初始状态,车轮子是不动的。

在Mixly软件的左侧功能模块区点击"控制"然后找到"初始化"功能,将其拖拽到右侧工作区的空白位置。这个"初始化"功能所生成的代码,在将来程序运行的时候,只执行依次,因此它的作用就是做一些一次性的准备工作。然后在"输入/输出"功能模块区,找到"数字输出"功能,将其拖拽到"初始化"内部,"数字输出"有两个参数,一个是使用那个GPIO引脚,一个是输出高电平还是低电平。在这里,我们设置一个电机的2个GPIO引脚为低电平。设置好后,如下图所示:

接下来该控制这两个GPIO引脚输出高低电平了。先拖拽到工作区空白一个"数字输出功能",设置相应的引脚输出为高电平。之后需要延迟3秒钟。"延时"功能,在"控制"功能区,默认延时的单位是毫秒,所以将延时时间值设置为3000,这样延时时间就设置好了。之后,是需要将电动机停下来,那么就把刚刚输出高电平的引脚恢复成低电平就可以了。之后又是延时,然后再同样的方法,控制另外一个引脚输出高低电平,整个完成的程序如下图所示:

接下来就可以将ESP32开发板连接到电脑上,下载程序进行测试了。你的智能小车的轮子转起来了没有?如果没有成功,可以从以下几个步骤查找一下问题出在了哪里:

  1. 程序编译和上传都没问题把?要确保这个过程没有出错。
  2. 先查一下程序,看看有没有不小心设置错误的地方。
  3. L298N模块的电源开了没有?红色LED电源指示灯亮了吗?
  4. L298N模块的GND与ESP32扩展版的GND连接到一起了吗?
  5. 检查一下接线是否牢固正确,对应的GPIO引脚正确吗?看看杜邦线有没有虚接,有没有插错位置?

接下来我们来看一下Mixly为我们生成了哪些代码吧?点开侧边栏,程序的代码如下所示:

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| void setup(){ pinMode(32, OUTPUT); //将32引脚设置为输出模式 pinMode(33, OUTPUT); //将33引脚设置为输出模式 digitalWrite(32,LOW); //将32引脚设置输出低电平 digitalWrite(33,LOW); //将33引脚设置输出低电平 } void loop(){ digitalWrite(32,HIGH); //将32引脚设置输出高电平,车轮开始转动 delay(3000); //延时3秒钟 digitalWrite(32,LOW); //将32引脚设置输出低电平,车轮停止转动 delay(3000); //延时3秒钟 digitalWrite(33,HIGH); //将33引脚设置输出高电平,车轮开始反向转动 delay(3000); //延时3秒钟 digitalWrite(33,LOW); //将33引脚设置输出低电平,车轮停止转动 delay(3000); //延时3秒钟 } |

我们可以看到,整个代码包含了两个函数:setup()函数和loop()函数。从名字上就可以看出setup()函数是用来进行初始设置的,在机器启动的时候会自动的调用这个函数。loop()函数包含了ESP32芯片在运行期间所要进行的工作,这个函数会被循环多次调用。

在setup()函数中,调用了2个关于GPIO的函数,pinMode()函数用来设置GPIO端口的工作模式,这个函数由2个参数,第一个参数是GPIO引脚的索引,表明了要设置的是哪个引脚,第二个参数是要将前面指定的引脚设置成什么工作模式。关于GPIO的工作模式在前面已经讲解过了。digitalWrite()函数则用来指定某个引脚的输出电平为高还是低。这个函数也是两个参数,应该一看就明白了,在这里就不解释了。

在loop()函数中,就是改变GPIO输出的状态,然后延时。delay()就是延时函数,这个函数的参数就是延时时间,单位是毫秒。

这个程序应该很容易看懂。希望那些初学者可以跟着我,从看懂代码开始,逐步过渡到能够自己编写代码。嵌入式系统的代码相对于那些应用程序来说,无论从规模还是复杂程度上,都比应用程序要简单很多。Mixly虽然已经是一个功能完善的图形化开发工具了,但其功能还是很有限,只适用于初始的学习使用,后边还是要过渡到直接编写代码的开发工具中去。

好了,一个轮子的转动控制我们就学会了,大家有时间可以改变一下控制的GPIO引脚,让剩下的几个轮子也转起来吧!

相关推荐
@@庆1 小时前
stm32 PWR电源控制(修改主频&睡眠模式&停机模式&待机模式)
stm32·单片机·嵌入式硬件
JT灬新一1 小时前
STM32巡回研讨会总结(2024)
stm32·单片机·嵌入式硬件
爱桥代码的程序媛2 小时前
鸿蒙OpenHarmony【轻量系统芯片移植案例】标准系统方案之瑞芯微RK3568移植案例
嵌入式硬件·harmonyos·鸿蒙·鸿蒙系统·移植·openharmony·鸿蒙开发
Whappy0012 小时前
51单片机-DA(数字转模拟)
单片机·嵌入式硬件·51单片机
鸽子汤1972 小时前
想高效开发?从文件系统开始着手。。。
嵌入式硬件·物联网·硬件工程
Whappy0012 小时前
51单片机-AD(模拟信号转数字信号)-实验()
单片机·嵌入式硬件·51单片机
钡铼技术4 小时前
通过iFIX在ARMxy边缘计算网关上实现维护管理
人工智能·物联网·边缘计算·钡铼技术·armxy边缘计算网关
华清远见IT开放实验室7 小时前
【项目案例】物联网比较好的10+练手项目推荐,附项目文档/源码/视频
物联网·音视频
limingade7 小时前
手机实时提取SIM卡打电话的信令和声音-新的篇章(一、可行的方案探讨)
物联网·算法·智能手机·数据分析·信息与通信
redcocal12 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘