Aléjate del retraso
Componentes y suministros
| × | 1 | ||||
| × | 2 |
Acerca de este proyecto
Este video se inspiró en las preguntas que siembro en línea. sobre cómo hacer parpadear 2 LED a diferentes velocidades.
Si quisiéramos hacer parpadear un led cada 1000 milis y el segundo cada 500 milis, aún podríamos usar un retardo, como este, como puede ver, dividí el retardo de 1000 milis del primer LED en 500 milis de parpadeo del segundo reparto.
byte LED2 =12; configuración vacía () {pinMode (LED_BUILTIN, SALIDA); pinMode (LED2, SALIDA);} bucle vacío () {digitalWrite (LED_BUILTIN, HIGH); escritura digital (LED2, ALTA); retraso (500); escritura digital (LED2, BAJA); retraso (500); digitalWrite (LED_BUILTIN, BAJO); escritura digital (LED2, ALTA); retraso (500); escritura digital (LED2, BAJA); retraso (500); }
Pero, ¿qué pasaría si quisiéramos parpadear el más rápido en 300 milis en lugar de los 500 milis? Aquí es donde el uso del retardo hace que sea muy complicado o imposible.
¿Entonces lo que hay que hacer? ¡Deja de usar la demora!
Incluso tenemos un ejemplo en el IDE de Arduino y se llama blinkwithoutdelay.
Duplico la lógica del primer LED en un segundo y configuro el retardo deseado.
Así que inténtelo también y aléjese de la demora. Diré una cosa final, el código que compartí está lejos de ser perfecto, y pensé en cambiarlo pero, dado que este video está dirigido a personas que son nuevas en arduino, Yo voté en contra.
Código
- Código de ejemplo
Código de ejemplo Arduino
const int ledPin =LED_BUILTIN; int ledState =LOW; unsigned long previousMillis =0; intervalo largo constante =1000; const int ledPin2 =12; int ledState2 =LOW; unsigned long previousMillis2 =0; constante intervalo largo2 =300; configuración vacía () {pinMode (ledPin, SALIDA); pinMode (ledPin2, SALIDA);} bucle vacío () {currentMillis largo sin firmar =millis (); if (currentMillis - previousMillis> =intervalo) {previousMillis =currentMillis; if (ledState ==LOW) {ledState =HIGH; } else {ledState =LOW; } digitalWrite (ledPin, ledState); } // finaliza if if (currentMillis - previousMillis2> =interval2) {previousMillis2 =cur rentMillis; if (ledState2 ==BAJO) {ledState2 =HIGH; } else {ledState2 =LOW; } escritura digital (ledPin2, ledState2); } // finalizar si}
Esquemas
Proceso de manufactura
- Cómo proteger el aluminio de la corrosión
- Aprenda la computación en la nube desde cero
- 3 razones para realizar la transición de C a C ++
- Obtener humedad / temperatura de la Web
- Proyecto IoT 101:Temperatura de transmisión desde su Raspberry Pi
- Transmisión de datos del sensor desde una placa ppDAQC Pi utilizando InitialState
- ROBOT WIFI DE FRAMBUESA PI CONTROLADO DESDE EL TELÉFONO INTELIGENTE DE ANDROID
- Control de retardo de Verilog
- ¿De dónde se originó el concepto de aserrado?
- ¿Qué esperar de El elenco gris?
- ¿Qué esperar de una máquina expendedora de refrescos?