Lo tengo montado de la siguiente forma.
Para la alimentación uso un fuente de alimentación de ordenador, con eso alimento todo, para el diméo uso mosfets, el irf 540 y irf 3710.
Los Led son de 10W y 1 A
Del 540 tengo dos mosfets, uno para un led azul y otro para el rojo.
Del 3710 tengo dos mosfets, uno con tres Led y el otro con cuatro.
En total tengo 9 Led.
El problema:
Si pongo esto " for(int fadeValue = 0 ; fadeValue <= 5; fadeValue +=1)" es cuando parpadea, pero si pongo esto otro "for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=1)" no, ya no se si es por los mosfet o por la forma de hacer el dimeo, no pongo el código entero por no llenar esto de texto pero lo puedo subir como archivo si lo queréis ver entero, fadeValue <= 5; o el valor que sea parpadea, solo va bien si esta a 255
El código que uso para hacer el dimeo es:
Ya no se por donde meterle mano, alguno le sonara el código, esta hecho a trozos de varios de vosotros.
A ver si podéis echarme una mano y consigo quitar el parpadeo de los Led.
Si faltan datos pedírmelos.
Gracias
Saludos
Para la alimentación uso un fuente de alimentación de ordenador, con eso alimento todo, para el diméo uso mosfets, el irf 540 y irf 3710.
Los Led son de 10W y 1 A
Del 540 tengo dos mosfets, uno para un led azul y otro para el rojo.
Del 3710 tengo dos mosfets, uno con tres Led y el otro con cuatro.
En total tengo 9 Led.
El problema:
Si pongo esto " for(int fadeValue = 0 ; fadeValue <= 5; fadeValue +=1)" es cuando parpadea, pero si pongo esto otro "for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=1)" no, ya no se si es por los mosfet o por la forma de hacer el dimeo, no pongo el código entero por no llenar esto de texto pero lo puedo subir como archivo si lo queréis ver entero, fadeValue <= 5; o el valor que sea parpadea, solo va bien si esta a 255
El código que uso para hacer el dimeo es:
Código:
void luces()
{
/*
LA JORNADA ESTA DIVIDIDA EN TRAMOS FASES, SI SE FUESE LA LUZ NO HACE TODO EL PROCESO, SOLO EL TRAMO
HORARIO EN EL QUE SE ENCUENTRA
*/
if ((hour == 7) && (minute < 30)&& (faseluz <1)){// TRAMO DE LAS 07 A 07:30 EN ESTE TRAMOS SIEMPRE AUMENTA LUZ
ledvon();
for(int fadeValue = 0 ; fadeValue <= 5; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 1;
setCur(13, 3); Serial.print("fase 1");
}
else if((hour == 7) && (minute >= 30) && (hour < 8)&& (faseluz <2)){
ledvon();
for(int fadeValue = 5 ; fadeValue <= 51; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 2;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 2");
}
else if((hour == 8) && (minute < 30)&& (faseluz <3)){
ledvon();
for(int fadeValue = 51 ; fadeValue <= 102; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 3;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 3");
}
else if((hour == 8) && (minute >= 30) && (hour < 9)&& (faseluz <4)){
ledvon();
for(int fadeValue = 102 ; fadeValue <= 153; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 4;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 4");
}
else if((hour == 9) && (minute < 30)&& (faseluz <5)){
ledvon();
for(int fadeValue = 153 ; fadeValue <= 204; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 5;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 5");
}
else if((hour == 9) && (minute >= 30) && (hour < 20)&& (faseluz <6)){
ledvon();
for(int fadeValue = 204 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 6;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 6");
}
else if((hour == 10) && (minute < 30)&& (faseluz <7)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 7;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 7");
}
else if((hour == 10) && (minute >= 30) && (hour < 11)&& (faseluz <8)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 8;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 8");
}
else if((hour == 11) && (minute < 30)&& (faseluz <9)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 9;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 9");
}
else if((hour == 11) && (minute >= 30) && (hour < 12)&& (faseluz <10)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 10;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 10");
}
else if((hour == 12) && (minute < 30)&& (faseluz <11)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 11;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 11");
}
else if((hour == 12) && (minute >= 30) && (hour < 13)&& (faseluz <12)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 12;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 12");
}
else if((hour == 13) && (minute < 30)&& (faseluz <13)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 13;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 13");
}
else if((hour == 13) && (minute >= 30) && (hour < 14)&& (faseluz <14)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 14;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 14");
}
else if((hour == 14) && (minute < 30)&& (faseluz <15)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 15;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 15");
}
else if((hour == 14) && (minute >= 30) && (hour < 15)&& (faseluz <16)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 16;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 16");
}
else if((hour == 15) && (minute < 30)&& (faseluz <17)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 17;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 17");
}
else if((hour == 15) && (minute >= 30) && (hour < 16)&& (faseluz <18)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 18;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 18");
}
else if((hour == 16) && (minute < 30)&& (faseluz <19)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 19;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 19");
}
else if((hour == 16) && (minute >= 30) && (hour < 17)&& (faseluz <20)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 20;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 20");
}
else if((hour == 17) && (minute < 30)&& (faseluz <21)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 21;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 21");
}
else if((hour == 17) && (minute >= 30) && (hour < 18)&& (faseluz <22)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 22;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 22");
}
else if((hour == 18) && (minute < 30)&& (faseluz <23)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 23;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 23");
}
else if((hour == 18) && (minute >= 30) && (hour < 19)&& (faseluz <24)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 24;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 24");
}
else if((hour == 19) && (minute < 30)&& (faseluz <25)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 25;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 25");
}
else if((hour == 19) && (minute >= 30) && (hour < 20)&& (faseluz <26)){
ledvon();
for(int fadeValue = 255 ; fadeValue <= 255; fadeValue +=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 26;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 26");
}
else if((hour == 20) && (minute < 30)&& (faseluz <27)){
ledvon();
for(int fadeValue = 255 ; fadeValue >= 204; fadeValue -=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 27;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 27");
}
else if((hour == 20) && (minute >= 30) && (hour < 21)&& (faseluz <28)){
ledvon();
for(int fadeValue = 204 ; fadeValue >= 153; fadeValue -=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 28;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 28");
}
else if((hour == 21) && (minute < 30)&& (faseluz <29)){
ledvon();
for(int fadeValue = 153 ; fadeValue >= 102; fadeValue -=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 29;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 29");
}
else if((hour == 21) && (minute >= 30) && (hour < 22)&& (faseluz <30)){
ledvon();
for(int fadeValue = 102 ; fadeValue >= 51; fadeValue -=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 30;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 30");
}
else if((hour == 22) && (minute < 30) && (faseluz <31)){
ledvon();
for(int fadeValue = 102 ; fadeValue >= 51; fadeValue =0)
{
analogWrite(lazul, fadeValue);
}
for(int fadeValue = 51 ; fadeValue >= 5; fadeValue -=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
delay(500);
}
ledvoff();
faseluz = 31;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 31");
setCur(10,2);
Serial.print(" ");
}
else if((hour == 22) && (minute >= 30) && (hour < 23)&& (faseluz <32)){
ledvon();
for(int fadeValue = 102 ; fadeValue >= 51; fadeValue =0)
{
analogWrite(lazul, fadeValue);
}
for(int fadeValue = 5 ; fadeValue >= 0; fadeValue -=1)
{
analogWrite(lblanco, fadeValue);
analogWrite(lblanco2, fadeValue);
analogWrite(lrojo, fadeValue);
delay(500);
}
ledvoff();
faseluz = 32;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 32");
}
else if((hour == 23) && (minute < 30)&& (faseluz <33)){
ledvon();
for(int fadeValue = 51 ; fadeValue >= 12; fadeValue -=1)
{
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 33;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 33");
}
else if((hour == 23) && (minute >= 30) && (hour < 24)&& (faseluz <34)){
ledvon();
for(int fadeValue = 12 ; fadeValue >= 0; fadeValue -=1)
{
analogWrite(lazul, fadeValue);
delay(500);
}
ledvoff();
faseluz = 34;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 34");
}
else if((hour == 00) && (hour < 7) && (faseluz < 35)){ // CUANDO EL RELOJ ALCANZA EL 24, EL CONTADOR SE PONE A CERO
//PARA QUE SIGA CONTANDO LA HORA TIENE QUE SER "00"
faseluz = 0;
setCur(13, 3); Serial.print(" ");
setCur(13, 3); Serial.print("fase 0");
}
}
Ya no se por donde meterle mano, alguno le sonara el código, esta hecho a trozos de varios de vosotros.
A ver si podéis echarme una mano y consigo quitar el parpadeo de los Led.
Si faltan datos pedírmelos.
Gracias
Saludos