Saluti a tutti.
Dopo diversi tentativi per ottenere un collegamento stabile con nRF24 sto valutando la possibilità di utilizzare per la trasmissione dei dati (considerato anche che la distanza è inferiore ai 100 mt) il protocollo I2C.
Grazie ai vari tutorials presenti in rete mi è sembrato intuitivo e di semplice utilizzo.
ERRORE!
I guai sono iniziati quando ho cercato di inviare allo slave un array. In rete non sono riuscito a trovare alcunché di comprensibile per il mio livello di conoscenza.
Qualcuno ha già risolto il problema e potrebbe indicarmi la strada corretta?
Allego gli ultimi sketch elaborati (non funzionanti!!), l'errore è nella definizione dei dati da inviare, ma proprio non sono riuscito a capire come variarli.
Grazie anticipatamente.
#include <Wire.h>
int v_Trasmetti[3];
char car;
String stringa;
int v_a;
int v_b;
int v_c;
void setup() {
Serial.begin(9600);
Wire.begin();
}
void loop() {
if (Serial.available()) {
stringa = "";
do {
if (Serial.available()) {
car = Serial.read();
if (car != '\n')
stringa += car;
}
} while (car != '\n'); // carattere speciale per '\n'
if (stringa == "a") {
v_a = 1;
v_b = 2;
v_c = 3;
}
invia();
}
}
void invia() {
v_Trasmetti [0] = v_a;
v_Trasmetti [1] = v_b;
v_Trasmetti [2] = v_c;
Wire.beginTransmission(7);
Wire.write(&v_Trasmetti, sizeof(v_Trasmetti));
Wire.endTransmission();
delay(500);
}
#include <Wire.h>
int v_a;
int v_b;
int v_c;
int v_ricevuto[3];
void setup() {
Serial.begin(9600);
Wire.begin(7);
Wire.onReceive(ricevi);
}
void loop() {
delay(1000);
}
void ricevi() {
while (Wire.available()) {
Wire.read(&ricevuto, sizeof(ricevuto));
}
v_a = ricevuto[0];
v_b = ricevuto[1];
v_c = ricevuto [2];
Serial.print(v_a);
Serial.print(" - ");
Serial.print(v_b);
Serial.print(" - ");
Serial.println(v_c);
}