arduino触摸屏

arduino与陶晶驰串口屏通讯,串口屏上数字控件设置数值,作为延时控制灯闪烁间隔时间

你看看这一套视频,讲得很好,这是其中一集,有很多集
网址:https://haokan.baidu.com/v?pd=wisenatural&vid=3875765440518289106

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7625660
  • 这篇博客也不错, 你可以看下arduino总线舵机+实时串口通信控制
  • 您还可以看一下 张三编程分享老师的交互设计之Arduino基础课程中的 Arduino开发环境搭建小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    我可以给出一个实现这个功能的解决方案。

    首先,你需要使用Arduino与陶晶驰串口屏进行通讯。你可以使用Arduino的SoftwareSerial库来创建一个软串口对象,然后将其连接到陶晶驰串口屏的TX和RX引脚上。这样你就能够通过软串口与串口屏进行通讯。

    然后,你需要在陶晶驰串口屏上创建一个数字控件用来设置延时时间。你可以使用串口屏的相应指令来创建数字控件,并设置其位置、大小和初始值。

    在Arduino端,你可以通过串口发送指令来获取数字控件的值。使用SoftwareSerial库的write函数发送指令到串口屏,然后使用SoftwareSerial库的readString方法接收串口屏返回的数据。

    接下来,你可以使用获取到的延时时间来控制灯的闪烁间隔。你可以使用Arduino的delay函数来控制延时。在每个延时周期结束后,你可以使用Arduino的digitalWrite函数来改变灯的状态。将延时时间乘以1000以转换为毫秒,并将其作为delay函数的参数。

    下面是一个示例代码:

    #include <SoftwareSerial.h>
    
    // 定义软串口对象
    SoftwareSerial mySerial(10, 11); // RX, TX
    
    // 定义灯的引脚
    const int ledPin = 13;
    
    // 定义延时时间
    int delayTime = 1000;
    
    void setup() {
      // 初始化软串口
      mySerial.begin(9600);
    
      // 设置灯的引脚为输出模式
      pinMode(ledPin, OUTPUT);
    }
    
    void loop() {
      // 发送指令给串口屏获取延时时间
      mySerial.write("get delayTime\n");
      delay(100); // 等待串口屏发送返回值
    
      // 读取串口屏返回的数据
      String data = mySerial.readStringUntil('\n');
      data.trim();
    
      // 将数据转换为整数
      delayTime = data.toInt();
    
      // 控制灯的闪烁
      digitalWrite(ledPin, HIGH);
      delay(delayTime * 1000);
      digitalWrite(ledPin, LOW);
      delay(delayTime * 1000);
    }
    

    请注意,以上代码仅作为示例,具体的指令和通讯方式取决于你所使用的陶晶驰串口屏的规格和协议。你需要根据实际情况进行相应的调整。

    希望这个解决方案对你有帮助。如果你还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

arduino向淘晶驰串口屏发送数据和解析协议例程

本例程基于arduino mega2560调试,串口屏的TX接mega2560的RX3(14),串口屏的RX接mega2560的TX3(15),串口屏的GND接mega2560的GND

//arduino的GND接串口屏或串口工具的GND,共地
//arduino的TX3接串口屏或串口工具的RX
//arduino的RX3接串口屏或串口工具的TX
//arduino的5V接串口屏的5V,如果是串口工具,不用接5V也可以
//根据自己的实际改为对应的串口,我这里接的是TX3和RX3
#define TJC Serial3
#define FRAME_LENGTH 6
 
int a;
unsigned long nowtime;
void setup() {
  // put your setup code here, to run once:
  //初始化串口
  TJC.begin(115200);
 
  //因为串口屏开机会发送88 ff ff ff,所以要清空串口缓冲区
  while (TJC.read() >= 0); //清空串口缓冲区
  TJC.print("page main\xff\xff\xff"); //发送命令让屏幕跳转到main页面
  nowtime = millis(); //获取当前已经运行的时间
}
 
void loop() {
  // put your main code here, to run repeatedly:
  char str[100];
  if (millis() >= nowtime + 1000) {
    nowtime = millis(); //获取当前已经运行的时间
 
    //用sprintf来格式化字符串,给n0的val属性赋值
    sprintf(str, "n0.val=%d\xff\xff\xff", a);
    //把字符串发送出去
    TJC.print(str);
 
    //用sprintf来格式化字符串,给t0的txt属性赋值
    sprintf(str, "t0.txt=\"现在是%d\"\xff\xff\xff", a);
    //把字符串发送出去
    TJC.print(str);
 
 
    //用sprintf来格式化字符串,触发b0的按下事件,直接把结束符整合在字符串中
    sprintf(str, "click b0,1\xff\xff\xff");
    //把字符串发送出去
    TJC.print(str);
 
    delay(50);  //延时50ms,才能看清楚点击效果
 
    //用sprintf来格式化字符串,触发b0的弹起事件,直接把结束符整合在字符串中
    sprintf(str, "click b0,0\xff\xff\xff");
    //把字符串发送出去
    TJC.print(str);
 
    a++;
  }
 
  //串口数据格式:
  //串口数据帧长度:6字节
  //帧头      led编号  LED状态    帧尾
  //0x55      1字节    1字节     0xffffff
  //例子1:上位机代码  printh 55 01 00 ff ff ff  含义:1号led关闭
  //例子2:上位机代码  printh 55 04 01 ff ff ff  含义:4号led打开
  //例子3:上位机代码  printh 55 00 01 ff ff ff  含义:0号led打开
  //例子4:上位机代码  printh 55 04 00 ff ff ff  含义:4号led关闭
 
  //当串口缓冲区大于等于6while (TJC.available() >= FRAME_LENGTH) {
    unsigned char ubuffer[FRAME_LENGTH];
    //从串口缓冲读取1个字节但不删除
    unsigned char frame_header = TJC.peek();
    //当获取的数据是包头(0x55)时
    if (frame_header == 0x55) {
      //从串口缓冲区读取6字节
      TJC.readBytes(ubuffer, FRAME_LENGTH);
      if (ubuffer[3] == 0xff && ubuffer[4] == 0xff && ubuffer[5] == 0xff) {
        sprintf(str, "msg.txt=\"led %d is %s\"\xff\xff\xff", ubuffer[1], ubuffer[2] ? "on" : "off");
        TJC.print(str);
      }
    } else {
      TJC.read();  //从串口缓冲读取1个字节并删除
    }
  }
}

可以使用SoftwareSerial库、Serial库进行开发

示例代码

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11);  // 将串口模块连接到 Arduino 的数字引脚 10 和 11

int ledPin = 13;
int delayTime = 1000;  // 默认的闪烁间隔时间

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
  mySerial.begin(9600);
}

void loop() {
  // 读取串口屏发送的数据
  if (mySerial.available()) {
    int value = mySerial.parseInt();  // 解析串口屏发送的整数值
    if (value >= 0) {
      // 更新闪烁间隔时间并发送回确认信息
      delayTime = value;
      mySerial.print("Update delay time to: ");
      mySerial.println(delayTime);
    }
  }

  // 控制灯的闪烁
  digitalWrite(ledPin, HIGH);
  delay(delayTime);
  digitalWrite(ledPin, LOW);
  delay(delayTime);
}

可以试试这个方法,通过Arduino的串口与陶晶驰串口屏进行通讯,将延时时间发送给串口屏的数字控件,实现灯闪烁的间隔时间控制

要实现 Arduino 与陶晶驰串口屏的通讯,可以按照以下步骤进行操作:

  1. 连接硬件:将 Arduino 的 TX(发送)引脚连接到串口屏的 RX(接收)引脚,将 Arduino 的 RX(接收)引脚连接到串口屏的 TX(发送)引脚。同时,将两者的地线连接在一起。

  2. 配置串口:在 Arduino 代码中使用 Serial 对象来与串口进行通讯。通过 Serial.begin() 函数初始化串口,并设置波特率与陶晶驰串口屏相匹配。

  3. 发送指令:使用 Serial.print()Serial.write() 函数向串口屏发送指令。根据陶晶驰串口屏的通讯协议,发送相应的命令来设置数字控件的数值。

  4. 接收反馈:通过 Serial.available()Serial.read() 函数来接收从串口屏返回的数据。根据陶晶驰串口屏的通讯协议解析返回的数据,并进行相应处理。

  5. 控制灯闪烁间隔时间:根据从串口屏获取到的数值,使用 delay() 函数或其他定时器相关函数来控制灯闪烁的间隔时间。

采用chatgpt:
实现Arduino与陶晶驰串口屏通讯,并通过串口屏上的数字控件设置数值来控制灯闪烁的间隔时间,您需要按照以下步骤进行操作:

1、硬件准备:

Arduino板
串口屏(陶晶驰的串口屏)
LED灯(例如一个简单的LED灯)
杜邦线或其他连接线
2、连接:

将Arduino的TX引脚(发送数据)连接到串口屏的RX引脚。
将Arduino的RX引脚(接收数据)连接到串口屏的TX引脚。
将LED的正极连接到Arduino的数字引脚(例如D13),将LED的负极连接到Arduino的GND引脚。
3、编写Arduino代码:
首先,您需要在Arduino上编写代码以读取串口屏发送的数据,并根据接收到的数据设置灯的闪烁间隔时间。以下是一个简单的示例代码:

const int ledPin = 13;  // LED连接到数字引脚13

void setup() {
  Serial.begin(9600);   // 与串口屏通信,波特率要与串口屏设置的一致
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {
    int interval = Serial.parseInt(); // 读取串口屏发送的数值
    if (interval > 0) {
      digitalWrite(ledPin, HIGH);    // 点亮LED
      delay(interval);               // 根据设置的间隔时间延时
      digitalWrite(ledPin, LOW);     // 熄灭LED
      delay(interval);
    }
  }
}

配置串口屏:
在串口屏上添加一个数字控件,用于设置灯的闪烁间隔时间。您需要根据串口屏的使用说明设置数字控件的通讯协议和波特率,确保与Arduino的代码中的设置一致。

测试:
烧录Arduino代码并将串口屏连接到Arduino。现在,您应该能够通过串口屏上的数字控件设置LED灯的闪烁间隔时间了。

以上代码和说明仅为示例,具体的实现方式可能会因使用的具体硬件和串口屏型号而有所不同。

引用GPT回答:
首先,在Arduino代码中,你需要使用Serial对象与串口屏进行通信。你可以使用Serial.println()函数发送命令到串口屏来设置数字控件的数值。例如:

void setup() {
  Serial.begin(9600); // 设置与串口屏相同的波特率
}

void loop() {
  // 发送命令设置数字控件数值为500(假设你的数字控件ID是1)
  Serial.print("#1.val=");
  Serial.println(500);
  
  delay(1000); // 延时1秒钟

  // 发送命令设置数字控件数值为1000
  Serial.print("#1.val=");
  Serial.println(1000);
  
  delay(1000); // 延时1秒钟
}

其中,#1.val=是设置数字控件值的命令,"1"是你串口屏上设置的数字控件的ID, "=500"和"=1000"分别表示设置的数值。

参考gpt:
结合自己分析给你如下建议:
步骤如下:
1.配置arduino和陶晶驰串口屏的通讯参数:您需要在arduino和陶晶驰串口屏上选择相同的波特率、数据位、停止位和校验位,以保证数据传输的正确性。您还需要连接好arduino和陶晶驰串口屏的TX、RX和GND引脚,以实现双向通讯 。
2.设计陶晶驰串口屏的界面:您需要在陶晶驰串口屏上添加一个数字控件,用来显示或输入延时数值。您还需要添加一个按钮控件,用来发送延时数值给arduino。您可以使用陶晶驰串口屏提供的软件工具来设计界面,并设置好控件的属性和事件。
3.编写arduino的程序:您需要在arduino上编写一个程序,用来接收陶晶驰串口屏发送的延时数值,并根据数值控制灯闪烁间隔时间。您可以使用arduino提供的串口库和数字输出库来实现这个功能 。

基于bing、GPT部分内容和本人思考总结:
要实现arduino与陶晶驰串口屏的通讯,可以通过以下步骤来实现:

首先,确保你已经正确安装并连接了arduino和陶晶驰串口屏。

在arduino端,你可以通过Serial库来实现与串口屏的通讯。使用Serial.print()函数可以向串口屏发送数据,使用Serial.read()函数可以接收串口屏发送的数据。

在陶晶驰串口屏上,你可以使用数字控件来设置灯闪烁的间隔时间。在串口屏的界面编辑工具中,选择数字控件,并设置对应的数值范围和步进值。

在arduino端,读取串口屏发送的数值,并将其作为延时控制灯闪烁的间隔时间。你可以使用delay()函数来实现延时。

以下是一个简单的示例代码,用于arduino与陶晶驰串口屏的通讯和延时控制灯闪烁的间隔时间:

arduino
复制代码
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // 选择适当的串口引脚

void setup() {
  Serial.begin(9600); // 初始化串口通讯
  mySerial.begin(9600); // 初始化串口屏的通讯速率
}

void loop() {
  if (mySerial.available()) {
    int value = mySerial.parseFloat(); // 读取串口屏发送的数值
    if (value > 0) {
      digitalWrite(LED_BUILTIN, HIGH); // 点亮LED
      delay(value); // 根据数值实现延时控制
      digitalWrite(LED_BUILTIN, LOW); // 关闭LED
      delay(value); // 根据数值实现延时控制
    }
  }
}

上述示例代码仅作参考,具体的通讯协议和代码实现可能需要根据具体的硬件设备和需求进行更详细的配置。希望对你有所帮助,祝你成功实现arduino与陶晶驰串口屏的通讯和延时控制!