H7-TOOL的LUA小程序教程第17期:扩展驱动AD7606, ADS1256,MCP3421, 8路继电器和5路DS18B20(2024-11-01)

LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用,支持在线调试运行,支持离线运行。TOOL的LUA教程争取做到大家可以无痛调用各种功能函数,不需要学习成本。

争取2.27版本固件发布前,H7-TOOL的LUA API手册同步上线


【ADS1256】

驱动8通道24bit分辨率ADS1256

这个功能还是非常有意义的,大大方便了多路高精度数据采集监测。特别是搭建三代示波器模拟前端的洞洞板模拟电路,可以方便的采集多个节点位置。从实战应用中来提出问题,再到实战应用中去解决问题,这大概就是工具的真正价值所在。

需要深入了解ADS1256可以看教程第93章节:
【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔,更新至95章(2024-05-06) - STM32H7 - 硬汉嵌入式论坛 - Powered by Discuz!

1、ADS1256接线说明:

ADS1256模块    H7-TOOL  (TVCC输出3.3V)
+5V   <------  5.0V       5V供电
GND   -------  GND        地
      
CS    <------  D0         SPI_CS    PI0      
DRDY  ------>  D1       准备就绪 (用到外部中断) PH10    --所有的IO电平固定是3.3V
DIN   <------  D2         SPI_MOSI  PE6
DOUT  ------>  D3       SPI_MISO  PE5
SCLK  <------  D5        SPI时钟   PE2
      
GND   -------  GND        地      
PDWN  (模块有上拉,可不接线)
RST   (模块有上拉,可不接线)
NC    空脚
NC    空脚


2、ADS1256测试代码

使用比较简单,注释很详细,使用也比较简单。

local gain = 0    -- 增益 (0=X1,  1=X2,  2=X4,  3=X8, 4=X16, 5=X32, 6=X64)
local drate = 7    --数据率 (0=30000,1=15000,2=7500,3=3750,4=2000,5=1000,6=500,7=100, 8=60, 9=50, 10=30, 11=25, 12=15, 13=10, 14=5,  15=2.5sps)
local buffen = 1  -- 1表示使能输入buffer使能,0表示禁止
local diffmode = 0  -- 0表示单端模式,1表示差分模式
local scantable = "01234567"  --扫描次序, 可只扫描需要的通道m_init("ADS1256", gain, drate, buffen, diffmode, scantable)  -- 挂载ADS1256delayms(500)for j=1, 8, 1 do                           --  循环执行了8次              adc = {m_read("ADS1256")}    --  读取数据            adc[1] = adc[1]*2.5/4194303   --  8通道的数据全部读取,直接计算实际电压值。adc[2] = adc[2]*2.5/4194303adc[3] = adc[3]*2.5/4194303adc[4] = adc[4]*2.5/4194303adc[5] = adc[5]*2.5/4194303adc[6] = adc[6]*2.5/4194303adc[7] = adc[7]*2.5/4194303adc[8] = adc[8]*2.5/4194303s = string.format("%f", adc[1]) --打印1个通达,多个通道同理,类似C的printfprint(s)                                   --  打印数值print_wave(s)                          --  打印波形效果delayms(100)                          --   100ms刷新1次
endm_uninit("ADS1256")  -- 卸载ADS1256

将代码贴到Lua小程序窗口里面执行即可:


【MCP3421】

这个帖子有个早期使用I2C控制驱动说明,可以优先看下:H7-TOOL的I2C控制器驱动18bit分辨率ADC芯片MCP3421操作说明,简单易用(2021-11-20) - H7-TOOL开发工具 - 硬汉嵌入式论坛 - Powered by Discuz!

使用专用的API驱动实现如下:

local gain = 0   --0=X1 1=X2 2=X4 3=X8local drate = 3  --0=240sp(12bit)  1=60sps(14bit) 2=15sps(16bit) 3=3.75sps(18bit)m_init("MCP3421", gain, drate)delayms(200)adc = m_read("MCP3421")  print(adc) --读ADC数据

同时将TOOL的信号发生器输出1.4V电压让MCP3421模块测试:


【8路继电器】

1、驱动模块说明:

Lua驱动74HC595,可配置任意引脚、595芯片个数。发布74HC595_8路继电器模块
Lua驱动74HC595,可配置任意引脚、595芯片个数。发布74HC595_8路继电器模块 - H7-TOOL开发工具 - 硬汉嵌入式论坛 - Powered by Discuz!


2、TOOL控制继电器模块的接线:

H7-TOOL        继电器
5.0V              5.0
3.3V              VDD
GND              GND
D4                SCK
D2                SDI
D9                LCK

实际接线效果:


3、控制说明:

m_init("74HC595", 4, 2, 9, 1)  --  配置D4为SCK时钟,  D2为SDI数据, D9为LCK锁存,  1个74HC595芯片

m_write("74HC595", 2,   1)   --  设置74HC595的Q2 = 1  (第2个形参是起始bit, 第3个形参值。 支持多个形参)
m_write("74HC595", 2,   1,0) --设置74HC595的Q2 = 1  Q3 = 0
m_write("74HC595", 0,   1,0,1,0,   0,0,0,0)   --  设置74HC595的Q0-7 分别为 1,0,1,0,   0,0,0,0

注意一点就行,第2个形参是设置的起始继电器,范围从0到7。后面的参数根据大家的设置起始继电器,设置继电器的开关。

1表示这两个导通:

0表示这两个导通:

比如我们控制前4个为1,后4个为0,就是如下效果:

验证是否设置正常,进入TOOL的电阻,二极管测量界面即可:

接线如下:

可以方便的测量继电器的闭合状态。


【AD7606】

需要深入了解AD7606可以看教程第76或77章节:
【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔,更新至95章(2024-05-06) - STM32H7 - 硬汉嵌入式论坛 - Powered by Discuz!

1、设置AD7606模块是SPI接口:

2、AD7606 SPI接线说明:

AD7606模块               H7-TOOL
  +5V          <------   5.0V   5V供电
  GND          -------   GND   地
  CS            <------   D7     片选控制
  RD/SCLK   <------   D5     时钟线
  DB7/DOUT  ------> D3     数据输出
  BUSY        ------>   D6     BUSY信号
  CVA CVB   <------   D0,  启动转换

  RAGE     <------   可以接3.3V或者GND控制,3.3表示±10V测量范围,GND表示±5V测量范围。
  RST       <------   不接
  OS0       <------   可以接3.3V或者GND控制, 过采样引脚0(默认接地),最好接上
  OS1       <------  可以接3.3V或者GND控制,过采样引脚1(默认接地),最好接上
  OS2       <------   可以接3.3V或者GND控制, 过采样引脚2(默认接地),最好接上

其中CVA和CVB可以考虑短接

最终接线效果:


3、AD7606测试代码:

adc = {} --定义个数组ex_start()   -- 启动AD7606delayms(100)for j=1, 800,1 do                  -- 循环800次                                    adc[1] = ex_adc(0)*5/32768  adc[2] = ex_adc(1)*5/32768adc[3] = ex_adc(2)*5/32768adc[4] = ex_adc(3)*5/32768adc[5] = ex_adc(4)*5/32768adc[6] = ex_adc(5)*5/32768adc[7] = ex_adc(6)*5/32768adc[8] = ex_adc(7)*5/32768s = string.format("%f", adc[8]) --打印1个通达,多个通道同理,类似C的printfprint(s)                        --  打印数值print_wave(s)                   --  打印波形效果delayms(100)                    --   100ms刷新1次
endex_stop() -- 卸载AD7606

将代码贴到Lua小程序窗口里面执行即可:

测试3.3V的效果:


【DS18B20】

使用这个功能,有必要优先看下TOOL端展示和使用方法:H7-TOOL的5路DS18B20温度表波形展示和数据记录说明 - H7-TOOL开发工具 - 硬汉嵌入式论坛 - Powered by Discuz!

使用专用的API驱动实现如下:

m_init("DS18B20")re,temp = m_read("DS18B20", 0)  --读D0口DS18B20的温度值, re = 1 表示OK
re,temp = m_read("DS18B20", 2)  --读D2口DS18B20的温度值, re = 1 表示OKm_uninit("DS18B20") --退出程序

1、H7-TOOL支持外接5路DS18B20,通过D1,D3,D5,D7和D9外接DS18B20数据引脚,而18B20的GND和VCC接到TOOL的GND和TVCC供电上即可。

2、其中D7和D9是内置了上拉电阻的,大家可以直接外接DS18B20测试,如果使用D1,D3和D5,采用下面方式即可。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA基础:数组 (习题笔记)

一&#xff0c;编码题 1&#xff0c;数组查找操作&#xff1a;定义一个长度为10 的一维字符串数组&#xff0c;在每一个元素存放一个单词&#xff1b;然后运行时从命令行输入一个单词&#xff0c;程序判断数组是否包含有这个单词&#xff0c;包含这个单词就打印出“Yes”&…

为开源 AI 模型引入激励机制?解读加密 AI 协议 Sentient 的大模型代币化解决方案

撰文&#xff1a;Shlok Khemani 编译&#xff1a;Glendon&#xff0c;Techub News 古时候&#xff0c;中国人深信「阴阳」的概念——宇宙的每一个方面都蕴含着内在的二元性&#xff0c;这两种相反的力量不断地相互联系&#xff0c;形成一个统一的整体。就好比女性代表「阴」&a…

ONES 功能上新|ONES Project 甘特图全面升级

ONES Project 甘特图全面升级&#xff0c;提供更加专业、灵活的工具。 项目经理往往面临项目进度难以直观把控、关键任务容易遗漏、里程碑节点缺乏明确标记、进度偏差无法及时发现等挑战。 针对这些痛点&#xff0c;ONES 新增了关键路径、基线对比、里程碑视图、交付物视图等 1…

windows 进程降权和提权代码示例(2) c++

强制完整性控制 - Win32 应用程序 |Microsoft 学习 一、强制完整性控制 品03/26/20217 个参与者 反馈 本文内容 诚信标签进程创建强制性政策 强制完整性控制 &#xff08;MIC&#xff09; 提供了一种用于控制对安全对象的访问的机制。此机制是对自主访问控制的补充&#xff…

基于Python的旅游景点推荐系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【C++】vector 类深度解析:探索动态数组的奥秘

&#x1f31f;快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。 &#x1f31f; 如果你对string类还存在疑惑&#xff0c;欢迎阅读我之前的作品 &#xff1a; &#x1f449;【C】string 类深度解析&#xff1a;…

Hugging Face 平台轻松上手 | 书生大模型

文章目录 HF 的 Transformers 库GitHub CodeSpace 使用终端安装依赖下载 internlm2_5-7b-chat 的配置文件 参考文献 HF 的 Transformers 库 直接使用预训练模型进行推理提供了大量预训练模型可供使用使用预训练模型进行迁移学习 因此在使用 HF 前&#xff0c;我们需要下载 Tra…

项目升级到.Net8.0 Autofac引发诡异的问题

前两天把项目升级到.Net8.0了&#xff0c;把.Net框架升级了&#xff0c;其他一些第三方库升级了一部分&#xff0c;升级完以后项目跑不起来了&#xff0c;报如下错误&#xff1a; An unhandled exception occurred while processing the request. DependencyResolutionExcepti…

如何开发查找附近地点的微信小程序

我开发的是找附近卫生间的小程序。 在现代城市生活中&#xff0c;找到一个干净、方便的公共卫生间有时可能是一个挑战。为了解决这个问题&#xff0c;我们可以开发一款微信小程序&#xff0c;帮助用户快速找到附近的卫生间。本文将介绍如何开发这样一款小程序&#xff0c;包…

canfestival主站多电机对象字典配置

不要使用数组进行命名&#xff1a;无法运行PDO 使用各自命名的方式&#xff1a;

楼宇智慧公厕为用户提供清晰厕位引导,提高用厕效率

如今楼宇管理者越来越重视公共设施的优化&#xff0c;尤其是公厕的管理。楼宇智慧公厕系统通过先进的技术&#xff0c;为用户提供清晰的厕位引导&#xff0c;显著提高了用厕效率。本文将从两个方面介绍楼宇智慧公厕系统的功能及其带来的好处。 一、清晰厕位引导 楼宇智慧公厕系…

Ubuntu 20.04 安装 QGC v4.3 开发环境

Ubuntu 20.04 安装 QGC开发环境 1. 准备安装 Qt 5.15.2安装依赖获取源码 2. 编译参考 前言 QGC ( QGroundControl) 是一个开源地面站&#xff0c;基于QT开发的&#xff0c;有跨平台的功能。可以在Windows&#xff0c;Android&#xff0c;MacOS或Linux上运行。它可以将PX4固件加…

使用匿名管道时出现程序一直运行问题

父进程创建两个子进程&#xff0c;父子进程之间利用管道进行通信。要求能显示父进程、子进程各自的信息&#xff0c;体现通信效果。(源程序pipe_1.c) 一开始&#xff0c;我忘了初始化pipe,很傻*的直接把fd当管道使&#xff0c;出现了儿子喊爸爸"i am your father."的…

uniapp实现H5和微信小程序获取当前位置(腾讯地图)

之前的一个老项目&#xff0c;使用 uniapp 的 uni.getLocation 发现H5端定位不准确&#xff0c;比如余杭区会定位到临平区&#xff0c;根据官方文档初步判断是项目的uniapp的版本太低。 我选择的方式不是区更新uniapp的版本&#xff0c;是直接使用高德地图的api获取定位。 1.首…

小菜家教平台(四):基于SpringBoot+Vue打造一站式学习管理系统

前言 昨天配置完了过滤器&#xff0c;权限检验&#xff0c;基本的SpringSecurity功能已经配置的差不多了&#xff0c;今天继续开发&#xff0c;明天可能会暂停一天整理一下需求&#xff0c;然后就进行CRUD了。 今日进度 补充SpringSecurity异常处理和全局异常处理器 详细操作…

MES管理系统的生产绩效分析与资源可追踪性

在探讨MES管理系统的核心功能时&#xff0c;生产绩效分析与资源可追踪性是两个不可或缺的关键要素。它们共同构成了MES管理系统中对于生产效率、成本控制以及产品质量进行精细管理的基石。以下是对这两个关键领域的深入剖析与重新阐述。 MES管理系统中的生产绩效分析&#xff0…

无人车之路径规划篇

无人车的路径规划是指在一定的环境模型基础上&#xff0c;给定无人车起始点和目标点后&#xff0c;按照性能指标规划出一条无碰撞、能安全到达目标点的有效路径。 一、路径规划的重要性 路径规划对于无人车的安全、高效运行至关重要。它不仅能够提高交通效率&#xff0c;减少交…

unocss 添加支持使用本地 svg 预设图标,并支持更改大小

安装 pnpm install iconify/utils 在配置文件 unocss.config.ts&#xff1a; presets > presetIcons 选项中 通过 FileSystemIconLoader 加载本地图标&#xff0c;并指定目录。 import presetWeapp from unocss-preset-weapp import { extractorAttributify, transformer…

从0开始学习Linux——网络配置

往期目录&#xff1a; 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 从0开始学习Linux——Yum工具 从0开始学习Linux——远程连接工具 从0开始学习Linux——文件目录 上一个教程中&#xff0c;我们了解了…

Spring中的 InitializingBean、BeanPostProcessor、@PostConstruct 等初始化动作的执行时机分析

初始化Bean的时序图如下&#xff1a; 小结说明&#xff1a; 1、相同点&#xff1a;InitializingBean 的(afterPropertiesSet方法)、BeanPostProcessor、PostConstruct 都是在bean的属性注入完毕之后才执行&#xff0c;都可以用来进行bean的初始化动作 2、初始化执行顺序优先级…