Hola y muy buenas a todos. Soy novato en este tema sobre Arduino y programación, teniendo como sabidos los conceptos y funciones más básicas.
Estoy acá para comentar un problema sobre un bloqueo de la señal de control IR de Arduino, puesto que se basa en un proyecto de controlar un LED RGB con el control y el sensor infrarrojos, como encenderlo, apagarlo y volver a encenderlo en último color puesto o regular el tono o brillo del color. El problema consiste al regular el tono, ya que al aumentarlo o disminuirlo, hay un punto donde la placa de Arduino (R3 en mi caso) no enciende el LED que avisa si llegó la señal del control al sensor, y desde allí ya no toma la señal y el LED queda incontrolable.
Llegué a la conclusión donde el control, el LED, el sensor y el Arduino funcionan perfectamente, por lo que creo que el problema persiste en el código, que a continuación lo dejo:
-El sensor IR es un VS1838B
-LED RGB de Cátodo común
#include <IRremote.hpp>
int IRpin = 10;
int dt = 500;
int comand;
int rPin = 3;
int gPin = 5;
int bPin = 6;
int rVal = 255;
int gVal = 255;
int bVal = 255;
int state = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin (9600);
IrReceiver.begin (IRpin);
pinMode (rPin, OUTPUT);
pinMode (bPin, OUTPUT);
pinMode (gPin, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
while (IrReceiver.decode () == 0) {
}
comand = IrReceiver.decodedIRData.command;
Serial.println (comand);
delay (dt);
IrReceiver.resume();
if (comand == 67) {
state = !state;
}
if (state) {
digitalWrite (rPin, state);
digitalWrite (gPin, state);
analogWrite (bPin, 100);
} else {
digitalWrite (rPin, LOW);
digitalWrite (gPin, LOW);
analogWrite (bPin, 0);
}
//12, 24, 94, 8, 28, 90
//1, 2, 3, 4, 5, 6
if (comand == 21) {
rVal = rVal + 15;
gVal = gVal + 15;
bVal = bVal + 15;
}
if (comand == 7) {
rVal = rVal - 15;
gVal = gVal - 15;
bVal = bVal - 15;
}
if (comand == 22) {
rVal = 255;
gVal = 255;
bVal = 100;
}
if (comand == 12) {
rVal = 255;
gVal = 0;
bVal = 0;
}
if (comand == 24) {
rVal = 0;
gVal = 255;
bVal = 0;
}
if (comand == 94) {
rVal = 0;
gVal = 0;
bVal = 255;
}
if (comand == 8) {
rVal = 255;
gVal = 120;
bVal = 0;
}
if (comand == 28) {
rVal = 255;
gVal = 0;
bVal = 255;
}
if (comand == 90) {
rVal = 0;
gVal = 255;
bVal = 255;
}
analogWrite (rPin, rVal * state);
analogWrite (gPin, gVal * state);
analogWrite (bPin, bVal * state);
}
