Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
/* Programador: Benja Berterreix * Ejercicio: Detonador. * Objetivo: Activar la salida luego de cierto tiempo de detectado el flanco descendente en la entrada. Desactivar la salida al detectar el flanco ascendente. https://pastebin.com/0yFDVZgs */ //Led Test #define PIN_LED 13 #define CONFIGURAR_LED pinMode(PIN_LED, OUTPUT) #define ENCENDER_LED digitalWrite(PIN_LED, HIGH) #define APAGAR_LED digitalWrite(PIN_LED, LOW) //Salida #define PIN_SALIDA 12 #define CONFIGURAR_SALIDA pinMode(PIN_SALIDA, OUTPUT) #define ACTIVAR_SALIDA digitalWrite(PIN_SALIDA, HIGH) #define DESACTIVAR_SALIDA digitalWrite(PIN_SALIDA, LOW) //Entrada #define PIN_ENTRADA 7 #define CONFIGURAR_ENTRADA pinMode(PIN_ENTRADA, INPUT) #define ENTRADA_ACTIVADA digitalRead(PIN_ENTRADA) void setup() { CONFIGURAR_LED; CONFIGURAR_SALIDA; CONFIGURAR_ENTRADA; Serial.begin(9600); } void loop() { LedTest(); Detonador(); delay(1); } void Detonador(void){ static unsigned long t_ini, millis_cont=0; static bool salida = 0, entrada_ant = 0, armada = 0; const static int countdown = 3; static unsigned long cont = 0; // cuando la cuenta termina, activa la salida if(armada){ if( millis()- millis_cont > 1000) { millis_cont=millis(); Serial.println(cont--); //3...2...1. } //Queremos que muestre la cuenta regresiva countdown - if(millis() - t_ini < countdown*1000) return; ACTIVAR_SALIDA; armada = 0; } // si no apreto nada, me voy if(ENTRADA_ACTIVADA == entrada_ant) return; entrada_ant = ENTRADA_ACTIVADA; // cuando se suelta el boton, comienza la cuenta regresiva if(!ENTRADA_ACTIVADA){ t_ini = millis(); armada = 1; cont=countdown; return; } // si se apreta el boton, desactiva la salida if(ENTRADA_ACTIVADA){ armada = 0; DESACTIVAR_SALIDA; Serial.println(armada? "- Armada -" : "- Desarmada -"); } } void LedTest(void){ static bool encender_led=0; static unsigned long millis_ant=0; if(millis()-millis_ant < 500) return; millis_ant=millis(); //Invertir el estado del led encender_led = !encender_led; if(encender_led) ENCENDER_LED; else APAGAR_LED; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)