使用文心一言等智能工具指数级提升嵌入式/物联网(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 second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(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,一段时间过去了,还很稳定的。


 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kafka部署

1.kafka安装部署 1.1 kafaka下载 https://archive.apache.org/dist/kafka/2.4.0/kafka_2.12-2.4.0.tgz Binary downloads是指预编译的软件包,可供直接下载和安装,无需手动编译。在计算机领域中,二进制下载通常指预构建的软件分发包,可以直接安装在系统上并使用 "2.…

LLM - LLama 模型读取报错 TypeError: not a string

一.引言 读取 LLama2 模型时报错 TypeError: not a string 看异常栈是 AutoTokenizer.from_pretrained 时候的异常。 二.问题解决 出现类似加载模型异常的问题&#xff0c;大致分两类&#xff1a; ◆ 模型地址异常 脚本里传的 pretrained_model Path 有问题&#xff0c;加 …

【前端知识】React 基础巩固(三十五)——ReduxToolKit (RTK)

React 基础巩固(三十五)——ReduxToolKit (RTK) 一、RTK介绍 Redux Tool Kit &#xff08;RTK&#xff09;是官方推荐的编写Redux逻辑的方法&#xff0c;旨在成为编写Redux逻辑的标准方式&#xff0c;从而解决上面提到的问题。 RTK的核心API主要有如下几个&#xff1a; confi…

UIKit相关

CALayer和UIView 区别 UIView继承自UIResponder&#xff0c;主要负责事件传递、事件响应&#xff0c;属于基于UIKit框架 CALayer继承自NSObject&#xff0c;负责图像渲染&#xff0c;动画和视图的显示&#xff0c;属于QuartzCore框架 而且这两大内容都符合单一职责原则&#…

拼多多海外版Temu商业模式分析

拼多多于2022 年 9 月在美国上线跨境平台 Temu&#xff0c;发布仅2个月就成为北美下载量最高的应用程序&#xff0c;持续霸榜。 这篇文章帮你快速了解下Temu&#xff1a; 商业模式如何竞争情况如何有哪些优势和挑战后期业务如何发展 一、Temu商业模式 Temu平台拥有对商品的最…

Java项目-苍穹外卖-Day01

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

深入学习Mysql引擎InnoDB、MylSAM

目录 一、什么是MySQL 二、什么是InnoDB 三、什么是MyISAM 四、MySQL不同引擎有什么区别 一、什么是MySQL MySQL是一种广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是由瑞典MySQL AB公司开发并推广&#xff0c;后来被Sun Microsystems收…

网络安全-防御需知

目录 网络安全-防御 1.网络安全常识及术语 资产 漏洞 0day 1day 后门 exploit APT 2.什么会出现网络安全问题&#xff1f; 网络环境的开放性 协议栈自身的脆弱性 操作系统自身的漏洞 人为原因 客观原因 硬件原因 缓冲区溢出攻击 缓冲区溢出攻击原理 其他攻击…

拿捏--->打印菱形

文章目录 题目描述算法思路代码示例 题目描述 在屏幕上输出以下图案&#xff1a; 算法思路 代码示例 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {int n;scanf("%d", &n);//上半部分菱形for (int i 0; i < n; i) //上半部分…

《华为认证》SR MPLS BE配置

实验需求&#xff1a;在PE1和PE3之间建立mp-bgp邻居传递CE1和CE2的私网路由&#xff0c;并且使用SR mpls BE的方式传递私网流量 实验步骤 步骤1&#xff1a;配置设备接口ip地址以及AS 100内的igp协议&#xff08;略&#xff09; 步骤2&#xff1a;AS 100内的设备开启mpls &am…

【前端知识】React 基础巩固(四十三)——Effect Hook

React 基础巩固(四十三)——Effect Hook 一、Effect Hook的基本使用 Effect Hook 用来完成一些类似class中生命周期的功能。 在使用类组件时&#xff0c;不管是渲染、网路请求还是操作DOM&#xff0c;其逻辑和代码是杂糅在一起的。例如我们希望把计数器结果显示在标签上&…

gitee修改代码提交操作步骤说明

一&#xff0c;简介 本文主要介绍如何从gitee仓库下载文件&#xff0c;本地修改&#xff0c;本地提交&#xff0c;然后再push到远程服务器的操作步骤。供参考&#xff0c;欢迎一起讨论交流~ 二&#xff0c;操作步骤 总的操作步骤分为以下几步 1&#xff0c;远程服务器下载文…

css3的filter图片滤镜使用

业务介绍 默认&#xff1a;第一个图标为选中状态&#xff0c;其他三个图标事未选中状态 样式&#xff1a;选中状态是深蓝&#xff0c;未选中状体是浅蓝 交互&#xff1a;鼠标放上去选中&#xff0c;其他未选中&#xff0c;鼠标离开时候保持当前选中状态 实现&#xff1a;目前…

如果你也能认识并使用这个低代码平台,那真的是泰酷辣——iVX低代码平台

低代码技术起源是比较悠久的了&#xff0c;尤其是在近些年&#xff0c;随着技术的演进&#xff0c;低代码平台逐渐成为热门趋势。这些平台通过简化应用程序开发流程&#xff0c;减少手动编码&#xff0c;使非专业开发人员也能快速构建复杂应用。为我们的敏捷开发和高效生产贡献…

攻防世界-web-lottery

题目描述&#xff1a;里面有个附件&#xff0c;是网站的源代码&#xff0c;还有一个链接&#xff0c;是线上的网站 主页告诉了我们规则&#xff1a; 1. 每个人的初始金额为20美元 2. 一支彩票2美元&#xff0c;挑选7个数字&#xff0c;根据匹配上的数字有不同的奖励 我们先体…

2023.7月最新ORACLE考试通过|微思-ORACLE官方授权中心

微思-ORACLE官方授权培训中心 2022 ORACLE OCP考试战报https://blog.csdn.net/XMWS_IT/article/details/125866726?ops_request_misc%257B%2522request%255Fid%2522%253A%2522169089281916800182194373%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&r…

数组中重复的数字_剑指 Offer 03

文章目录 题目描述法一 哈希表 题目描述 法一 哈希表 int findRepeatNumber(vector<int>& nums){unordered_map<int, bool> map;for(const int& num:nums){if(map[num]) return num;map[num]true;}return -1;}

Linux系统CPU和磁盘性能进程分析工具pidstat

一、pidstat对CPU的分析 Linux 上的pidstat(1)工具按进程或线程打印CPU 用量&#xff0c;包括用户态和系统态时间的分解。默认情况下&#xff0c;仅循环输出活动进程的信息。例如&#xff1a; 这个例子捕捉到了系统备份&#xff0c;包含了tar(1)命令&#xff0c;从文件系统读取…

JVM基础篇-虚拟机栈

JVM基础篇-虚拟机栈 定义 Java Virtual Machine Stacks &#xff08;Java 虚拟机栈&#xff09; 每个线程运行时所需要的内存&#xff0c;称为虚拟机栈每个栈由多个栈帧&#xff08;Frame&#xff09;组成&#xff0c;对应着每次方法调用时所占用的内存每个线程只能有一个活动…

《TCP IP 网络编程》第十五章

第 15 章 套接字和标准I/O 15.1 标准 I/O 的优点 标准 I/O 函数的两个优点&#xff1a; 除了使用 read 和 write 函数收发数据外&#xff0c;还能使用标准 I/O 函数收发数据。下面是标准 I/O 函数的两个优点&#xff1a; 标准 I/O 函数具有良好的移植性标准 I/O 函数可以利用…