Me estoy metiendo lentamente en los circuitos y armé un atenuador LED PWM. El led es impulsado por este circuito:
EstoymanejandoelPWMatravésdeundispositivoBLEseparadoquemapeaunaentradadeusuariode[0,100]aunvalorde8bitsparalosPWMdearduinos[0,255].Aquíestáelcódigo:
intled=9;//thePWMpintheLEDisattachedtointintR;intt;voidsetup(){Serial.begin(9600);Serial.println("serial connected...");
// declare pin 9 to be an output:
pinMode(led, OUTPUT);
analogWrite(led, 0);
}
void loop() {
if (Serial.available() > 0) {
intR = Serial.parseInt();
t = map(intR, 0, 100, 0, 255); //remaps intR from [0, 100] -> [0, 255] to scale to PWM
Serial.print(intR);
Serial.print(" -> ");
Serial.print(t);
Serial.println("");
analogWrite(led, t);
}
}
Cada vez que establezco el valor de atenuación en 100 (ciclo de trabajo del 100%), el led brilla con mucha intensidad, pero cuando configuro el valor en 0, el LED brilla con un brillo de probablemente el 60%.
¿Qué tendría que hacer para hacer una transición suave del LED desde un estado completamente apagado a un estado completamente encendido?
EDITAR:
Después de una discusión en los comentarios, he actualizado mi código y circuito y algo parece estar mal. El siguiente código y par de esquemas me dan el mejor rango de intensidad (visualmente, quizás un 10-100% de producción total) y funciona en múltiples mosfets desde mi paquete.
Nuevo código & Esquema del circuito:
int led = 9; // the PWM pin the LED is attached to
int intR;
void setup() {
Serial.begin(9600);
Serial.println("serial connected...");
// declare pin 9 to be an output:
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
}
void loop() {
if (Serial.available() > 0) {
intR = Serial.parseInt(); //reads the next valid integer
Serial.print(intR);
Serial.println("");
if (intR <= 255 && intR >= 0) {
if (intR == 0) {
digitalWrite(led, LOW);
} else {
analogWrite(led, intR);
}
}
}
}
MisMOSFETestánetiquetadoscomoP30N06LEquecorrespondenaeste
Con la configuración anterior, cuando el pin 9 se establece en LOW, el LED tiene un brillo de ~ 10%, y cuando quito físicamente el cable del pin 9 de arduino, el LED se apaga completamente. Si luego conecto el cable a varios pines sin alimentación, el LED brilla con un brillo bajo, lo que indica que hay suficiente voltaje para alimentar al fet. ¿Cómo puedo hacer que el led se apague por completo?