Hola gente, a ver si me podéis decir que puede estar pasando
Tengo un programa en una placa Arduino DUE que envía una señal infrarroja para encender un aparato electrónico.
El programa funciona a la perfección conectado a través del usb-c al ordenador.
El problema:
Que cuando conecto el DUE con alimentación externa.
Por usb-c con transformador a 5v y 2A
Por conector externo a placa de 12v y 2A
La placa recibe alimentación, se enciende el LED de color verde la placa y se queda encendido de forma contínua el LED naranja.
Eso no ocurre con el conector usb-c al ordenador, pues el LED naranja solo se enciende cuando envía la señal al emisor IR.
Es quitar el usb-c del ordenador, poner o bien el usb-c del transformador a 5v, o el conector de la fuente externa a 12v y se queda el LED naranja contínuamente encendido y no se ejecuta el programa.
Alguien me puede decir que está pasando ?
Para realizar comprobaciones he instalado un LED externo en el pin 13 de la placa y hace exactamente los mismos destellos que el LED naranja de la placa.
#define IRledPin 2
#define NumIRsignals 76
#define IRpinPOWER 13
int IRsignal[] = {
// ON, OFF (en 10's de microsegundos)
920, 462,
58, 56,
58, 174,
54, 56,
58, 56,
58, 172,
56, 172,
58, 56,
56, 56,
58, 172,
56, 56,
58, 172,
58, 172,
56, 56,
58, 56,
58, 170,
58, 172,
58, 56,
56, 172,
58, 56,
56, 58,
56, 56,
58, 56,
58, 56,
58, 56,
56, 172,
58, 56,
58, 170,
58, 172,
56, 172,
58, 172,
56, 172,
58, 172,
56, 4090,
920, 258,
58, 3222,
920, 258,
56, 3224,
920, 258,
56, 3222,
920, 258,
58, 0
};
bool signalSent = false; // Variable para controlar si se ha enviado la señal
void pulseIR(long microsecs) {
for (int i = 0; i < microsecs / 26; i++) {
digitalWrite(IRledPin, HIGH);
delayMicroseconds(10);
digitalWrite(IRledPin, LOW);
delayMicroseconds(10);
}
}
void setup() {
pinMode(IRpinPOWER, OUTPUT); // Configurar el pin 13 como salida para el LED
digitalWrite(IRpinPOWER, LOW); // Apagar el LED al inicio
pinMode(IRledPin, OUTPUT);
digitalWrite(IRledPin, LOW);
Serial.begin(9600); // Inicializar la comunicación serial
Serial.println("Inicio del programa !");
}
void loop() {
digitalWrite(IRpinPOWER, HIGH); // Encender el LED
delay(100); // Esperar un instante (para una pulsación)
digitalWrite(IRpinPOWER, LOW); // Apagar el LED
Serial.println("Sistema Arduino iniciado !");
digitalWrite(IRpinPOWER, HIGH); // Encender el LED
delay(3000); // Esperar Tres segundos con LED encendido
digitalWrite(IRpinPOWER, LOW); // Apagar el LED
//Esperamos cinco segundos a que se inicie el sistema
delay(2000);
if (!signalSent) {
for (int i = 0; i < NumIRsignals; i += 2) {
pulseIR(IRsignal[i] * 10);
delayMicroseconds(IRsignal[i + 1] * 10);
}
Serial.println("Enviada señal de Encendido !");
for (int i = 0; i < 5; i++) {
digitalWrite(IRpinPOWER, HIGH); // Encender el LED
delay(100); // Esperar un instante (para una pulsación)
digitalWrite(IRpinPOWER, LOW); // Apagar el LED
delay(100); // Esperar un instante (para una pulsación)
}
delay(2000); // Esperar dos segundos
// Enviar la señal por segunda vez
for (int i = 0; i < NumIRsignals; i += 2) {
pulseIR(IRsignal[i] * 10);
delayMicroseconds(IRsignal[i + 1] * 10);
}
Serial.println("Enviada segunda señal de Encendido !");
for (int i = 0; i < 5; i++) {
digitalWrite(IRpinPOWER, HIGH); // Encender el LED
delay(100); // Esperar un instante (para una pulsación)
digitalWrite(IRpinPOWER, LOW); // Apagar el LED
delay(100); // Esperar un instante (para una pulsación)
}
signalSent = true; // Marcar que la señal ha sido enviada
}
while (1); // Esto detendrá el programa después de enviar la señal dos veces
}
Un saludo y muchas gracias