当前位置: 首页 > news >正文

一起玩儿物联网人工智能小车(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引脚,让剩下的几个轮子也转起来吧!

相关文章:

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

摘要:本文主要讲解如何使用Mixly实现对单一车轮的运动控制。 下面就该用程序控制我们的小车轮子转起来了。打开Mixly软件,然后单击顶部“文件”菜单中的“新建”功能,我们来开启一个新程序的开发工作。 我们的工作同样是先从最简单的开始&am…...

[PyTorch][chapter 8][李宏毅深度学习][DNN 训练技巧]

前言: DNN 是神经网络的里面基础核心模型之一.这里面结合DNN 介绍一下如何解决 深度学习里面过拟合,欠拟合问题 目录: DNN 训练常见问题 过拟合处理 欠拟合处理 keras 项目 一 DNN 训练常见问题 我们在深度学习网络训练的时候经常会遇到下面…...

Nginx快速入门:实现企业安全防护|nginx部署https,ssl证书(七)

0. 引言 之前我们讲到nginx的一大核心作用就是实现企业安全防护,而实现安全防护的原理就是通过部署https证书,以此实现参数加密访问,从而加强企业网站的安全能力。 nginx作为各类服务的统一入口,只需要在入口处部署一个证书&…...

将Go语言开发的Web程序部署到K8S

搭建K8S基础环境 如果已经有K8S环境的同学可以跳过,如果没有,推荐你看看我的《Ubuntu22加Minikue搭建K8S环境》,课程目录如下: Ubuntu22安装Vscode 下载:https://code.visualstudio.com/Download 安装命令&#…...

Python发送数据到Unity实现

Unity设置: 打开Unity项目。创建一个空的GameObject,并附加一个新的脚本TCPReceiver using System.Net; using System.Net.Sockets; using System.Text; using UnityEngine; using System.Threading;public class MyListener : MonoBehaviour {Thread thread;pub…...

Unity 渲染顺序受哪些影响(相机depth、SortingLayer、Render Queue、透明)

目录 相机深度(Camera Depth) Clear Flags 多相机渲染不同部分 SortingLayer 先后顺序 Render Queue Render Queue的作用 Render Queue的分类 GeometryLast(值为2500) 渲染顺序总结 相机深度(Camera Depth&am…...

【论文笔记】Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks

论文地址:Run, Dont Walk: Chasing Higher FLOPS for Faster Neural Networks 代码地址:https://github.com/jierunchen/fasternet 该论文主要提出了PConv,通过优化FLOPS提出了快速推理模型FasterNet。 在设计神经网络结构的时候&#xff…...

python常用函数汇总

python常用函数汇总 对准蓝字按下左键可以跳转哦 类型函数数值相关函数abs() divmod() max() min() pow() round() sum()类型转换函数ascii() bin() hex() oct() bool() bytearray() bytes() chr() complex() float() int() 迭代和循环函数iter() next() e…...

阶段十-物业项目

可能遇到的错误&#xff1a; 解决jdk17javax.xml.bind.DatatypeConverter错误 <!--解决jdk17javax.xml.bind.DatatypeConverter错误--><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>…...

使用 Jekyll 构建你的网站 - 初入门

文章目录 一、Jekyll介绍二、Jekyll安装和启动2.1 配置Ruby环境1&#xff09;Windows2&#xff09;macOS 2.2 安装 Jekyll2.3 构建Jekyll项目2.4 启动 Jekyll 服务 三、Jekyll常用命令四、目录结构4.1 主要目录4.2 其他的约定目录 五、使用GitLink构建Jekyll博客5.1 生成Jekyll…...

【数据库】postgressql设置数据库执行超时时间

在这篇文章中&#xff0c;我们将深入探讨PostgreSQL数据库中的一个关键设置&#xff1a;SET statement_timeout。这个设置对于管理数据库性能和优化查询执行时间非常重要。让我们一起来了解它的工作原理以及如何有效地使用它。 什么是statement_timeout&#xff1f; statemen…...

SQL语言之DDL

目录结构 SQL语言之DDLDDL操作数据库查询数据库创建数据库删除数据库使用某个数据库案例 DDL操作表创建表查看表结构查询表修改表添加字段删除字段修改字段的类型修改字段名和字段类型 修改表名删除表案例 SQL语言之DDL ​ DDL&#xff1a;数据定义语言&#xff0c;用来定义数…...

hive高级查询(2)

-- 分组查询 SELECT sex,SUM(mark) sum_mark FROM score GROUP BY sex HAVING sum_mark > 555; SELECT sex,sum_mark FROM( SELECT sex,SUM(mark) sum_mark FROM score GROUP BY sex ) t WHERE sum_mark > 555; SELECT AVG(gid),SUM(gid)/COUNT(gid) FROM …...

golang的jwt学习笔记

文章目录 初始化项目加密一步一步编写程序另一个参数--加密方式关于StandardClaims 解密解析出来的怎么用关于`MapClaims`上面使用结构体的全代码实战项目关于验证这个项目的前端初始化项目 自然第一步是暗转jwt-go的依赖啦 #go get github.com/golang-jwt/jwt/v5 go get githu…...

第十五节TypeScript 接口

1、简介 接口是一系列抽象方法的声明&#xff0c;是一些方法特征的集合&#xff0c;这些方法都应该是抽象的&#xff0c;需要有由具体的类去实现&#xff0c;然后第三方就可以通过这组抽象方法调用&#xff0c;让具体的类执行具体的方法。 2、接口的定义 interface interface_…...

【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口?!

【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口&#xff1f;&#xff01;&#x1f60e; 前言&#x1f64c;【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口&#xff1f;&#xff01;查看自己的配置文件&#xff1a;最终成功访问如图所示&#xff1a; 总结撒花…...

14.bash shell中的for/while/until循环

文章目录 shell循环语句for命令**读取列表中的值****读取列表中的复杂值****从变量读取列表**迭代数组**从命令读取值****用通配符读取目录**C语言风格的shell for循环 shell循环while命令shell 循环的until命令shell循环跳出的break/continue命令break命令continue命令trick 欢…...

RPC(6):RMI实现RPC

1RMI简介 RMI(Remote Method Invocation) 远程方法调用。 RMI是从JDK1.2推出的功能&#xff0c;它可以实现在一个Java应用中可以像调用本地方法一样调用另一个服务器中Java应用&#xff08;JVM&#xff09;中的内容。 RMI 是Java语言的远程调用&#xff0c;无法实现跨语言。…...

strlen和sizeof的初步理解

大家好我是Beilef&#xff0c;一个美好的下我接触到编程并且逐渐喜欢。我虽然不是科班出身但是我会更加努力地去学&#xff0c;有啥不对的地方请斧正 文章目录 目录 文章目录 前言 想必大家对sizeof肯定很了解&#xff0c;那对strlen又了解多少。其实这个问题应该让不少人困扰。…...

纯CSS的华为充电动画,它来了

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; Krpano专栏&#xff1a;想学Krpano的&#xff0c;冲 &#x1f514…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...