标题:
NRF24L01 2.4G摇控收发纯数字2通道PWM(可以转为4,8...N个双向通道)
[打印本页]
作者:
51hei学习
时间:
2016-4-10 03:02
标题:
NRF24L01 2.4G摇控收发纯数字2通道PWM(可以转为4,8...N个双向通道)
之前发的24L01 控制LED灯明暗,弄好了
可以增加用 map 更改数字范围实现更多通道
在arduino1.01 编译通过,10米内没压力,(注:通道多了,会有延时)
-------------------------发送端--------------------------------
//MISO -> D12
// * MOSI ->D11
// * SCK ->D13
//* CE ->D8
//* CSN ->D7
#include "SPI.h" //24L01库文件
#include "Mirf.h"
#include "nRF24L01.h"
#include "MirfHardwareSpiDriver.h"
int aaa;
int aaaa;
int bbb;
int bbbb;
void setup(){
Mirf.spi = &MirfHardwareSpi; //加载24L01 SPI
Mirf.init(); //开始
Mirf.setTADDR((byte *)"serv1");//发送到"接收地址"
Mirf.payload = sizeof(int); //数据类型(整数)
Mirf.config(); //发送通道??
}
void loop(){
aaa=analogRead(A4)+1; //读取 X 向电平PWM(1至1024)
bbb= -analogRead(A5)-1; //读取 Y向电平PWM(-1至-1024)
if (aaa !=aaaa) //如果 X 向电平与之前电平不一样则执行
{
Mirf.send((byte *)&aaa); //发送X向电平
aaaa=aaa; //保存X 向当前电平
while(Mirf.isSending()){ //等待或继续发送??
}
}
if (bbb !=bbbb) //如果 Y 向电平与之前电平不一样则执行
{
Mirf.send((byte *)&bbb); //发送Y向电平
bbbb=bbb; //保存Y 向当前电平
while(Mirf.isSending()){ //等待或继续发送?
}
}
delay(10); // 等待0.01秒
}
复制代码
---------------------接收端--------------------------------
//MISO -> D12
// * MOSI ->D11
// * SCK ->D13
//* CE ->D8
//* CSN ->D7
//LCD 1602 IIC SDA---A4 328
//LCD 1602 IIC SCL---A5 328
#include "Wire.h" //LCD1602 IIC 库文件
#include ;
LiquidCrystal_I2C lcd(0x27,16,2);
#include "SPI.h" //24L01库文件
#include "Mirf.h"
#include "nRF24L01.h"
#include "MirfHardwareSpiDriver.h"
int data;
int aaa;
int bbb;
void setup(){
lcd.init(); //加载LCD1602 IIC
lcd.backlight();
//lcd.setBacklight(120); //设置LCD背光亮度,好象没作用
delay(20);
Mirf.spi = &MirfHardwareSpi; //加载24L01 SPI
Mirf.init();
Mirf.setRADDR((byte *)"serv1"); //接收地址" "
Mirf.payload = sizeof(int); //数据类型(整数)
Mirf.config();
}
void loop(){
if(Mirf.dataReady()){ //如果接收到数据则执行
Mirf.getData((byte *)&data); //接收数据
if (data>=1) //如果大于或等于1为X向 (如果设为 >=0就会 X,Y通道冲突,所以设为1开始)
{
aaa=data-1;
}
if (data<=-1) //如果小于或等于-1为Y向(............)
{
bbb=data+1;
}
Mirf.rxFifoEmpty(); //清理24L01援存??
}
lcd.clear(); //清屏
lcd.setCursor(0, 0);
lcd.print(aaa); //显示X向 1至1024
lcd.setCursor(6, 0);
lcd.print(0-bbb); //显示Y向,并将负数变为正数 1至1024
delay(10);
}
复制代码
Mirf.payload = sizeof(int); //数据类型(整数)
if(Mirf.dataReady()){
应该指的是 从机接收到 主机发来的任何信号 就开始执行下面语句吧
之前定义类型为整数,所以每收到一条整数就开始 .因为要快速响应~
24L01 .zip
(16.64 KB, 下载次数: 35)
2016-4-10 03:00 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1