Arduion Modbus通讯示例
2024-01-07 17:34:38
实现了Arduion和Qt上位机利用Modbus协议采集DHT11数据,以及开关LED灯
软件界面:
实物界面:
arduion下位机代码:
#include <ModbusRtu.h>
#include <DHT.h>
#define DHTPIN 2 // DHT11连接到Arduino的数字引脚2
#define DHTTYPE DHT11 // DHT11型号传感器
// Modbus从站对象和共享数据数组
Modbus slave(12, Serial,0);
uint16_t au16data[3];
// DHT11传感器对象
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(19200);
dht.begin(); // 启动DHT11传感器
slave.start(); // 启动Modbus从站
pinMode(6, OUTPUT); // 将引脚6设置为输出模式
}
uint16_t reg3Value;
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (!isnan(humidity)) {
au16data[0] = (uint16_t)(humidity * 10);
}
if (!isnan(temperature)) {
au16data[1] = (uint16_t)(temperature * 10);
}
if (au16data[2] == 1) {
digitalWrite(6, HIGH);
} else {
digitalWrite(6, LOW);
}
slave.poll(au16data, 3);
}
遇到的问题:
用modbus-poll当上位机的时候总是读不到数据
一定记得串口参数必须设置对,然后从站地址,以及起始读几个从哪里开始要设置对,比如我只操作3个寄存器那就从0-3,不然一直读不到数据。
然后上位机这边就是用2个按钮修改寄存器的值,两个lcd-number和一个label显示寄存器 的值
虽然简单,但是很有意义
文章来源:https://blog.csdn.net/weixin_48657573/article/details/135439348
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!