SUSCRIBETE A MI CANAL Y NO OLVIDES DARLE LIKE A MIS VÍDEOS
Prueba 1
EMISOR_P1
/*
* Código desarrollado por Erik Fernandez Juallek
* Visita mi canal de youtube y suscribete
* Este código envía diferentes bytes usando el modulo NRF24
*/
#include <SPI.h>//para la comunicación SPI
#include <nRF24L01.h>//para la comunicación RF del NRF24
#include <RF24.h>
//el emisor no necesita la librería servo (no controla ningún servo)
RF24 radio(9,10); //CNS , CE
//dirección de transmisión
const uint64_t direccion = 0xE8E8F0F0E1LL; /*numero de 64 bits, lo que indicamos con el tipo uint64_t ,
entero sin signo de 64 bits, y por si no estuviera suficientemente claro,
le indicamos al compilador que se trata de un LL al final del número, o sea LongLong = 64 bits.
*/
unsigned char comando;
int i=0;
//variables para prueba 3
const int sincro = 9999;//constante entero para sincronizar
const int fintrama = 5555;//constante entero finalizar trama
int p1,p2;
void setup(){
Serial.begin(9600);//inicia la comunicación serial en 9600
radio.begin();//inicia la comunicación RF
radio.openWritingPipe(direccion);//canal de escritura
}
void loop(){
//prueba 1 funcional
///*
for(i=0;i<=180;i++){
//sección de envió de datos
radio.write(&i, sizeof(i));//escribe el mensaje a enviar por el NRF24
}//*/
//prueba 2 funcional
/*
//sección de lectura de datos
if(Serial.available())//Lectura si hay byte almacenado en la entrada serial del IDE
{
comando=Serial.read(); //lectura de byte
if(comando=='+')i+=10;
else if(comando=='8')i+=15;
else if(comando=='-')i-=10;
else if(comando=='2')i-=15;
if(i>180)i=180;
else if(i<0)i=0;
}
//sección de envió de datos
radio.write(&i, sizeof(i));//escribe el mensaje a enviar por el NRF24
//*/
//prueba 3 mover dos servos
/*
p1 = map(analogRead(A5),0,1023,0,180);
p2 = map(analogRead(A4),0,1023,0,180);
//sección de envió de datos
radio.write(&sincro, sizeof(sincro));
radio.write(&p1, sizeof(p1));
radio.write(&p2, sizeof(p2));
radio.write(&fintrama, sizeof(fintrama));
//*/
//NOTAS
//los delays afectan la capacidad de transmitir del equipo...
//
}
/*
* Código desarrollado por Erik Fernandez Juallek
* Visita mi canal de youtube y suscribete
* Este código envía diferentes bytes usando el modulo NRF24
*/
#include <SPI.h>//para la comunicación SPI
#include <nRF24L01.h>//para la comunicación RF del NRF24
#include <RF24.h>
#include <Servo.h>//para controlar el servomotor SG90
RF24 radio(9,10); //CNS , CE
//dirección de transmisión
const uint64_t direccion = 0xE8E8F0F0E1LL;/*numero de 64 bits, lo que indicamos con el tipo uint64_t ,
entero sin signo de 64 bits, y por si no estuviera suficientemente claro,
le indicamos al compilador que se trata de un LL al final del número, o sea LongLong = 64 bits.
*/
unsigned char comando;
Servo SG901;
//variables para prueba 3
boolean trama=false;
int i,j=0;
const int sincro = 9999;//constante entero para sincronizar
const int fintrama = 5555;//constante entero finalizar trama
int p1,p2;
Servo SG902;
void setup(){
SG901.attach(7);//asigna el pin 7 al servo sg90
SG902.attach(6);
Serial.begin(9600);//inicia la comunicación serial en 9600
radio.begin();//inicia la comunicación RF
radio.openReadingPipe(1,direccion);//lectura de canal (canal,dirección)
radio.startListening();
SG901.write(0);
SG902.write(0);
delay(500);
Serial.println("INICIADO");//indica que ah iniciado a funcionar el receptor
}/*usamos radio.openReadingPipe(1,pipe) para poder leer y después radio.startListening()
nos permite comenzar la escucha.*/
void loop(){
// Pruebas 1,2
///*
if(radio.available())//verifica si hay algo en espera en el radio
{
int angulo;
radio.read(&angulo, sizeof(angulo));
SG901.write(angulo);
Serial.println(angulo);
}
//*/
//Prueba 3
/*
if(radio.available()){
radio.read(&i, sizeof(i));
asignar();
}
//*/
}//FIN LOOP
//función para la prueba 3
void asignar()
{
if(i==sincro){
trama=true;
Serial.print(i);Serial.print("-1\n");
}
else if(j==0&&i!=sincro&&trama==true){
Serial.print(i);Serial.print("-2\n");
p1=i;
j=1;
}
else if(j==1&&i!=sincro&&trama==true){
Serial.print(i);Serial.print("-3\n");
p2=i;
j=2;
}
else if(i==fintrama&&j==2&&trama==true){
Serial.print(i);Serial.print("-4\n");
SG901.write(p1);
SG902.write(p2);
j=0;
trama=false;
}
}
Código de control con envió de 4 variables
CONTROL_EMISOR
/*
* Código desarrollado por Erik Fernandez Juallek
* Visita mi canal de youtube y suscribete
* Este código envía diferentes bytes usando el modulo NRF24
*/
#include <SPI.h>//para la comunicación SPI
#include <nRF24L01.h>//para la comunicación RF del NRF24
#include <RF24.h>
//el emisor no necesita la librería servo (no controla ningún servo)
RF24 radio(9,10); //CNS , CE
//dirección de transmisión
const uint64_t direccion = 0xE8E8F0F0E1LL; /*numero de 64 bits, lo que indicamos con el tipo uint64_t ,
entero sin signo de 64 bits, y por si no estuviera suficientemente claro,
le indicamos al compilador que se trata de un LL al final del número, o sea LongLong = 64 bits.
*/
unsigned char comando;
int i=0;
const int sincro = 9999;//constante entero para sincronizar
const int fintrama = 5555;//constante entero finalizar trama
int b1,b2,b3,b4;//enteros "bytes de datos" ENVIAR
void setup(){
pinMode(8,INPUT);//pulsador lectura de estado led
pinMode(7,INPUT);//pulsador lectura de estado led
pinMode(2,OUTPUT);//pulsador lectura de estado led
Serial.begin(9600);//inicia la comunicación serial en 9600
radio.begin();//inicia la comunicación RF
radio.openWritingPipe(direccion);//canal de escritura
digitalWrite(2,HIGH);
delay(1000);
digitalWrite(2,LOW);
}
void loop(){
b1 = map(analogRead(A5),0,1023,0,180);//lectura analógica asignada a un valor entero 0- 180
b2 = map(analogRead(A4),0,1023,0,180);//lectura analógica asignada a un valor entero 0- 180
b3 = digitalRead(8);//lectura digital asignada a un entero 0-1
b4 = digitalRead(7);//lectura digital asignada a un entero 0-1
//sección de envió de datos
radio.write(&sincro, sizeof(sincro));
radio.write(&b1, sizeof(b1));
radio.write(&b2, sizeof(b2));
radio.write(&b3, sizeof(b3));
radio.write(&b4, sizeof(b4));
radio.write(&fintrama, sizeof(fintrama));
}
/*
* Código desarrollado por Erik Fernandez Juallek
* Visita mi canal de youtube y suscribete
* Este código envía diferentes bytes usando el modulo NRF24
*/
#include <SPI.h>//para la comunicación SPI
#include <nRF24L01.h>//para la comunicación RF del NRF24
#include <RF24.h>
#include <Servo.h>//para controlar el servomotor SG90
RF24 radio(9,10); //CNS , CE
//dirección de transmisión
const uint64_t direccion = 0xE8E8F0F0E1LL;/*numero de 64 bits, lo que indicamos con el tipo uint64_t ,
entero sin signo de 64 bits, y por si no estuviera suficientemente claro,
le indicamos al compilador que se trata de un LL al final del número, o sea LongLong = 64 bits.
*/
unsigned char comando;
Servo SG901;
Servo SG902;
boolean trama=false;
int i,j=0;
const int sincro = 9999;//constante entero para sincronizar
const int fintrama = 5555;//constante entero finalizar trama
int b1,b2,b3,b4;//enteros "bytes de datos" RECIBIR Y ASIGNAR A ESTAS VARIABLES
void setup(){
pinMode(5,OUTPUT);//led salida
pinMode(4,OUTPUT);//led salida
SG901.attach(7);//asigna el pin 7 al servo sg90_1
SG902.attach(6);//asigna el pin 6 al servo sg90_2
Serial.begin(9600);//inicia la comunicación serial en 9600
radio.begin();//inicia la comunicación RF
radio.openReadingPipe(1,direccion);//lectura de canal (canal,dirección)
radio.startListening();
SG901.write(90);
SG902.write(90);
digitalWrite(5,HIGH);
digitalWrite(4,HIGH);
delay(500);
digitalWrite(5,LOW);
digitalWrite(4,LOW);
delay(250);
Serial.println("INICIADO");//indica que ah iniciado a funcionar el receptor
}/*usamos radio.openReadingPipe(1,pipe) para poder leer y después radio.startListening()
nos permite comenzar la escucha.*/
void loop(){
if(radio.available()){
radio.read(&i, sizeof(i));
asignar();
}
}
void asignar()
{
if(i==sincro){
trama=true;
Serial.print(i);Serial.print("-1\n");
}
else if(j==0&&i!=sincro&&trama==true){
Serial.print(i);Serial.print("-2\n");
b1=i;
j=1;
}
else if(j==1&&i!=sincro&&trama==true){
Serial.print(i);Serial.print("-3\n");
b2=i;
j=2;
}
else if(j==2&&i!=sincro&&trama==true){
Serial.print(i);Serial.print("-4\n");
b3=i;
j=3;
}
else if(j==3&&i!=sincro&&trama==true){
Serial.print(i);Serial.print("-5\n");
b4=i;
j=4;
}
else if(i==fintrama&&j==4&&trama==true){
Serial.print(i);Serial.print("-6\n");
SG901.write(b1);
SG902.write(b2);
digitalWrite(5,b3);
digitalWrite(4,b4);
j=0;
trama=false;
else if(i==fintrama&&j==4&&trama==true){
j=0;
trama=false;
}
}
}