极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 47101|回复: 13

上程序!2560和USART HMI 触摸屏通信曲线文本等控件的成果,纯新手勿喷

[复制链接]
发表于 2017-7-2 10:30:15 | 显示全部楼层 |阅读模式
本帖最后由 hebjean 于 2017-7-20 14:24 编辑


用到的模块
2560

3231

18B20

USART HMI

线若干

现在做了一小半了,出现的问题是配方页输入键盘呗刷没了视频可以看出来,不知道咋回事,

再有就是配方页怎么把输入的数据发送给2560啊?阶段升温的程序怎么做呢,还想用上PID..

问题一个比一个头疼,现在是遇到瓶颈了。求大神指导~!!
如果视频挂了,请移步.......

http://v.youku.com/v_show/id_XMjg2MjY1MzkyNA==.html?spm=a2h3j.8428770.3416059.1

大神请留下联系方式吧。



附上程序!顺便请各位给梳理下程序
#include <Wire.h>
#include <DS3231.h>
#include <OneWire.h>
#include <DallasTemperature.h>
int a;         //定义变量,用于存放温度数据
/****************************************************************************
* 名称:温度传感器
* 功能:
* 参数:
****************************************************************************/
// 定义DS18B20数据口连接arduino的2号IO上
#define ONE_WIRE_BUS 2
// 初始连接在单总线上的单总线设备
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
/****************************************************************************
* 名称:时钟模块
* 功能:DS3231
* 参数:
****************************************************************************/
DS3231 Clock;
bool h12;
bool PM;
bool Century=false;
String comdata = ""; //串口数据字符串
int numdata[7] = {},  mark = 0;
int year, month, date, DoW,week , hour, minute, second,temperature; //时间数据缓存
void setup() {
  // 设置串口通信波特率
  Serial.begin(9600);
  // 初始库
  sensors.begin();
  // 启动I2C(IIC)接口
Wire.begin();
}
void ReadDS3231()
{
  int second,minute,hour,date,month,year,temperature;
  second=Clock.getSecond();
  minute=Clock.getMinute();
  hour=Clock.getHour(h12, PM);
  date=Clock.getDate();
  month=Clock.getMonth(Century);
  year=Clock.getYear();
  temperature=Clock.getTemperature();
  Serial.print("20");
  Serial.print(year,DEC);
  Serial.print('-');
  Serial.print(month,DEC);
  Serial.print('-');
  Serial.print(date,DEC);
  Serial.print(' ');
  Serial.print(hour,DEC);
  Serial.print(':');
  Serial.print(minute,DEC);
  Serial.print(':');
  Serial.print(second,DEC);
  Serial.print('\n');
}
void loop() {
  // put your main code here, to run repeatedly:

  sensors.requestTemperatures(); // 发送命令获取温度
  Serial.print("page2.t100.txt=\""); //指令  
  Serial.println(sensors.getTempCByIndex(0));
  Serial.print("\"");
  Serial.write(0XFF);       //结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
  Serial.print("t0.txt=\""); //指令  
  Serial.print(Clock.getYear());
  Serial.print("\"");
  Serial.write(0XFF);       //结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
  Serial.print("t1.txt=\""); //指令  
  Serial.println(Clock.getMonth(Century));
  Serial.print("\"");
  Serial.write(0XFF);       //结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
  Serial.print("t2.txt=\""); //指令  
  Serial.println(Clock.getDate());
  Serial.print("\"");
  Serial.write(0XFF);       //结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
   Serial.print("t3.txt=\""); //指令  
  Serial.println(Clock.getHour(h12, PM));
  Serial.print("\"");
  Serial.write(0XFF);       //结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
   Serial.print("t4.txt=\""); //指令  
  Serial.println(Clock.getMinute());
  Serial.print("\"");
  Serial.write(0XFF);       //结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
   Serial.print("t5.txt=\""); //指令  
  Serial.println(Clock.getSecond());
  Serial.print("\"");
  Serial.write(0XFF);       //结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
  Serial.print("t12.txt=\""); //指令
    Serial.println(Clock.getTemperature());
  Serial.print("\"");
  Serial.write(0XFF);       //结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
  a=(int)sensors.getTempCByIndex(0); //将温度数据去除小数
  Serial.print("add 8,0,"); //指令
  Serial.print(a);
  Serial.write(0XFF);       //结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
  delay(100);  //间隔ms(1000ms=1秒)循环一次。
}
回复

使用道具 举报

发表于 2017-7-2 16:20:37 | 显示全部楼层
手头上也有个HMI模块,还不会用
回复 支持 反对

使用道具 举报

发表于 2017-7-3 16:41:17 | 显示全部楼层
吧程序贴上来吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-20 14:26:26 | 显示全部楼层

附上了。请给看看程序吧。还想用上分段升温,和PID的使用能给说说吗?整不明白了。
回复 支持 反对

使用道具 举报

发表于 2017-8-11 16:46:53 | 显示全部楼层
楼主方便留个联系的方式吗?QQ、微信都行,我有些hmi屏幕的问题想要请教您。
回复 支持 反对

使用道具 举报

发表于 2017-8-11 21:28:27 | 显示全部楼层
麻烦楼主看到后,不管方不方便留个联系方式,都请回复我一下,我是真心想要请教您,谢谢啦。
回复 支持 反对

使用道具 举报

发表于 2017-8-15 09:26:48 | 显示全部楼层
这个屏好玩,我也整了个

回复 支持 反对

使用道具 举报

发表于 2017-8-15 10:43:21 | 显示全部楼层
5free 发表于 2017-8-15 09:26
这个屏好玩,我也整了个

请问你会用USART HMI屏和arduino板通讯了吗??我有问题想要请教。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-27 15:30:13 | 显示全部楼层
5free 发表于 2017-8-15 09:26
这个屏好玩,我也整了个

交流交流。有成果了没?
回复 支持 反对

使用道具 举报

发表于 2017-8-30 21:30:10 | 显示全部楼层
hebjean 发表于 2017-8-27 15:30
交流交流。有成果了没?

楼主为啥不理我?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-2 16:17:06 | 显示全部楼层
biubiu 发表于 2017-8-11 21:28
麻烦楼主看到后,不管方不方便留个联系方式,都请回复我一下,我是真心想要请教您,谢谢啦。

微信hebjean 请注明来意
回复 支持 反对

使用道具 举报

发表于 2019-7-24 10:08:23 | 显示全部楼层
楼主不打算建个code_end的函数吗
回复 支持 反对

使用道具 举报

发表于 2020-3-13 19:13:03 | 显示全部楼层
本帖最后由 zzp1374 于 2020-3-13 19:20 编辑

//摄氏温度度转化为华氏温度
double Fahrenheit(double celsius)
{
  return 1.8 * celsius + 32;
}  
//摄氏温度转化为开氏温度
double Kelvin(double celsius)
{
  return celsius + 273.15;
}     

#include <dht11.h>
dht11 DHT11;
#define DHT11PIN 7//pin7

#include "DS18B20_S.h"
DS18B20_S  ds(5);//pin5

void setup()
{
  Serial.begin(9600);//初始化串口
   while (!Serial);//等待串口空闲
}
void loop()
{
  int chk = DHT11.read(DHT11PIN);//读取DHT11数据
  Serial.write(0XFF);       //按照串口屏通信协议要求,每一条命令结束后要发送一次结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
  delay(200);
  ds.start();//读取1820数据
  delay(200);
  Serial.print("t7.txt=\""); //指令  
  Serial.println((float)DHT11.temperature, 2);
  Serial.print("\"");
  delay(200);
  Serial.write(0XFF);       //结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
  
  delay(200);
  Serial.print("t8.txt=\""); //指令
  Serial.print((float)DHT11.humidity, 2);
  Serial.print(" %");
  Serial.print("\"");
  Serial.write(0XFF);       //结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
  
  delay(200);
  Serial.print("t10.txt=\""); //指令  
  Serial.println(ds.get());
  Serial.print("\"");
  Serial.write(0XFF);       //结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
  delay(200);
  Serial.print("code_c");//立即清空串口指令缓冲区还没有执行的所有指令
  Serial.write(0XFF);       //结束符  
  Serial.write(0XFF);  
  Serial.write(0XFF);
  delay(500);
}

为了大家验证顺畅,顺便将DS18B20和DHT11的库文件一并上传。本文中所使用的库文件均来自于网络或本论坛,如有侵权,请留言,将第一时间删除

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2020-3-13 19:14:57 | 显示全部楼层
只是简单验证了一下,能够实现温湿度数据的串口传输,arduino与串口屏之间的单向传输,双向传输正在进一步验证中,待成功后会继续分享,希望对大家有所帮助。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-18 17:51 , Processed in 0.042247 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表