Buenas tardes, estoy intentando transformar un programa para con el arduino nano conectados a los modulos HC-05(Maestro) y HC-06 (Esclavo) a Nano_BLE, que es un modulo que ya tiene integrado el arduino nano y el bluetooht.
-
- Este codigo es el del receptor.
#include <SoftwareSerial.h>
#include <Adafruit_NeoPixel.h>
SoftwareSerial mySerial(10, 11); // Pines digitales para la comunicación serie
#define LED_PIN_LEFT1 2
#define LED_PIN_LEFT2 5
#define LED_PIN_RIGHT1 3
#define LED_PIN_RIGHT2 4
#define NUM_PIXELS 61
#define DELAY_VAL 10
Adafruit_NeoPixel pixels_left1(21, LED_PIN_LEFT1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels_left2(61, LED_PIN_LEFT2, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels_right1(21, LED_PIN_RIGHT1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels_right2(61, LED_PIN_RIGHT2, NEO_GRB + NEO_KHZ800);
bool patternActive = false;
unsigned long patternStartTime = 0;
const unsigned long PATTERN_DURATION = 3000; // Duración del patrón en milisegundos
void setup() {
pixels_left1.begin();
pixels_left2.begin();
pixels_right1.begin();
pixels_right2.begin();
Serial.begin(9600);
mySerial.begin(9600);
int clearPixels;
}
void loop() {
if (mySerial.available()) {
char c = mySerial.read();
Serial.print("Receptor: Recibido '");
Serial.print(c);
Serial.println("' desde el emisor");
if (c == '1' || c == '2') {
if (patternActive) {
// Se interrumpe el patrón actual
patternActive = false;
clearPixels();
}
patternActive = true;
patternStartTime = millis();
// Ejecutar el patrón durante el tiempo especificado
while (millis() - patternStartTime < PATTERN_DURATION && patternActive) {
if (c == '1') {
for (int i = 0; i < NUM_PIXELS; i += 1) {
pixels_left1.setPixelColor(i + 1, pixels_left1.Color(0, 150, 0));
pixels_left2.setPixelColor(i + 1, pixels_left2.Color(0, 150, 0));
pixels_left1.show();
pixels_left2.show();
delay(DELAY_VAL);
if (!patternActive) {
clearPixels();
return;
}
pixels_left1.setPixelColor(i + 1, pixels_left1.Color(0, 0, 0)); // Apaga los LEDs
pixels_left2.setPixelColor(i + 1, pixels_left2.Color(0, 0, 0)); // Apaga los LEDs
pixels_left1.show();
pixels_left2.show();
}
} else if (c == '2') {
pixels_right1.setPixelColor(i + 1, pixels_right1.Color(150, 0, 0));
pixels_right2.setPixelColor(i + 1, pixels_right2.Color(150, 0, 0));
pixels_right1.show();
pixels_right2.show();
delay(DELAY_VAL);
if (!patternActive) {
clearPixels();
return;
}
pixels_right1.setPixelColor(i + 1, pixels_right1.Color(0, 0, 0)); // Apaga los LEDs
pixels_right2.setPixelColor(i + 1, pixels_right2.Color(0, 0, 0)); // Apaga los LEDs
pixels_right1.show();
pixels_right2.show();
}
}
}
patternActive = false;
clearPixels();
}
}
}
void clearPixels() {
for (int i = 0; i < NUM_PIXELS; i += 1) {
pixels_left1.setPixelColor(i + 1, pixels_left1.Color(0, 0, 0));
pixels_left2.setPixelColor(i + 1, pixels_left2.Color(0, 0, 0));
pixels_right1.setPixelColor(i + 1, pixels_right1.Color(0, 0, 0));
pixels_right2.setPixelColor(i + 1, pixels_right2.Color(0, 0, 0));
}
pixels_left1.show();
pixels_left2.show();
pixels_right1.show();
pixels_right2.show();
}
-
- Ete codigo es el del Emisor.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // 10 RX 11 TXpines digitlaes para la comunicación serie
int Y; // Variable para almacenar el valor leído del eje Y
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
}
void loop() {
delay(1000);
Y = analogRead(A1); // lectura de valor del eje Y
Serial.print("Emisor: ");
Serial.println(Y); // imprima los valores del eje Y para el monitor serie
if (Y >= 0 && Y < 300) { // Si Y está en la zona de abajo de 480
Serial.println("Emisor: enviando '1'");
mySerial.write('1');
} else if (Y > 550 && Y <= 1023) {
Serial.println("Emisor: Enviando '2'");
mySerial.write('2');
} else {
Serial.println("Emisor: Enviando '0'");
mySerial.write('0');
}
}
Ahora al usar los modulos HC uso la libreri <SoftwareSerial.h>, pero me gustaria usar el bluetooht integrado en el modulo Nano_BLE.
Si alguien me pudiera ayudar y decirme donde mirarlo o que deveria hacer, yo no me aclaro.
PDF del modulo empleado
Muchas gracias.
Un Cordial Saludo.