Hola a todos,
Estoy intentando hacer una red inalámbrica con varios arduinos. La distancia que pueden alcanzar estos chips no es alta (unos 10 metros) por lo que se me ha ocurrido y ya que va a haber unos cuantos se envíen entre ellos la señal, si es para ellos que se la queden y ejecuten lo que tenga que ejecutar, y si no es suya, la reboten. Para ellos se me ha ocurrido (con algo de ayuda de unas cuantas web todo) enviar 3 paquetes o como se le diga. En el primero ira el numero de nodo para el que es la señal, en el segundo el numero de orden, y el tercero si esta ejecutada o no, ya que si esta ejecutada no tendrán que rebotarla. Me he puesto a escribir un código con copia pega de varios códigos mas algo propio... compilar compila otra cosa es que funcione. Os lo pego para que si alguno sabe algo del tema o se le puede ocurrir algo postee. He buscado un montón de información sobre este chip y ponerlo en modo red mallada pero no hay mucho.
Un saludo a todos
#include "Nrf2401.h"
byte numnodolocal; //declaro variables
byte ordenodo;
byte numnodo;
byte realizado; //realizado=01 Si realizado=00 No
Nrf2401 Radio;
void setup(void)
{
Radio.localAddress = 1;
Radio.remoteAddress = 1;
Radio.txMode(3);
Radio.rxMode(3);
byte numnodolocal = 01; //Numero de nodo
Radio.data[0]=numnodo;
Radio.data[1]=ordenodo;
Radio.data[2]=realizado;
}
void loop(void)
{
while(!Radio.available());
Radio.read();
if(Radio.data[0] == numnodolocal && Radio.data[2] == 00)
{
if (Radio.data[1] == 01){
// Orden 1 y pones a 01 el Radio.data[02]
}
else if (Radio.data[1] == 02){
// Orden 2 y pones a 01 el Radio.data[02]
}
else if (Radio.data[1] == 03){
// Orden 3 y pones a 01 el Radio.data[02]
}
else if (Radio.data[1] == 04){
// Orden 4 y pones a 01 el Radio.data[02]
}
}
else if (Radio.data[1] != numnodolocal && Radio.data[02] == 00){
Radio.write ();
delay (1000);
}
}
Actualizo:
Creo que la ultima parte la de cambiar el tercer bloque a "tarea recibida y ejecutada" no vale para nada, ya que quien lo cambia es el nodo que tiene que ejecutarla, asi que si por lo que sea le viene de otro nodo, le vendria como "no ejecutada" y por tanto se volveria a ejecutar.
Ayuda!