Hola cómo están? Les quería comentar que tuve una clase donde vimos este código y quería saber si me podrían explicar la función que cumplen los delays, lo hice mas corto porque era un poco mas largo. Sepan disculpar por los errores al abrir un tema soy bastante nuevo en esto saludos
Date cuenta de que esto no hace absolutamente nada útil.
Dice “si la variable contador es igual a cero, entonces hazla igual a cero”.
Anda por ahí otro caso con 6.
En relación a tu pregunta, delay() es una función cuyo trabajo es “espera un tiempo y no hagas absolutamente nada durante ese tiempo; no permitas que el procesador haga nada más”
Hola gracias por la respuesta. El código fue hecho en una clase de un curso que estoy haciendo y la verdad ha cosas que no entiendo.
En este caso lo que vi es que si no pongo el delay al apretar un pulsador se prenden todos los leds en vez de hacerlo de a uno
Disculpa mí ignorancia que sería anti rebotes?. El contador está hecho con dos pulsadores. Cuanfo aprietas uno de los mismos va prendiendo de a uno los leds que para este caso serían 6 y cuando aprietas el otro pulsador apaga de a un led.
Lo que vi es que si no pongo esos delays se prenden todos al mismo tiempo y se apagan todos al mismo tiempo
Lo que no entiendo es porqué se apagan o prenden todos sin ese delay
Estos delay generan un tiempo de espera que en tu programa tiene una doble función.
Es muy común (pasa casi siempre) que los botones, switches y demás reboten varias veces durante breves momentos cuando son accionados. Durante esos momentos el botón dará valores LOW y HIGH en sucesión rápida, que puede ser fácilmente captada por el Arduino. Usualmente se programa un tiempo de espera de unos 50mS para que termine el rebote y tener una lectura estable del botón. Tu delay se encarga de eso.
El otro efecto que tienen tus tiempos de espera es visual, es decir, hacer que los leds duren encendidos o apagados por un tiempo perceptible para el ojo humano. Considera que el tiempo de ejecución del loop sin los delays debe andar alrededor de 1mS. Es tan rápido que parece que todos los leds prenden al mismo tiempo, pero no es así.
Lo anterior parece como una justificación para usar delay, pero es necesario considerar que en un programa más elaborado se convierte en un estorbo porque bloquea la ejecución de lo demás.
Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en (<CODE/>)
Creo que en base a lo que me decís el delay frenaría esos rebotes y por ejemplo se prendería un led y esperaría 500ms y después seguiría con la siguiente acción
Si te referis al código que subí lo estuve viendo y ya pude entenderlo. Lo voy a tratar de modificar para que no haya algunas redundancias que me marcaron.
Una vez que lo modifiques súbelo de nuevo. No alteres la publicación anterior. Eso hace que los comentarios que se hacen no tengan sentido cuando alguien visita este hilo en el futuro