ok, una premessa: il codice non è proprio perfetto, era solo una prova per vedere come funziona
Trasmettitore#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"
RF24 radio(9,10);
const uint64_t pipe = 0xF0F0F0F0E1LL;
int triggerPort = 5;
int echoPort = 8;
void setup(){
pinMode( triggerPort, OUTPUT );
pinMode( echoPort, INPUT );
radio.begin();
radio.openWritingPipe(pipe);
pinMode(3, OUTPUT);
pinMode(7, OUTPUT);
pinMode(2, OUTPUT);
pinMode(6, OUTPUT);
digitalWrite(7,0);
digitalWrite(2,0);
digitalWrite(6,0);
digitalWrite(3,1);
delay(200);
digitalWrite(3,0);
radio.startListening();
}
void loop(){
radio.stopListening();
long duration = pulseIn( echoPort, HIGH );
long r = 0.034 * duration / 2;
if(duration>38000) duration = 0;
bool ok = radio.write( &r, sizeof(long) );
if(ok){
digitalWrite(3,1);
delay(200);
digitalWrite(3,0);
}else{
digitalWrite(7,1);
delay(200);
digitalWrite(7,0);
}
radio.startListening();
delay(50);
}
Ricevitore#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"
RF24 radio(9,10);
const uint64_t pipe = 0xF0F0F0F0E1LL;
void setup(){
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
delay(100);
Serial.begin(9600);
printf_begin();
radio.printDetails();
}
void loop(){
if( radio.available() ){
int got_distance;
radio.read( &got_distance, sizeof(long) );
printf("Distance %d\n",got_distance);
}
}