简单代码测试arduino与串口屏间通讯

一 目的

此文章记录了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();
        }
    }
}

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值