Code:
/* ARDUINO TRANSMITTER
*
* Arduino Pro Mini 328 5V/16MHz
* Power supply:3.3V from computer USB or phone charger, 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 (not used for transmitter)
*/
#include <SPI.h>
const int csn = 10;
const int ce = 7;
const int nrfint = 8;
byte data = 0;
void setup() {
pinMode(ce,OUTPUT);
digitalWrite(ce,LOW);
delay(20);
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 TX
regWrite(0,10); // Power ON, CRC, 1 byte, PTX
regWrite(4,255); // 15 Retries, 4ms wait
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(225); // Flush_TX
digitalWrite(csn, HIGH);
regWrite(7,112); // Clear nrf interrupts
print_nrf_registers(); // Check values after config
}
void loop() {
digitalWrite(csn,LOW); // Write TX payload
SPI.transfer(160);
SPI.transfer(data);
digitalWrite(csn,HIGH);
digitalWrite(ce,HIGH);
delayMicroseconds(10); // Pulse it out
digitalWrite(ce,LOW);
delay(10);
Serial.print("Sent ");
Serial.println(data);
digitalWrite(csn,LOW);
SPI.transfer(225); // Flush_TX
digitalWrite(csn, HIGH);
regWrite(7,112); // Clear nrf interrupts
if (data<10){
data++;
}
else{
data=0;
}
delay(1000);
}
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); // Add 32 to reg address to write
SPI.transfer(value);
digitalWrite(csn, HIGH);
}
void readPipeAddress(int pipe){
int buf[5];
digitalWrite(csn, LOW);
SPI.transfer(pipe+10); // pipe #0 address is in reg #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);
}
}
A suivre...