Buenas Tardes foro quisiera que me apoyaran con un código necesito enviar unos datos de un Arduino maestro a un esclavo en el maestro se maneja unas tiras led y recibe datos de un bluetooth y el esclavo solo recibe los datos y lo imprimí, el problema es que no me envía los datos del maestro al esclavo ya probé con una programación básica y si funcionan los módulos.
Estos son los codigos
TRANSMISOR
// Comunicación con la memoria
#define USE_SD_H 0
#if USE_SD_H
#include <SD.h>
#else // USE_SD_H
#include "SdFat.h"
SdFat SD;
#endif // USE_SD_H
File ArchivoMemo;
// Comunicación con la cuerda led
#include <FastLED.h>
#define NUM_LEDS 80
#define DATA_PIN 5 // Cambia el número del pin si es necesario
#define BRIGHTNESS 255
#define VELOCIDAD_ANIMACION 300 // Velocidad de desplazamiento en milisegundos
CRGB leds[NUM_LEDS];
int direccion = 1; // 1 para mover hacia abajo, -1 para mover hacia arriba
int posicion = 0;
// Comunicación Bluetooth
#include <SoftwareSerial.h>
SoftwareSerial bluetoothSerial(2, 3); // Rx, Tx para el módulo Bluetooth HC-05
// Comunicación NRF24L01
#include <RF24.h>
RF24 radio(9, 10); // Pines CE y CSN del módulo NRF24L01
byte address[6] = "00001"; // Dirección del canal de comunicación NRF24L01
// DECLARAR COLORES
CRGB colorRojo = CRGB(255, 0, 0);
CRGB colorVerde = CRGB(0, 255, 0);
CRGB colorAzul = CRGB(0, 0, 255);
CRGB colorBlanco = CRGB(255, 255, 255);
CRGB colorAmarillo = CRGB(255, 255, 0);
//************************************************************************************************
// Función de inicio
void setup() {
FastLED.addLeds<WS2811, DATA_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
Serial.begin(9600); // Inicia la comunicación serial para depuración
bluetoothSerial.begin(9600); // Inicia la comunicación serial con el módulo Bluetooth
// Configurar LEDs con color azul sólido al inicio
Serial.print("i n i c i o");
int inicio = 1;
while (inicio < 5) {
fill_solid(leds, NUM_LEDS, CRGB::Blue);
FastLED.show();
delay(100);
fill_solid(leds, NUM_LEDS, CRGB::Black);
FastLED.show();
delay(100);
Serial.print(" .");
inicio++;
}
Serial.println();
// Inicializa el módulo NRF24L01
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_HIGH);
radio.stopListening();
}
//************************************************************************************************
// Función principal
void loop() {
Serial.println("- - - A N I M A C I O N E S - - -");
char comando = LeerMemoSD(); // Leer la memoria para saber cuál es el último comando
if (comando == 'E') { // Animar la bandera de El Salvador
comando = BanderaAnimation("E", colorAzul, colorBlanco, colorAzul);
Serial.println("ENVIANDO: " + String(comando));
Transmitir(comando); // Transmitir el comando a través del NRF24L01
} // Fin de la bandera de El Salvador
if (comando == 'M') { // Animar la bandera de Mexico
comando = BanderaAnimation("M", colorVerde, colorBlanco, colorRojo);
Serial.println("ENVIANDO: " + String(comando));
Transmitir(comando); // Transmitir el comando a través del NRF24L01
} // Fin de la bandera de Mexico
if (comando == 'C') { // Animar la bandera de Colombia
comando = BanderaAnimation("C", colorAmarillo, colorAzul, colorRojo);
Serial.println("ENVIANDO: " + String(comando));
Transmitir(comando); // Transmitir el comando a través del NRF24L01
} // Fin de la bandera de Colombia
// Agrega condiciones para otras banderas aquí
if (comando == 'X') { // Si la comunicación falla
fill_solid(leds, NUM_LEDS, CRGB::Blue);
FastLED.show();
// Cuerda led se pone azul por defecto
}
}
//************************************************************************************************
// Inicia animación de la bandera rgb
char BanderaAnimation(char Pais, CRGB Color1, CRGB Color2, CRGB Color3) {
Serial.print("INICIA ANIMACION");
unsigned long inicioAnimacion = millis();
char STAR_Animation = Pais;
char END_Animation = Pais;
while (STAR_Animation == END_Animation) { // Duración infinita
Serial.println(".");
if (direccion == 1) { // Movimiento de arriba abajo
posicion += 1; // Incrementamos la posición
if (posicion >= NUM_LEDS - 45) { // Si llegamos al final, cambiamos de dirección
direccion = -1;
}
} else {
posicion -= 1; // Decrementamos la posición
if (posicion <= 0) { // Si llegamos arriba, cambiamos de dirección
direccion = 1;
}
}
fill_solid(leds, NUM_LEDS, CRGB::Black); // Apagamos todos los LEDs
for (int j = 0; j < 15; j++) { // Encendemos la parte del primer color
leds[posicion + j] = Color1;
}
for (int j = 15; j < 30; j++) { // Encendemos la parte blanca
leds[posicion + j] = Color2;
}
for (int j = 30; j < 45; j++) { // Encendemos la parte azul
leds[posicion + j] = Color3;
}
//_________________________________________________________________________
char comando = LeerBluet(); // Lee un carácter
if (comando == 'E' || comando == 'M' || comando == 'C' || comando == 'A') {
Serial.println("cambio de animacion");
END_Animation = comando;
}
//_________________________________________________________________________
FastLED.show();
delay(VELOCIDAD_ANIMACION);
}
EscribirMemoSD(END_Animation); // Escribe en la memoria la última configuración
return END_Animation;
} // Fin animación
//****************************************************************//
// Función para leer el bluetooth
char LeerBluet() {
if (bluetoothSerial.available() > 0) {
char comando1 = bluetoothSerial.read(); // Lee un carácter
return comando1;
} else {
char comando1 = Serial.read();
return comando1;
}
} // Fin de lectura de bluetooth
//****************************************************************************************************************************
// Función para leer la memoria
char LeerMemoSD() {
if (!SD.begin(4)) { // El pin 4 se utiliza para seleccionar la tarjeta SD
Serial.println("No se pudo inicializar la tarjeta microSD");
return 'X';
}
ArchivoMemo = SD.open("Configuracion.txt"); // Abrir el archivo de texto en modo lectura
if (ArchivoMemo) {
char ultimaLinea = 'X'; // Variable para almacenar la última línea
while (ArchivoMemo.available()) { // Leer y almacenar cada línea del archivo
String linea = ArchivoMemo.readStringUntil('\n');
if (linea.length() > 0) {
char ultimoCaracter = linea[linea.length() - 1]; // Obtener el último carácter
ultimaLinea = ultimoCaracter;
}
}
ArchivoMemo.close();
Serial.print("Última configuración cargada: "); // Mostrar la última línea en el Monitor Serie
Serial.println(ultimaLinea);
return ultimaLinea;
} else {
return 'X';
Serial.println("Error al abrir el archivo.");
}
}
//*******************************************************************************************************************************
// Función para escribir en la memoria
void EscribirMemoSD(char Configuracion1) {
if (!SD.begin(4)) { // El pin 4 se utiliza para seleccionar la tarjeta SD
Serial.println("No se pudo inicializar la tarjeta microSD");
return;
}
ArchivoMemo = SD.open("Configuracion.txt", FILE_WRITE); // Crear o abrir el archivo de texto en modo escritura
Serial.print("Nueva bandera a configurar: ");
Serial.println(Configuracion1);
if (ArchivoMemo) {
char linea = Configuracion1;
ArchivoMemo.println();
ArchivoMemo.print(linea); // Escribe la línea en el archivo
ArchivoMemo.close(); // Cierra el archivo
Serial.println("Línea escrita en el archivo.");
} else {
Serial.println("Error al abrir el archivo.");
}
} // Fin de la escritura en memoria
//*******************************************************************************************************************************
// Función para transmitir
void Transmitir(char comando) {
Serial.println("ENVIANDO: " + String(comando));
radio.write(&comando, sizeof(comando)); // Transmitir el comando a través del NRF24L01
}
Receptor
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9, 10); // Pines CE, CSN
void setup() {
radio.begin();
radio.openReadingPipe(1, 0xF0F0F0E1LL); // Define la dirección de origen del transmisor
radio.setPALevel(RF24_PA_LOW); // Establece la potencia de entrada (LOW para corto alcance)
radio.startListening();
Serial.begin(9600);
}
void loop() {
if (radio.available()) {
char datoRecibido;
radio.read(&datoRecibido, sizeof(datoRecibido));
Serial.print("Dato Recibido: ");
Serial.println(datoRecibido);
}
}
me ayudan no me comunican nada