Code:
/* ARDUINO RECEIVER
*
* Arduino Pro Mini 328 5V/16MHz
* Power supply:3.3V from computer USB via FTDI.
*
* NRF Arduino
* Pin Colour Pin
* 1 Black GND
* 2 Red 3.3V THREE POINT THREE !!!.!!!
* 3 Brown 7 CE
* 4 White 10 CSN
* 5 Yellow 13 SCK
* 6 Green 11 MOSI
* 7 Orange 12 MISO
* 8 Grey 8 nrfint PULLUP
*/
#include <SPI.h>
const int csn = 10;
const int ce = 7;
const int nrfint = 8;
void setup() {
pinMode(ce,OUTPUT);
digitalWrite(ce,LOW);
delay(100);
pinMode(csn, OUTPUT);
digitalWrite(csn,HIGH);
pinMode(nrfint, INPUT_PULLUP);
SPI.begin();
Serial.begin(9600);
print_nrf_registers(); // Check Power-On values
Serial.println();
// CONFIG RX
regWrite(0,11); // Power ON, CRC, 1 byte, PRX
regWrite(6,8); // 2Mbps, -18dBm
for (int reg=17;reg<23;reg++){ // Payload width 1 byte all pipes
regWrite(reg,1);
}
digitalWrite(csn,LOW);
SPI.transfer(226); // Flush_RX
digitalWrite(csn, HIGH);
regWrite(7,112); // Clear nrf interrupts
print_nrf_registers(); // Check values after config
digitalWrite(ce,HIGH); // Start listening
Serial.println("Waiting for data....");
}
void loop() {
int data = 0;
int dataready = digitalRead(nrfint);
if (dataready==LOW){
digitalWrite(ce,LOW); // Stop listening
digitalWrite(csn, LOW);
SPI.transfer(97); // Read RX_PAYLOAD
data=SPI.transfer(0);
SPI.transfer(226); // Flush_RX
digitalWrite(csn,HIGH);
regWrite(7,64); // Clear RX_DR
Serial.print("Received ");
Serial.println(data);
digitalWrite(ce, HIGH); // Start listening
Serial.println("Waiting for data....");
}
}
int regRead(int address) {
digitalWrite(csn, LOW);
SPI.transfer(address);
int value=SPI.transfer(0);
digitalWrite(csn, HIGH);
return value;
}
void regWrite(byte address, byte value){
digitalWrite(csn,LOW);
SPI.transfer(address+32);
SPI.transfer(value);
digitalWrite(csn, HIGH);
}
void readPipeAddress(int pipe){
int buf[5];
digitalWrite(csn, LOW);
SPI.transfer(pipe+10);
for (int i= 0;i<5;i++){
buf[i]=SPI.transfer(0);
Serial.print(buf[i]);
}
digitalWrite(csn,HIGH);
}
void print_nrf_registers(void){
int regvalue;
for (int reg = 0; reg < 10; reg++) {
regvalue=regRead(reg);
delay(10);
Serial.println(regvalue);
}
for (int i=0;i<7;i++){
readPipeAddress(i);
delay(10);
Serial.println();
}
for (int reg=17;reg<24;reg++){
regvalue=regRead(reg);
delay(10);
Serial.println(regvalue);
}
}
Ca ne veut pas dire qu'il n'y en a pas.
A suivre...