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.
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);
}
}
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.
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.
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
void aumentoIntensidad(){
int tiempoAjustable = 234; // tiempo en ms = 1 min
int brillo;
for (brillo=0; brillo <= 255; brillo++){
analogWrite(azules,brillo);
delay(tiempoAjustable);
}
}