陶晶驰串口屏与arduino uno通信,远程控制arduino 2560上的LED

news2024/9/23 11:25:18

一 材料清单

        arduino uno         1个

        arduino 2560       1个

        nrf24l01               2个

        陶晶驰串口屏      1个

二 本文目的

通过串口屏触摸按键远程控制arduino 2560上的LED 点亮。

三 硬件接线

3.1 发射端接线

3.1.1uno和发射模块接线

nRF24L01 与Arduino UNO接线如下:

————————————————
/*nRF24L01   Arduino UNO
VCC         <->       3.3V
GND        <->       GND
CE           <->       D9
CSN        <->        D10
MOSI      <->        D11
MISO      <->        D12

SCK        <->        D13

IRQ         <->        不接
————————————————

3.1.2 串口屏和uno接线

串口屏与Arduino UNO接线如下:

————————————————

RX  <-> TX0(D1)

TX <->  RX0(D0)

GND    <->   GND

VCC   <-> VCC

————————————————

3.2 接收端接线

nRF24L01 与Arduino 2560接线如下:

————————————————
/*nRF24L01   Arduino UNO
VCC         <->       3.3V
GND        <->       GND
CE           <->       D49
CSN        <->        D53
MOSI      <->        D51
MISO      <->        D50

SCK        <->        D52

IRQ         <->        不接
————————————————

四 代码部分

4.1发射端代码

发射端由串口屏和arduino uno 组成,测试代码如下:

#include  <SPI.h>
#include  <nRF24L01.h>
#include  <RF24.h>
#include<ArduinoJson.h>
#define TJC Serial
#define lenth 6
RF24  radio(9,10);//  CE,  CSN
const  char  text[32]  ={0};//用于存放接收到的数据
const  byte  addresses[][6]={"66666","88888"};//为双向通信创建两个通道地址,6为写通道,8为读取通道
bool  ok=0;

void  sendend()
{
    TJC.write(Oxff);
    TJC.write(Oxff);
    TJC.write(oxff);
}

void  setup()  
{
    TJC.begin(115200);//串口屏采用相同的波特率
    radio.begin();
    radio.setChannel(114);//设置信道(0-127),114号通道
    radio.openwritingPipe(addresses[0]);//88888
    radio.openReadingPipe(1,  addresses[1]);  //  66666
    radio.setPALevel(RF24_PA_HIGH);
}
    int  n  = 0;
    int  buttun  =  1;

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]  ==  Oxff  &&  comd[4]  ==  Oxff  &&  comd[5]  ==  Oxff)
          {
            if  (comd[1]  ==  0x00)  
            {
              if  (comd[2]  ==  0x01)  
              {
                 sprintf(str,  "t0.txt=\"open\"");
                 TJC.print(str);
                 sendend();
                 radio.stoplistening();
                 const  char  text2[]  =  ("open"};
                 bool  ok=radio.write(&text2,  sizeof(text2));
                delay(100);
                //Serial.print("00发送:");
                //Serial.println("OOReqMesFor01")
                radio.startListening();
                delay(100);
                }
              if  (comd[2]==0x00)
              {
                sprintf(str,  "t0.txt=\"close\"");
                TJC.print(str);
                sendend();
                radio.stopListening();
                const  char  text2[]  =  ("close");
                bool  ok=radio.write(&text2,  sizeof(text2));
                delay(100);
                //Serial.print("00发送:");
                //Serial.println("OOReqMesFor01")
                radio.startListening();
                delay(100);
              }
             }
            }
        }  else
        TJC.read()
        }
    }
}

 4.2 串口屏代码

串口屏端代码如下:

printh  55
printh  00
prints  bt0.val,1
printh  ff  ff  ff

4.3 接收端代码

接收端为arduino 2560 ,其代码如下:

#include  <SPI.h>
#include  <nRF24L01.h>
#include  <RF24.h>
RF24  radio(9,  10);//  CE,  CSN
const  char  text[32]={0);//用于存放接收到的数据
const  byte  addresses[][6]=["66666","88888"};//为双向通信创建两个通道地址,6为写通道,8为读取通道
int  led=7;

void  setup()  
{
    Serial.begin(115200);
    radio.begin();
    radio.setChannel(114);//设置信道(0-127),114号通道
    radio.openwritingPipe(addresses[1]);//66666
    radio.openReadingPipe(1,  addresses[0]);  //  88888
    radio.setPALevel(RF24_PA_HIGH);
}

void  loop() 
{
    if  (radio.available()  >  0)  //  是否有有效数据可以读取
    {
        radio.read(&text,  sizeof(text));
        delay(500);
        String  comdata  ="";
        comdata  +=  text;

        if  (comdata  ==  "open")  
        {
            Serial.print("01接收到:");
            Serial.println(comdata);
            digitalwrite(led,HIGH);
            radio.stopListening();
        }
        if  (comdata  ==  "close")  
        {
            Serial.print("01接收到:");
            Serial.println(comdata);
            digitalwrite(led,LOW);
            radio.stopListening();
            radio.startListening();
        }

    else
    {
        radio.startListening();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1926998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

你也想做一个Elemen-ui吧!!!——Blueの前端路

目录 前言 diglog组件 准备工作&#xff1a; 在diglog.vue中模仿element-ui搭建diglog框架 该组件需要完成的任务&#xff1a; title diglog.vue代码&#xff1a; App.vue代码&#xff1a; 效果&#xff1a; 自定义dialog的宽度和距离顶部的 App.vue代码&#xff1a;…

Windows 下 VMamba 安装教程(无需更改base环境中的cuda版本且可加速)

导航 Mamba 及 Vim 安装问题参看本人之前博客&#xff1a;Mamba 环境安装踩坑问题汇总及解决方法Windows 下 Mamba 的安装参看本人之前博客&#xff1a;Window 下Mamba 环境安装踩坑问题汇总及解决方法 &#xff08;无需绕过selective_scan_cuda&#xff09;Linux 下VMamba 安…

前端面试题(JS篇三)

一、|| 和 && 操作符的返回值&#xff1f; || 和 && 首先会对第一个操作数执行条件判断&#xff0c;如果其不是布尔值就先进行 ToBoolean 强制类型转换&#xff0c;然后再执行条件判断。 对于 || 来说&#xff0c;如果条件判断结果为 true 就返回第一个操作数的…

磁环编码器原理

目录 概述 1 编码器介绍 2 实现原理介绍 2.1 磁环功能分析 2.2 硬件实现方式 3 编码器参数 3.1 编码器精度 3.2 影响编码器精度的因素 4 角度计算方法 4.1 单对极编码器 4.2 磁游标编码器 4.2.1 游标方案实现原理 4.2.2 一个实例磁环分析 5 磁刻线编码器 概述 本…

算法题-二叉树

二叉树 二叉树的理论知识 二叉树的种类 满二叉树 满二叉树&#xff1a;如果一棵二叉树只有度为0的节点和度为2的节点&#xff0c;并且度为0的节点在同一层&#xff0c;则此二叉树为满二叉树&#xff08;深度为k&#xff0c;有2^k-1个节点的二叉树&#xff09;。 完全二叉…

PostgreSQL 中如何解决因长事务阻塞导致的其他事务等待问题?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何解决因长事务阻塞导致的其他事务等待问题&#xff1f;一、了解长事务阻塞的原因&…

降Compose十八掌之『利涉大川』| Canvas

公众号「稀有猿诉」 原文链接 降Compose十八掌之『利涉大川』| Canvas 任何一个GUI框架都会提供大量的预定义的UI部件&#xff0c;让开发者构建UI页面&#xff0c;但有些时候预定义的部件无法满足需求&#xff0c;这时就需要定制&#xff0c;甚至是自定义绘制的内容。对…

快手ip地址为什么会乱跳城市

在数字化时代&#xff0c;网络IP地址已成为我们数字身份的一部分&#xff0c;它既是网络空间中的“门牌号”&#xff0c;也是我们在网络世界中的“身份证”。然而&#xff0c;近期有不少快手用户反映&#xff0c;他们的IP地址在使用过程中出现了乱跳城市的现象&#xff0c;引发…

用好六西格玛培训中的DOE工具,让产品和过程优化不再难——张驰咨询

在六西格玛培训中&#xff0c;试验设计&#xff08;Design of Experiments&#xff0c;简称DOE&#xff09;是一种至关重要的工具&#xff0c;它不仅有助于系统地规划和分析试验&#xff0c;还能显著提升产品和过程的改进效率。DOE通过最小化试验次数&#xff0c;同时最大化信息…

大数据基础:Hadoop之Yarn重点架构原理

文章目录 Hadoop之Yarn重点架构原理 一、Yarn介绍 二、Yarn架构 三、Yarn任务运行流程 四、Yarn三种资源调度器特点及使用场景 Hadoop之Yarn重点架构原理 一、Yarn介绍 Apache Hadoop Yarn(Yet Another Reasource Negotiator&#xff0c;另一种资源协调者)是Hadoop2.x版…

Windows安装PostgreSQL

PostgreSQL是一种功能齐全的对象-关系型数据库管理系统&#xff08;ORDBMS&#xff09;&#xff0c;它以加州大学伯克利分校计算机系开发的POSTGRES项目为基础&#xff0c;经过多年的发展&#xff0c;已成为一个高度可扩展、支持多种数据类型、具备复杂查询能力的数据库系统。在…

MoonBit 全新语法:级联运算符

✨MoonBit 引入了 “..” 操作符&#xff0c;能够优雅地对可变 API 进行链式调用&#xff0c;同时保持可变 API 签名的整洁&#xff08;依然返回 Unit&#xff09;

昇思25天学习打卡营第19天|sea_fish

打卡第19天。本次学习的内容为生成式中的Diffusion扩散模型。记录学习的过程。 模型简介 什么是Diffusion Model&#xff1f; 如果将Diffusion与其他生成模型&#xff08;如Normalizing Flows、GAN或VAE&#xff09;进行比较&#xff0c;它并没有那么复杂&#xff0c;它们都…

PHP转Go系列 | ThinkPHP与Gin框架之OpenApi授权设计实践

大家好&#xff0c;我是码农先森。 我之前待过一个做 ToB 业务的公司&#xff0c;主要是研发以会员为中心的 SaaS 平台&#xff0c;其中涉及的子系统有会员系统、积分系统、营销系统等。在这个 SaaS 平台中有一个重要的角色「租户」&#xff0c;这个租户可以拥有一个或多个子系…

Text Control 控件教程:文本和表格相互转换

文档布局中的一项典型任务是将使用制表位创建的纯文本表格转换为完全格式化的表格。在本文中&#xff0c;我们将向您展示如何通过检测制表位并将其转换为包含位置的表格单元格&#xff0c;将纯文本表格转换为表格。 TX Text Control 是一款功能类似于 MS Word 的文字处理控件&…

统计HTML 标签CSS 属性 和 JS 关键字

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>统计HTML 标签、CSS 属性 和 JS 关键字</title> </head> <style>#container {display: flex;}li {list-style: none;} </styl…

【青书学堂】2024年第一学期 平面设计(高起专) 作业

【青书学堂】2024年第一学期 平面设计(高起专) 作业 为了方便日后复习&#xff0c;青书学堂成人大专试题整理。 若有未整理的课程&#xff0c;请私信我补充&#xff0c;欢迎爱学习的同学们收藏点赞关注&#xff01;文章内容仅限学习使用&#xff01;&#xff01;&#xff01; 第…

MacCleaner Pro Mac系统综合清理工具包 释放磁盘空间,提高整体性能

MacCleaner Pro 是一款专为 Mac 用户设计的软件工具&#xff0c;用于优化和清理他们的系统。它提供了一系列功能来帮助用户加速他们的 Mac&#xff0c;释放磁盘空间&#xff0c;并提高整体性能。 MacCleaner Pro 的一些主要功能包括&#xff1a; 系统清理&#xff1a;此功能有…

捷配笔记-如何确保PCB信号完整性?

三十年的电子设计历程&#xff0c;是一段从微米到纳米的跨越之旅。1987年&#xff0c;0.5微米工艺曾被视为技术的极限&#xff0c;而如今22纳米工艺已成为行业的新标准。本文将回顾这段技术革新的历程&#xff0c;并探讨在这一过程中我们所面临的挑战与应对策略。 技术演进的里…

python自动化flask库-从数据库里取出数据

实现效果&#xff1a;写一个接口&#xff0c;从mysql数据库读到user表的数据&#xff08;用户名和密码&#xff09;&#xff0c;把数据作为回参 用到的库&#xff1a;flask&#xff0c;pymysql 代码&#xff1a; from flask import Flask, jsonify import pymysql# 连接数据…