一 目的
此文章记录了arduino与陶晶驰串口屏实现联动,电机屏幕双态开关控制板载的LED点亮和熄灭,用于测试arduino 与串口连接是否正确,串口屏功能是否完好。
二 接线
串口屏与Arduino UNO接线如下:
————————————————
RX <-> TX0(D1) //此种接线必须在串口屏下载时断开连接,arduino通讯时断开串口屏下载工 具,因为串口不能一对多。同样此链接无法实现连接串口屏时串口监视。
TX <-> RX0(D0) //可以通过软串口进行,比如示例图片中接线D8和D9。
GND <-> GND
VCC <-> VCC
————————————————
三 代码
#define TJC Serial
#define lenth 6
void sendend()
{
TJC.write(0xff);
TJC.write(0xff);
TJC.write(0xff);
}
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
TJC.begin(115200);//串口屏采用相同的波特率
}
// the loop function runs over and over again forever
void loop() {
char str[100];
int m = 0;
while (TJC.available() >= lenth)
{
unsigned char comd[lenth];
unsigned char head = TJC.peek();
if (head == 0x55)
{
TJC.readBytes(comd,lenth);
if (comd[3] == 0xff && comd[4] == 0xff && comd[5] == 0xff)
{
if (comd[1] == 0x00)
{
if (comd[2] == 0x01)
{
sprintf(str, "t0.txt=\"open\"");//屏幕输出打开
TJC.print(str);
sendend();
digitalWrite(LED_BUILTIN, HIGH); // 板载LED点亮
}
if (comd[2]==0x00)
{
sprintf(str, "t0.txt=\"close\"");//屏幕输出关闭
TJC.print(str);
sendend();
digitalWrite(LED_BUILTIN, LOW); // 板载LED熄灭
}
}
}
} else
{
TJC.read();
}
}
}
串口屏代码:弹起事件
printh 55
printh 00
prints bt0.val,1
printh ff ff ff
注意:
串口不能一对多,只能一对一,所以传完程序一定要和电脑端断开,否则串口屏与arduino,arduino与电脑,串口屏与电脑通讯全部不好使,应该断开,只保留串口屏与arduino连接。所以想联机串口监控调试,需要外界其他端口。目前arduino UNO只有一个串口端口,所以无法串口监控。
四 后续更新
“arduino UNO只有一个串口端口,所以无法串口监控。”此问题已经解决,串口屏接虚拟串口就可以,代码如下:亲测好使
#define lenth 6
#include <SoftwareSerial.h>
SoftwareSerial TJC(6,7);//7接 串 口 屏 或 串 口 工 具 的RX, arduino的6接 串 口 屏 或 串 口 工 具 的TX
void sendend()//结束代码
{
TJC.write(0xff);
TJC.write(0xff);
TJC.write(0xff);
}
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
TJC.begin(115200);//串口屏采用相同的波特率
}
// the loop function runs over and over again forever
void loop() {
char str[100];
int m = 0;
while (TJC.available() >= lenth)
{
unsigned char comd[lenth];
unsigned char head = TJC.peek();
if (head == 0x55)
{
TJC.readBytes(comd,lenth);
if (comd[3] == 0xff && comd[4] == 0xff && comd[5] == 0xff)
{
if (comd[1] == 0x00)
{
if (comd[2] == 0x01)
{
sprintf(str, "t0.txt=\"open\"");//屏幕输出打开
TJC.print(str);
sendend();
digitalWrite(LED_BUILTIN, HIGH); // 板载LED点亮
}
if (comd[2]==0x00)
{
sprintf(str, "t0.txt=\"close\"");//屏幕输出关闭
TJC.print(str);
sendend();
digitalWrite(LED_BUILTIN, LOW); // 板载LED熄灭
}
}
}
} else
{
TJC.read();
}
}
}