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

一 材料清单

        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();
    }
}

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 06:36:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 06:36:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 06:36:03       58 阅读
  4. Python语言-面向对象

    2024-07-15 06:36:03       69 阅读

热门阅读

  1. 速盾:cdn技术是什么意思?

    2024-07-15 06:36:03       23 阅读
  2. 使用adb连接安卓手机

    2024-07-15 06:36:03       23 阅读
  3. Android人脸解锁源码解析

    2024-07-15 06:36:03       17 阅读
  4. 速盾:高防cdn和普通cdn的区别?

    2024-07-15 06:36:03       29 阅读
  5. Tick数据的清洗和1分钟K线合成

    2024-07-15 06:36:03       18 阅读
  6. App测试自动化工具UIAutomator2的使用

    2024-07-15 06:36:03       23 阅读
  7. React@16.x(57)Redux@4.x(6)- 实现 bindActionCreators

    2024-07-15 06:36:03       28 阅读
  8. PyTorch构建一个肺部CT图像分类模型来分辨肺癌

    2024-07-15 06:36:03       19 阅读
  9. Python学生信息管理系统的设计与实现

    2024-07-15 06:36:03       28 阅读
  10. SQL优化

    SQL优化

    2024-07-15 06:36:03      30 阅读
  11. RocketMQ

    RocketMQ

    2024-07-15 06:36:03      24 阅读
  12. SpringBoot实战:定时任务

    2024-07-15 06:36:03       20 阅读