Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save HectorTorres/67a3977edd3efb51fbfb6a1fa496925b to your computer and use it in GitHub Desktop.
Save HectorTorres/67a3977edd3efb51fbfb6a1fa496925b to your computer and use it in GitHub Desktop.
NRF_COM.c
// Emisor/Receptor Wireless nRF24L01+
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
char cadena[10]; //Cadena de caracteres para enviar
String inputstring = ""; //Cadena recibida desde el PC
boolean input_stringcomplete = false; //Cadena recibida completamente desde el PC
void setup()
{
Mirf.spi = &MirfHardwareSpi; //Inicializa controlador de SPI
Mirf.init(); //Inicializa PINES del SPI
Mirf.payload = 1; //Define el payload, cantidad de bytes que enviara el NRF
Mirf.channel = 90; //Seleccion de canal
Mirf.config();
Mirf.configRegister(RF_SETUP,0x06); // 1MHz
Mirf.setTADDR((byte *)"TX_01"); // Seleccion de Direccion
Serial.begin(57600); //Inicializa Serial a 57600 baudios
Serial.println("Iniciando ...");
}
// ENVIO DE CADENA
void transmit(const char *string)
{
byte c;
for( int i=0 ; cadena[i]!=0x00 ; i++ ){
c = cadena[i];
Mirf.send(&c);
while( Mirf.isSending() ) ;
}
}
// ENVIO DE CR/LF
void transmitlf(void)
{
byte c;
c = '\r';
Mirf.send(&c);
while( Mirf.isSending() ) ;
c = '\n';
Mirf.send(&c);
while( Mirf.isSending() ) ;
}
//Recepcion de caracteres desde serial
void serialEvent() {
char inchar = (char)Serial.read();
// Concatena caracter ingresado
inputstring += inchar;
// Fin de la cadena, recibido <CR>
if(inchar == '\r') {input_stringcomplete = true;}
}
void loop()
{
// Condicion para enviar datos
if (input_stringcomplete) {
inputstring.toCharArray(cadena, 10); //Conversion de String a arreglo de caracteres
transmit(cadena); //Transmite cadena ingresada
transmitlf(); //Transmite CR/LF
Serial.println("YO: ");
Serial.println(inputstring);
input_stringcomplete = false;
inputstring = "";
}
byte c;
int ascii;
//Condicion de Recepcion de datos
if( Mirf.dataReady() )
{
Mirf.getData(&c); //Funcion de libreria MIRF que recibe Byte
ascii=c; //
char caracter= (char)ascii; //Casting de char para convertir de int a char
Serial.print(caracter);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment