Go Down

Topic: Intensidad LED en funcion del tiempo (Read 357 times) previous topic - next topic

Ema_ruiz_esperanza

Buenas!.. Soy novato en el foro y en Arduino. Estoy intentando programar una funcion que consta de lo siguiente:

Un led aumenta su intensidad de brillo en base a un tiempo, este tiempo se va definiendo por una variable que yo voy modificando. He intentado con controles While, For, if etc.. pero no puedo dar con la solucion. Aquí adjunto a ver si alguien me puede orientar un poquito.

Code: [Select]

void setup() {
 
Serial.begin(9600);
pinMode(azules, OUTPUT);
pinMode(blancos, OUTPUT);
pinMode(relayAzul, OUTPUT);
pinMode(relayBlanco, OUTPUT);


}

void loop() {
 aumentoIntensidad();
}

void aumentoIntensidad(){
   int tiempoAjustable = 6000; // tiempo en ms = 1 min
   int brillo;
     for (brillo=0; brillo <= 255; brillo++){
       analogWrite(azules,brillo);
       delay(tiempoAjustable);
       }
               
 
}

surbyte

Eso que has programado funciona, que es lo que no te gusta?

Dice que cada 6 segundos aumente un paso.
los valores estan en milisegundos asi que 1 minuto son 60 segundos x 1000 = 60000 no 6000.
Eso por si quieres que aumente 1 paso de brillo x minuto.

Ema_ruiz_esperanza

Gracias por tu respuesta, el problema que tengo es que en 1 minuto tiene que alcanzar la intensidad máxima, es decir, que empiece de 0 y en el transcurso de 1 minuto alcance su máximo brillo que seria el 255.

surbyte

Bueno entonces volvé a la clase de matemática porque si le pones a un ciclo de 256 pasos un delay de 6000 a ver, cuanto tiempo demora en completarse?

256x6000 = 1536000 o sea 1536 segundos o sea /60 25.6 minutos

Entonces si queres algo que vaya de 0 a 255  o sea 256 pasos en 1 minuto dividi 1 minuto en 256 pasos y sabras cuantos milisegundos x paso necesitas

60 x 1000 / 256 = 234,375 mseg = 234 mseg o ponelo en microsegundos para que sea exacto

Cambialo por esto

Code: [Select]
void aumentoIntensidad(){
   int tiempoAjustable = 234; // tiempo en ms = 1 min
   int brillo;
     for (brillo=0; brillo <= 255; brillo++){
       analogWrite(azules,brillo);
       delay(tiempoAjustable);
       }
               
 
}

Go Up