ESP32入门「09」:Arduino-ESP32 TOUCH API 详解
本文深入解读ESP芯片的目源码触摸传感器及其API,通过实例程序展示应用功能,源码并附带源代码。目源码 触摸传感器是源码一种电容式器件,通过测量固定时间内GPIO引脚上的目源码充电/放电频率来感应触摸。触摸时,源码手指电荷改变电路状态,目源码导致计数器值变化,源码进而验证触摸动作。目源码这些引脚便于集成电容垫,替代机械按钮。 触摸传感器的API包含核心功能,如读取触摸数据、设置测量周期、附加中断、参数化中断处理以及唤醒模式控制。API支持通用和ESP芯片专用版本,满足不同需求。 具体功能如下:touchRead():获取触摸传感器数据,计数器记录充电/放电周期数,变化指示触摸。
touchSetCycles():配置测量周期,影响读数、阈值和精度。
touchAttachInterrupt():将中断与触摸板关联,根据阈值触发。
touchAttachInterruptArg():中断处理函数中加入参数。
touchDetachInterrupt():解除中断与触摸板的关联。
touchSleepWakeUpEnable():设置深度睡眠唤醒源。
ESP芯片专用API包含:touchInterruptSetThresholdDirection():定义中断激活条件。
touchInterruptGetLastStatus():获取中断状态,确认触摸状态。
应用示例包括读取触摸传感器和使用中断检测触摸。源代码基于ESP Arduino Core文档。 总结,本文旨在提供ESP触摸传感器及API的详尽介绍,通过实例和代码实现应用。敬请期待后续ESP开发教程更新。 欢迎知友们参与讨论,提出意见和优化建议。Arduino开源机器人汇总(基于 GRBL或Marlin)
Arduino开源机器人汇总(基于GRBL或Marlin)
GRBL,作为开源的嵌入式CNC框架,因其高效和低成本,被广泛应用于多种开源机器人,如绘图机器人、机械手臂等,它的易语言 红警源码代码质量高且易于定制。XYZ结构机器人
XYZ结构常见于CNC设备,如3D打印机,每个轴独立控制,运动规划简单,步进数与滑台位置关系明确。推荐入门项目如DrawBot绘图机器人,使用GRBL控制。CoreXY结构
CoreXY结构以单同步带控制XY运动,紧凑且能提供更大的工作空间,运动速度快。大鱼DIY写字机器人V2.0 Pro就采用了这种结构。经典项目举例
DrawBot V1.1: henryarnold和MoustafaElkady的开源作品,GRBL控制。
DREMEL CNC: Nikodem Bartnik设计,使用GRBL,教程详尽。
INDYMILL: 金属版CNC升级,GRBL控制,付费安装教程。
大鱼DIY写字机器人V2.0 Pro: GRBL支持,开源且有视频教程。
sffactory 机械臂: Marlin 2.0控制,结构改进,内容丰富。
DArm: 廖洽源作品,Marlin 2.0,提供Solidworks工程。
Drawbot机械臂: Marlin控制,基于DArm设计,但未开源源码。
UArm Swift Pro: GRBL-Mega/Marlin版本,金属机身,结构封闭。
Mirobot六自由度机械臂: 周冬旭博士作品,GRBL控制,固件不开源。
MK2 Plus 机械臂: GRBL控制,作者为Jacky Le,基于MK1的改进。
[Arduino编程]使用LiquidCrystal_I2C库驱动LCD液晶显示屏
在Arduino编程中,高效地操控LCD液晶显示屏是通过LiquidCrystal_I2C库实现的。这个库简化了原本并行数据传输的复杂性,支持I2C总线连接,让列2行的LCD显示屏更加易于集成和控制。
首先,安装LiquidCrystal_I2C库是关键步骤。Arduino IDE的新版本提供了便捷的库管理功能,可以直接搜索并添加所需库。另一种方法是下载库的.zip文件,通过IDE导入安装。
硬件连接时,务必按照特定的任意改号源码接线表连接四根I2C引脚到Arduino开发板上,确保电路正确无误。
在编写程序时,要从包含库文件和创建LCD对象开始。在程序的源代码开头,要包含LiquidCrystal_I2C库,并创建一个LCD对象,以便后续进行操作。在setup()函数中,进行必要的初始化设置,如开启背光,为后续显示做好准备。
在loop()函数中,你将编写驱动LCD的主体代码,比如接收串口数据并实时显示在屏幕上,这将展示出库的强大功能和灵活度。
最后,可以尝试编写一些示例程序,如动态显示从串口接收的信息,进一步熟悉和掌握如何利用LiquidCrystal_I2C库来控制LCD液晶显示屏。这将让你的Arduino项目更加实用和直观。
超详细教程!自制一个Arduino NES(红白机)游戏机!
了解如何使用Arduino IDE构建便携式NES游戏机,无需复杂编译过程。首先,了解NES游戏机及其影响力,这款由任天堂于年发布的家用电子游戏机,因其独特的设计和丰富游戏库在全球风靡。
选用Nofrendo作为高效NES模拟器,它能在老系统上全速运行,兼容性良好。Nofrendo由Matthew Conte在上个世纪开发,支持多种操作系统。
将Nofrendo源代码转换为Arduino库,遵循rickyzhang的指导。理论上,任何具备足够RAM和处理能力的Arduino平台都能使用该库。esp-nofrendo示例由Espressif基于原始代码开发。
实现显示选项,使用Arduino_GFX库,支持多种分辨率的显示屏,包括4英寸x。显示变化需要特定的裁剪和放大处理。
选择两种音频输出方法,内置DAC或外部I2S放大模块,后者提供更好的信噪比和动态范围。
支持三种控制器类型,兼容不同接口,例如Arduino ESP I2C接口。
支持三种文件系统,包括SPIFFS、SD或SD_MMC,代挂网源码简洁便于备份和长期使用。
安装必要的软件,包括Arduino IDE、ESP支持、Arduino ESP filesystem uploader、Arduino_GFX和Arduino Nofrendo库。
使用面包板原型进行概念验证,组合四个面包板支持4寸LCD。对线路和空间进行优化,移除不必要的电源线。
利用TTGO T8 V1.7进行改造,隐藏ESP开发板和线路,移除无法放置的3D天线。
固定模拟摇杆,重新映射GPIO引脚以减少使用次数,设计布局和引脚映射。
连接所有组件,进行面包板布线。可选加入电池以提高便携性。
上传Nofrendo程序,将ROM文件复制到SD卡或ESP SPIFFS。
实现无限恢复功能,使用X和Y按钮进行状态保存和加载。
了解预制的ESP游戏机选项,如TTGO T-Watch、ODROID-GO和M5Stack。
开始享受自制的Arduino NES带来的乐趣,并在现有基础上增加更多功能。
Windows经典「三维弹球」现实版,CAD建模、Arduino编程、数控机床打造,硬核致敬童年
在二十年前,电脑还是大背头的时代,Windows的「休闲小游戏」是我们的回忆。纸牌、扫雷、空当接龙……满满的回忆。然而,最近,来自美国肯尼索州立大学的四位小哥,用开源电子原型平台Arduino从零开始复现了另一款Windows经典小游戏——三维弹球 (3D Pinball)。从3D建模、代码编写到动手施工,他们以最专业的方式向童年致敬。
其中一位小哥说:建造这样一个项目,是我的童年梦想。不仅如此,他们还提供了打造现实版「三维弹球」的教程,只需9步,你也可以打造一台属于自己的三维弹球。
首先,股票筹码源码大全我们回忆一下这款经典的Windows小游戏。开局,球会从右下角的管道被弹出,然后在桌面自由滚动,碰到不同的障碍物会拿到不同的分数,只要保证它不从底部中间的缝隙掉出去就可以。
那么,四位小哥打造的「三维弹球」,长啥样呢?模型是这样的,实物则是完美复现了小游戏中的场景——从管道的位置,到障碍物的布局,各种细节栩栩如生。
实际手玩耍又是种什么体验呢?近距离视角下,简直一模一样!这台机器还有更厉害的地方——全自动、多球。
看到这里,是不是也想拥有一台呢?别着急,四位小哥提供了超详细的教程,手把手教你如何打造现实版「三维弹球」。
「三维弹球」的主要功能模块包括追踪得分系统、多球弹珠机、还有自主启动开关。上方有一个USB摄像头,在自动运行模式下会持续地监测弹球的位置,并根据球的位置指挥击打器。
用到的工具和材料清单包括:数控机床或激光切割机、Dremel和砂纸、烙铁、3D打印机、Linux计算机、USB摄像头、大量的/ AWG线、大量的热缩线、3/4英寸的胶合板(波罗的海桦木)、一个电源、降压转换器、弹球组件、左右翻转器组件、2个翻转式击打器、2个翻转按钮、2个叶子开关、保险杠总成、2个弹弓组件、至少6个星柱的弹弓、至少2个2英寸的橡皮筋、发射器机制、号刺刀式灯、场地中的障碍、掷球器、翻转开关。
以下是9步打造现实版「三维弹球」的步骤:
Step 1:纸面设计和低成本试错
设计中最可能出现的问题可能就是游戏机本身的尺寸限制和内部结构的安排,一些预想的弹球击打方式实验时才发现无法实现,所以需要先画出设计草图,然后在此基础上不断改进。团队在确定最终的游戏场地设计之前,经历了多次设计的修改和优化,每一次改进,都在便宜的胶合板上做一个模型来测试,一步步靠近最终的设计。
一些经验教训包括进行模块化设计,不同功能组件要能随意放置和取消。不要自己设计滑轮,借鉴成熟的弹球游戏的场地设计,这样能少走很多弯路。
Step 2:在SolidWorks上进行设计建模
弹球机的设计由两个主要的子部分组成,运动场和支架。球场是标准尺寸——. x英寸2,由3/4英寸厚度的波罗的海桦木胶合板制成。游戏场地包括一个由直径为2英寸的亚克力管和3D打印的适配器组合而成的第二层。第二层有两个主要功能。首先,第二层作为介质,将球从上层球场直接输送到左翻板内侧。球下落位置的可预测性,使得第二层成为一个的通道,此通道便于多球运动,这是其第二大功能。
当坡道和左内线上的翻转开关背对背地触发时,舵机会释放出两个球,这些球会下滚到第二层上方的两个管子中的一个,与坡道射出的球发生碰撞。因此,在多球模式下,这些管子将球会送入第二层,进入入左边的内管。
3/4英寸胶合板厚度的选择是为了给工程提供足够的刚性,并允许在承重接头处有更大的紧固件啮合。选用波罗的海桦木作材料,因为它的质量高,杂质少,属于硬木,不易损坏,易于使用激光雕刻,一般来说,对于较重的木制结构是首选。
支架是游戏场地的安装装置,并容纳了定制的电子装置。电子装置直接固定在底板上,延伸的延伸到游戏面板底部。通过观察窗可以看到电子装置在支架的两侧。此外,该支架还可以通过侧面的可拆卸的插销对球场进行间距调节。游戏台倾斜角度范围为0-8度,每两度设置一个调节档位。更高的球道坡度可以使游戏节奏更快,难度更高。
Step 3:用数控机床或激光雕刻制作主体
尽管你可以手工切削出游戏台的整体结构,但这样误差交大,后续安装连接多有不便,浪费材料。这几个美国小哥用一台大型5轴数控机床进行铣削,最后再用木楔进行细节调整。
Step 4:电子器件和电源选择
大多数弹球机的 “高压 “在V-V的范围,这取决于你买的电磁铁的品牌,同时你要选择一个能支持这种磁铁线圈的电源。其次,你需要考虑到 “低电压 “的电源,用于给灯或其他较小的电器元件等东西供电。我们选择的低电压是6.3v的电压,但这不一定是一成不变的。这要看你买的是什么LED,以及你是否用这个电源给其他的电器东西供电。一般6.3V应该就可以满足需要。如果没有低压电源,那还需要一个降压转换器将高电压(如V)降到小元件的额定电压。此外,使用的元件的电阻大小,决定了电流大小。所以,电源总功率要视情况而定。如果你的组件没有达到正确的功耗额定值,这些元件在很短的时间内产生很大的电流。在这种情况下,单个击打器内部线圈可能会产生3-4安电流,两个加起来8安培左右,会导致元件烧毁。你应当计算出 “最坏的情况下 “的电流大小,然后给出一个合理的安全范围,挑出一个对应的电源。
Step 5:建立I/O接口电路
开关输入部分:开关输入板负责将所有的值从游戏场地中读入到Arduino。这个单独的电路非常简单,但需要对很多输入进行放大处理。因为Arduino有一个内部的上拉电阻,所以你可以如上图那样接线。这里最大的问题是要确保每个开关都有连接器,以防有一个开关因为某种原因单独取出调试。这个项目中使用了标准针脚连接,可以很容易地将所有的东西同时插入到Arduino中。
灯光控制部分:电路由一个BJT晶体管(2n)、几个电阻和LED组成。晶体管作为一个数字 “开关”,可以打开或关闭,把它这个连接到前面提到的6.3v电源上,就得到了一个光源和单独可寻址的LED。不能直接将LED直接连接到Arduino上的原因是,Arduino无法提供多个LED要求的额定电流。正确的办法是把Arduino作为一个数字开关,控制BJT。这样就可以将LED的数量扩大到我们需要的数量。
电磁控制部分:总体思路与LED板相同:从Arduino发送一个信号,能够打开/关闭任何一个电磁铁(翻板、弹弓、弹出式保险杠)。因为这些元件比LED功率更大,所以需要一些更大的晶体管:MOSFET。电路元件清单包括1k电阻、k电阻、电阻、IRFV MOSFET、1N二极管、微法电容。电磁铁需要连接到V的电压才会启动。因为电感不能瞬间改变电流,这就带来了一个问题。工作时,线圈会通过很高电流,而关闭时,如果没有一个地方分散电流,可能会破坏元件,非常危险。这里使RC缓冲器电路和二极管来解决这个问题。要使它们覆盖尽量多的电磁控制并联支路。
击打器和其他线圈的电路略有不同。这是因为,在弹球游戏中,玩家有时会按住按钮,以保持击打器长时间启动。如果要用同样的功率线圈,很快就会烧毁。在此电路中的第二个线圈可以实现快速第一次翻转。一旦翻转完成,一个机械机构会打开EOS开关,迫使电流通过两个线圈。
Step 6:组装所有元件
根据游戏场地的大小,焊接时间或长或短。这个项目花了大约两天的时间焊接,并把所有器件安装到位。最终有5种连接器插到板子上:高功率的螺线管电源、与电磁铁专用开关的连接、与LED的连接、与开关的连接、一些辅助电源(5V、V等)。所有这些都插到了一个3D打印的连接板上,里面封装了所有电路设备。当需要开盖检测故障的时候,只需要拔掉5个大的连接器,然后把整个装置举起来。
Step 7:安装Arduino软件驱动
在这台机器上,需要在与Arduino相连的计算机上安装以下依赖项:ROS rosserial_arduino ROS package、OpenCV (c++)、Tkinter、Apscheduler。整个软件系统依靠ROS架构作为后端来回传递消息。四个主要节点在弹珠机运行在自主模式下时,进行异步通信,以控制弹珠机的流程。这些节点分别是Input_Output.ino、track_metal.cpp、run_low_level.py和GUI.py。当不在自主模式下运行时,可以省略track_metal.cpp节点。源代码和详细解释在本项目的Github主页放出。
Step 8:更改Pin、将代码上传到Arduino、更新USB摄像头
如果你自己动手制作弹球机,并使用了本项目的源码,要注意的是,你的Arduino的Pin需要更新两处:Arduino/Input_Ouptut/ Input_Ouptut.io,以及src/Classes/playfield.py。此外还需要调整脚本,删除对开关和LED的调用。playfield.py会记录有多少个项目,需要手动设置每个项目的Pin。之后就可以将代码上传到Arduino中。此步骤必须安装上一步中提到的rosserial_arduino,并正确设置Arduino IDE与ROS绑定。最后,要做的是更新代码中你自己使用的摄像头名称。只需在 src/Track/track_metal.cpp 中找到 “std::::string camera_metal.cpp “这一行:“std::::string camera_string = “/dev/v4l/by-id/usb-d_Logitech_Webcam_Ce_6D6BFE5E-video-index0”;”将字符串更新为摄像机的名称,可能是”/dev/v4l/by-id/“
所有步骤完成后,重新编译才可以工作。
Step 9:玩起来吧!
如果一切正常,那么找到到 “启动”目录,然后输入 “roslaunch automatic_pinball_c.report”。这行代码启动所有与弹球机相关的节点,包括GUI节点和跟踪球的位置的节点。此外,你可以使用’roslaunch manual_pinball.report’不运行任何自主部分,只体验手动模式。
四位来自KSU的“造梦者”是何许人也?Kevin Kamperman,今年毕业于KSU,目前正在佐治亚理工学院研究所实习,从事无人机相关的研究。春季毕业的时候,Kevin Kamperman还被KSU评为今年的“荣誉毕业生”。Cody Meier,同样也是今年毕业于KSU,主修的专业是机械电子、机器人和自动化工程。Omar Salazar和上一位小哥是同专业,也是主修机械电子、机器人和自动化工程。他在采访视频中表示,这个项目加强了他在团队合作方面的能力。最后一位叫Tyler Gragg的小哥,可谓是“机器人制造”的狂热爱好者,在个人介绍文字中,还特意写道“Let’s Make Robots”,参与不少机器人项目。Tyler也荣登了学校“光荣榜”。嗯,是四位非常优秀的“造梦者”了。
那些年,经典的Windows小游戏,纸牌、扫雷、空当接龙……这些至今仍然拥有众多粉丝。然而,微软如今把这些经典游戏放在了WindowsStore中,「三维弹球」就没有那么幸运了。其实,从Win7开始,微软团队将原先的软件全部移植到位系统中。然而,「三维弹球」却出现了严重bug,为了节省时间,微软直接放弃了这个游戏。但四位小哥的这个项目,却赋予了这款经典之作新的生命。这个星球有趣的人可真多啊。
更多细节和教程请参考以下链接:
现实版「三维弹球」项目地址: instructables.com/id/Ar...
Github源代码地址: github.com/Tdoe/Aut...
通用弹球游戏设计制作教程: howtobuildapinballmachine.wordpress.com
如何在Atom编译Arduino程序和上传到单片机?
如果编译和上传分离到不同的机器上执行,可以使用下面方式。
依赖
安装arduino环境
sudo apt-get install arduino
编译
在Arduino IDE环境下,写好源码程序(以.ino结尾的文件)。然后
Arduino -> Preferences ->”Show verbose output during”选择”compilation”。点击编译,在下方的输出框最后一行显示如下内容
/usr/share/arduino/hardware/tools/avr/bin/avr-objcopy -O ihex -R .eeprom /tmp/build.tmp/Blink.cpp.elf /tmp/build.tmp/Blink.cpp.hex
可以得知, 源码(.ino)编译后生成的二进制文件为/tmp/build.tmp/Blink.cpp.hex
上传
把上一步编译生成的二进制文件上传到arduino控制板上。
/usr/share/arduino/hardware/tools/avrdude -patmega -cwiring -P/dev/ttyACM0 -b -D -Uflash:w:/tmp/build.tmp/Blink.cpp.hex:i
2024-12-28 18:13
2024-12-28 17:32
2024-12-28 17:23
2024-12-28 17:06
2024-12-28 16:55