陶晶驰串口屏与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();
    }
}

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值