使用文心一言等智能工具指数级提升嵌入式/物联网(M5Atom/ESP32)和机器人操作系统(ROS1/ROS2)学习研究和开发效率

以M5AtomS3为例,博客撰写效率提升10倍以上:

0. Linux环境Arduino IDE中配置ATOM S3_zhangrelay的博客-CSDN博客

1. M5ATOMS3基础01按键_zhangrelay的博客-CSDN博客

2. M5ATOMS3基础02传感器MPU6886_zhangrelay的博客-CSDN博客

3. M5ATOMS3基础03给ROS1发一个问候(rosserial)_zhangrelay的博客-CSDN博客

4. M5ATOMS3基础04给ROS2发一个问候(micro-ROS)_zhangrelay的博客-CSDN博客


基础内容

嵌入式通常就是接口IO,input/output,对应于机器人操作系统, 升级了名字,交互,pub/sub。

这其实都是一类东西,学会了一种,其他相似内容看一言就会了。

其实底层代码就是一个驱动,将硬件设备激活使用起来。完成0-5,基本就入门ESP32了。

智能助攻

有一段代码,可能是别人的,也可能是之前的,需要移植到M5AtomS3中。

可以将代码提供给AI,然后告诉它一步一步应该如何做,大部分代码移植需要修改的部分不多。

void setup() {// initialize digital pin LED_BUILTIN as an output.pinMode(LED_BUILTIN, OUTPUT);
}// the loop function runs over and over again forever
void loop() {digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)delay(1000);                       // wait for a seconddigitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOWdelay(1000);                       // wait for a second
}

这段代码是使用Arduino编程语言编写的,用于控制一个LED灯的开关。以下是代码的功能解释:

  1. void setup()函数是初始化函数,在程序开始执行时被调用一次。在这个函数中,通过pinMode(LED_BUILTIN, OUTPUT)将引脚LED_BUILTin设置为输出模式,以便控制LED灯的开关。
  2. void loop()函数是主循环函数,一旦程序开始执行,它将会一直循环执行。在这个函数中,通过digitalWrite(LED_BUILTIN, HIGH)将LED_BUILTin引脚输出高电平(电压),从而使LED灯亮起来。
  3. delay(1000)函数用于延迟程序执行1000毫秒(1秒)。因此,在LED灯亮起来之后,程序会暂停1秒钟。
  4. 然后,通过digitalWrite(LED_BUILTIN, LOW)将LED_BUILTin引脚输出低电平(电压),从而使LED灯熄灭。
  5. 再次使用delay(1000)函数延迟程序执行1000毫秒(1秒)。

因此,这段代码的功能是使LED灯以1秒的频率闪烁,即LED灯亮1秒,然后灭1秒,一直循环下去。

借助AI分析和理解代码。

这段代码是使用M5AtomS3库来控制一个嵌入式系统上的LED灯,并通过循环改变LED的颜色。

首先,在setup()函数中,调用了M5.begin()函数来初始化M5AtomS3Lite。其中的参数设置如下:

M5.begin(false, true, false, true);

接下来,通过USBSerial.println()函数输出一条信息:"Pls Press Btn change color",提示用户按下按钮来改变颜色。

然后,在loop()函数中,通过循环不断地改变LED的颜色。具体操作如下:

  1. 使用M5.dis.drawpix()函数将颜色值0xff0000绘制到一个像素点上,表示红色。
  2. 通过M5.dis.show()函数将绘制结果显示在屏幕上。
  3. 使用delay()函数延迟500毫秒。
  4. 重复上述步骤,依次将颜色值0x00ff00(绿色)和0x0000ff(蓝色)绘制到同一个像素点上,并显示在屏幕上。
  5. 再次使用delay()函数延迟500毫秒。

这个循环会不断地重复执行,导致LED灯不断地改变颜色。

让AI对比这两段代码:

两段代码在功能上是相似的,都是控制LED灯的闪烁。但是,它们的实现方式略有不同。

首先,代码1使用的是Arduino编程语言,而代码2使用的是M5AtomS3库。这导致了两段代码的初始化和循环方式上的差异。

在代码1中,使用了pinMode()函数来初始化LED引脚为输出模式,然后使用digitalWrite()函数来控制LED的开关。循环部分使用了loop()函数和一个延迟函数delay()来实现LED的闪烁效果。

在代码2中,使用了M5AtomS3库的M5.begin()函数来初始化M5AtomS3Lite,并设置一些参数。然后,同样使用M5.dis.drawpix()函数来控制LED的颜色,并使用M5.dis.show()函数将绘制结果显示在屏幕上。循环部分也使用了loop()函数和一个延迟函数delay()来实现LED的闪烁效果。

总体来说,两段代码的功能相似,都是控制LED灯的闪烁。但是,代码1使用的是Arduino编程语言,而代码2使用的是M5AtomS3库,导致它们的一些初始化和循环方式上的差异。


资料整理

如果需要AI学习和归纳资料较多,可以使用如下方式:

chatfile。

这段代码展示了如何使用M5Stack库来操作液晶屏幕,包括初始化、切换到节能模式、恢复显示和获取屏幕高度等功能。在库文件下提供示例,其中M5.Lcd.drawString()函数在指定位置以指定字体打印字符串,M5.Lcd.print()函数用于在屏幕上打印获取到的文字对齐方式。此外,还展示M5Stack开发板的一些功能函数的使用示例,如屏幕旋转、屏幕亮度设置和透明度混合等操作。函数包括setRotation()、setBrightness()和alphaBlend()等,具体使用方法和参数在代码中有详细说明。

这段代码是关于M5Stack LCD屏幕控制函数的说明,包括初始化、切换到节能模式、恢复显示和获取屏幕高度等功能。在示例中,使用M5.Lcd.print()函数在屏幕上显示屏幕的高度。另外,还有width()函数用于返回屏幕宽度,但文中未提供具体实现和使用示例。

这段代码展示如何使用M5Stack库来操作液晶屏幕。在setup()函数中,初始化了M5Stack、Power和Lcd,并在屏幕上显示了屏幕的宽度。loop()函数为空,没有实际操作。getCursorX()和getCursorY()函数分别获取字符末尾处x和y坐标,但不能用于drawNumber()函数。getRotation()函数返回屏幕旋转方向,getTextDatum()函数返回文字对齐方式。使用示例中,getRotation()和getTextDatum()函数的参数和返回值类型不正确。M5.Lcd.drawString()函数在指定位置以指定字体打印字符串,M5.Lcd.print()函数打印获取到的文字对齐方式。setCursor()函数用于设置文本光标的位置。

综上所述,这段代码提供了M5Stack库的函数说明和示例,包括初始化屏幕、设置文本位置和颜色、旋转屏幕以及自动换行等功能,为开发者提供了便利的接口来操作M5Stack模块的各种功能。

如果需要液晶屏幕显示彩虹色,请给出示例代码

下面是一个示例代码,演示如何使用M5Stack库在LCD屏幕上显示彩虹色:

#include <M5Stack.h>  void setup() {  M5.begin(); // 初始化 M5Stack  M5.Power.begin(); // 初始化 Power 模块  M5.Lcd.begin(TFT_WIDTH, TFT_HEIGHT); // 初始化 LCD 屏幕  M5.Lcd.setRotation(3); // 将屏幕旋转到竖直方向  
}  void loop() {  // 在屏幕上绘制彩虹色条带  for (int y = 0; y < TFT_HEIGHT; y++) {  for (int x = 0; x < TFT_WIDTH; x++) {  uint32_t color = M5.Lcd.mapColor(x, y, TFT_WIDTH - x - 1, TFT_HEIGHT - y - 1);  M5.Lcd.drawPixel(x, y, color);  }  }  M5.delay(100); // 延迟一段时间,以便观察效果  
}

在这个示例代码中,我们使用两个嵌套的循环来遍历屏幕上的每个像素。对于每个像素,我们使用 M5.Lcd.mapColor() 函数将其映射为彩虹色,然后使用 M5.Lcd.drawPixel() 函数在屏幕上绘制该颜色。最后,我们使用 M5.delay() 函数延迟一段时间,以便观察效果。

能不能用呢?测试看看,不行就要修改的。

之前测试的pub,一段时间过去了,还很稳定的。


 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/19939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】表的增删查改

文章目录 一、创建表create二、查看表desc三、修改表3.1 修改表名alter3.2 在表中插入数据insert3.3 在表中新增字段alter3.4 修改指定列的属性alter3.5 移除表中的一列alter3.6 修改表中某一列的列名alter 四、删除表drop 一、创建表create mysql> create table if not ex…

Neo4j文档阅读笔记-Installation and Launch Guide

安装&#xff08;Windows&#xff09; ①找到下载好的Neo4j Desktop文件&#xff0c;然后双击进行安装&#xff1b; ②安装Neo4j Desktop根据下一步进行安装。 启动 ①激活 打开Neo4j Desktop应用程序后&#xff0c;将激活码输入到“Activation Key”窗口中。 ②创建数据库…

AMEYA:尼得科科宝滑动型DIP开关CVS产品参数及价格​

日本电产尼得科科宝滑动型DIP开关CVS采用紧凑设计&#xff0c;3bit产品&#xff0c;旋钮把手高度为0.2mm&#xff0c;操作性良好端子为1mm间距&#xff0c;电路数丰富(2,3,4,8)端接样式为鸥翼式&#xff0c;J形引线使用树脂材料符合UL认证94V-0 符合RoHS规范。 日本电产尼得科科…

Vol的学习

首先学习基础用法 1.查看系统基本信息 vol.py -f 路径 imageinfo 2.查看进程命令行 vol.py -f 路径 --profile系统版本 cmdline vol.py -f 路径 --profile版本 cmdscan 3.查看进程信息 vol.py -f 路径 --profile系统 pslist 通过树的方式返回 vol.py -f 路径 --profile系统…

postgis mvt矢量切片 django drf mapboxgl

postgis mvt矢量切片 django drf mapboxgl 0.前提 [1] 静态的矢量切片可以采用 tippecanoe 生成&#xff0c;nginx代理&#xff0c;这种数据是不更新的&#xff1b; [2] 动态的矢量切片&#xff0c;一般采用postgis生成。基本上矢量切片80%的厂商都采用postgis&#xff0c;确实…

【Docker】部署 mysql8.0 无法访问

文章目录 &#x1f5fd;先来说我的是什么情况&#x1fa81;问题描述&#x1fa81;解决方法&#xff1a;✔️1 重启iptables✔️2 重启docker &#x1fa81;其他有可能连不上的原因✔️1 客户端不支持caching_sha2_password的加密方式✔️2 my.conf 配置只有本机可以访问 &#…

05 Ubuntu下安装.deb安装包方式安装vscode,snap安装Jetbrains产品等常用软件

使用deb包安装类型 deb包指的其实就是debian系统&#xff0c;ubuntu系统是基于debian系统的发行版。 一般我们会到需要的软件官网下载deb安装包&#xff0c;然后你既可以采用使用“软件安装”打开的方法来进行安装&#xff0c;也可以使用命令行进行安装。我推荐后者&#xff…

3分钟创建超实用的中小学新生录取查询系统,现在可以实现了

在新学期开始之际&#xff0c;作为招生负责人&#xff0c;您是否已经做好准备来迎接新学年的招生工作呢&#xff1f;录取新生所需的任务包括录入成绩信息、核对招生要求以及公布新生录取信息等&#xff0c;这些工作繁重而具有挑战性&#xff0c;给负责招生的老师带来了巨大的压…

如何在 Ubuntu 上部署 ONLYOFFICE 协作空间社区版?

ONLYOFFICE 协作空间是一个在线协作平台&#xff0c;帮助您更好地与客户、业务合作伙伴、承包商及第三方进行文档协作。今天我们来介绍一下&#xff0c;如何在 Ubuntu 上安装协作空间的自托管版。 ONLYOFFICE 协作空间主要功能 使用 ONLYOFFICE 协作空间&#xff0c;您可以&am…

springboot()—— swagger

零、一张图读懂swagger 懂了&#xff0c;这玩意就是用swagger搞出来的&#xff01; 就是一个后端开发自测的东西嘛&#xff01; 一、概念 存在即合理&#xff0c;我们看一下swagger诞生的原因&#xff1a;在前后端分离的架构中&#xff0c;前端新增一个字段&#xff0c;后端就…

应用在多媒体手机中的低功率立体声编解码器

多媒体手机一般是指可以录制或播放视频的手机。多媒体的定义是多种媒体的综合&#xff0c;一般是图像、文字、声音等多种结合&#xff0c;所以多媒体手机是可以处理和使用图像文字声音相结合的移动设备。目前流行的多媒体概念&#xff0c;主要是指文字、图形、图像、声音等多种…

【NLP】训练chatglm2的评价指标BLEU,ROUGE

当进行一定程度的微调后&#xff0c;要评价模型输出的语句的准确性。由于衡量的对象是一个个的自然语言文本&#xff0c;所以通常会选择自然语言处理领域的相关评价指标。这些指标原先都是用来度量机器翻译结果质量的&#xff0c;并且被证明可以很好的反映待评测语句的准确性&a…

Java项目-苍穹外卖-Day01

文章目录 博客介绍软件开发流程项目介绍产品原型技术选型前端环境搭建 博客介绍 从头开始做黑马的苍穹外卖项目 每天记录一下新学的知识点以及对应的开发进度 然后一些在项目中遇到的问题会重点标注 本篇主要是后端的&#xff0c;前端会一笔带过 软件开发流程 流程介绍需求分…

DM开启慢日志监控并用DmLog工具分析数据

工具描述 DMLOG用于对达梦SQL日志进行统计分析&#xff0c;便于SQL优化人员进行查看捕获关键信息&#xff0c;不提供SQL优化建议。DMLOG用java语言编写&#xff0c;不受操作系统平台限制&#xff0c;大小不超过10M&#xff0c;在安装好Java环境后&#xff0c;可在各平台运行。 …

花费7元训练自己的GPT 2模型

在上一篇博客中&#xff0c;我介绍了用Tensorflow来重现GPT 1的模型和训练的过程。这次我打算用Pytorch来重现GPT 2的模型并从头进行训练。 GPT 2的模型相比GPT 1的改进并不多&#xff0c;主要在以下方面&#xff1a; 1. GPT 2把layer normalization放在每个decoder block的前…

17、YML配置文件及让springboot启动时加载我们自定义的yml配置文件的几种方式

YML配置文件及加载自定义配置文件的几种方式 ★ YAML配置文件 其实本质和.properties文件的是一样的。 Spring Boot默认使用SnakeYml工具来处理YAML配置文件&#xff0c;SnakeYml工具默认就会被spring-boot-starter导入&#xff0c;因此无需开发者做任何额外配置。 YAML本质…

数据分析基础-Excel图表的美化操作(按照教程一步步操作)

一、原始数据 包含月份和对应的销量和产量。 时间销量产量1月60722月38673月28344月58685月67596月72357月61428月24319月556710月243511月122112月2645 二、原始的图表设计-采用Excel自带模板 三、优化思路 1、删除多余元素 2、弱化次要元素 对于可以弱化的元素&#xff0c…

计算机视觉实验:图像增强应用实践

本次实验主要从基于统计、函数映射的图像增强方法和基于滤波的图像增强方法两种方法中对一些图像增强的算法进行实现。主要的编程语言为python&#xff0c;调用了python自带的PIL图像库用于读取图像&#xff0c;利用numpy进行图像运算&#xff0c;最后使用opencv第三方库进行对…

基于DCT变换和huffman编码的语音压缩算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 多通道滤波 4.2 DCT变换 4.3 量化 4.3 哈夫曼编码 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ................................…

云上 Index:看「简墨」如何为云原生打造全新索引

拓数派首款数据计算引擎 PieCloudDB Database 是一款全新的云原生虚拟数仓。为了提升用户使用体验&#xff0c;提高查询效率&#xff0c;在实现存算分离的同时&#xff0c;PieCloudDB 设计与打造了全新的存储引擎「简墨」等模块&#xff0c;并针对云场景和分析型场景设计了高效…