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
/* * Lucas Trento * Mapeo_de_Contador * Mapear en salidas, los 4 (cuatro) bits menos significativos * (nibble bajo) de una variable contador. * Un flanco ascendente en una entrada, incrementa el contador, * y un flanco ascendente en otra entrada decrementa el contador. * Ambas entradas activadas reiniciarán el contador. */ //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_SALIDA0 A0 #define CONFIGURAR_SALIDA0 pinMode(PIN_SALIDA0, OUTPUT) #define ACTIVAR_SALIDA0 digitalWrite(PIN_SALIDA0, HIGH) #define DESACTIVAR_SALIDA0 digitalWrite(PIN_SALIDA0, LOW) #define PIN_SALIDA1 A1 #define CONFIGURAR_SALIDA1 pinMode(PIN_SALIDA1, OUTPUT) #define ACTIVAR_SALIDA1 digitalWrite(PIN_SALIDA1, HIGH) #define DESACTIVAR_SALIDA1 digitalWrite(PIN_SALIDA1, LOW) #define PIN_SALIDA2 A2 #define CONFIGURAR_SALIDA2 pinMode(PIN_SALIDA2, OUTPUT) #define ACTIVAR_SALIDA2 digitalWrite(PIN_SALIDA2, HIGH) #define DESACTIVAR_SALIDA2 digitalWrite(PIN_SALIDA2, LOW) #define PIN_SALIDA3 A3 #define CONFIGURAR_SALIDA3 pinMode(PIN_SALIDA3, OUTPUT) #define ACTIVAR_SALIDA3 digitalWrite(PIN_SALIDA3, HIGH) #define DESACTIVAR_SALIDA3 digitalWrite(PIN_SALIDA3, LOW) #define PIN_SALIDA4 A4 #define CONFIGURAR_SALIDA4 pinMode(PIN_SALIDA4, OUTPUT) #define ACTIVAR_SALIDA4 digitalWrite(PIN_SALIDA4, HIGH) #define DESACTIVAR_SALIDA4 digitalWrite(PIN_SALIDA4, LOW) #define PIN_SALIDA5 A5 #define CONFIGURAR_SALIDA5 pinMode(PIN_SALIDA5, OUTPUT) #define ACTIVAR_SALIDA5 digitalWrite(PIN_SALIDA5, HIGH) #define DESACTIVAR_SALIDA5 digitalWrite(PIN_SALIDA5, LOW) #define PUERTO_SALIDAS PORTC #define CONFIGURAR_SALIDAS DDRC=0xFF //Entrada #define PIN_ENTRADA1 7 #define CONFIGURAR_ENTRADA1 pinMode(PIN_ENTRADA1, INPUT) #define ENTRADA_ACTIVADA1 digitalRead(PIN_ENTRADA1) #define PIN_ENTRADA2 6 #define CONFIGURAR_ENTRADA2 pinMode(PIN_ENTRADA2, INPUT) #define ENTRADA_ACTIVADA2 digitalRead(PIN_ENTRADA2) #define PIN_ENTRADA3 5 #define CONFIGURAR_ENTRADA3 pinMode(PIN_ENTRADA3, INPUT) #define ENTRADA_ACTIVADA3 digitalRead(PIN_ENTRADA3) void setup() { CONFIGURAR_LED; CONFIGURAR_SALIDAS; CONFIGURAR_ENTRADA1; CONFIGURAR_ENTRADA2; CONFIGURAR_ENTRADA3; } void loop(){ Led_Test(); Mapeo_de_Contador(); delay(1); } void Mapeo_de_Contador(void){ static bool ent1_activada_ant = 0, ent2_activada_ant = 0, activar_salida = 0, incrementa_decrementa = 1; static char i = 0; static unsigned long millis_ant=0; /* * Mapear en salidas, los 4 (cuatro) bits menos significativos * (nibble bajo) de una variable contador. * Un flanco ascendente en una entrada, incrementa el contador, * y un flanco ascendente en otra entrada decrementa el contador. * Ambas entradas activadas reiniciarán el contador. */ if(incrementa_decrementa) { if(millis()-millis_ant > 500) { millis_ant=millis(); i++; if(i==16) PUERTO_SALIDAS= 0; PUERTO_SALIDAS++; i=0b0000 0010; //PUERTO_SALIDAS=0b1010 0001 PUERTO_SALIDAS= PUERTO_SALIDAS & ~((1<<4)-1); //11110000 PUERTO_SALIDAS= PUERTO_SALIDAS | ( i & ((1<<4)-1)); PUERTO_SALIDAS= PUERTO_SALIDAS & (1<<4)-1 //PUERTO_SALIDAS=i; } } else { if(millis()-millis_ant > 500) { millis_ant=millis(); i--; if(i==0) PUERTO_SALIDAS= 15; PUERTO_SALIDAS--; } } // Si tengo un cambio en cualquiera de las 2 entradas if((ENTRADA_ACTIVADA1 == ent1_activada_ant) && (ENTRADA_ACTIVADA2 == ent2_activada_ant))return; ent1_activada_ant = ENTRADA_ACTIVADA1; ent2_activada_ant = ENTRADA_ACTIVADA2; if(ENTRADA_ACTIVADA1) incrementa_decrementa =1; if(ENTRADA_ACTIVADA2) incrementa_decrementa = 0; if(ENTRADA_ACTIVADA1 && ENTRADA_ACTIVADA2) PUERTO_SALIDAS= 0; } void Led_Test(void){ static bool estado=0; static unsigned long millis_ant=0; if(millis()-millis_ant < 1000) return; millis_ant=millis(); estado = !estado; if(estado) 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)