之前发的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)
|