之前發的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
|