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 * Llave de conmutacion. * Cada flanco ascendente en las entradas, * invierte el estado de una única salida. */ //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) #define INVERTIR_SALIDA PUERTO_SALIDAS= PUERTO_SALIDAS ^ 1 void setup() { CONFIGURAR_LED; CONFIGURAR_SALIDAS; CONFIGURAR_ENTRADA1; CONFIGURAR_ENTRADA2; CONFIGURAR_ENTRADA3; } void loop(){ Led_Test(); LlaveConmutacion(); delay(1); } 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; } void LlaveConmutacion(void){ static bool ent1_activada_ant = 0, ent2_activada_ant = 0, activar_salida = 0; // 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 && !ENTRADA_ACTIVADA2) return; //acción INVERTIR_SALIDA; /* activar_salida = !activar_salida; if(activar_salida) ACTIVAR_SALIDA5; else DESACTIVAR_SALIDA5; */ //queremos invertir el bit 0, que es el asociado a la salida que elegimos /* PUERTO_SALIDAS= PUERTO_SALIDAS ^ (1<<0); PUERTO_SALIDAS= 10010110 AND (|) MASCARA = 11101111 --> ~(1<<4) ------------ 10000110 */ //Resumen: //~ --> Se utiliza para invertir cada uno de los bits // XOR ^ --> Se utiliza para invertir determinados bits // OR | --> Se utiliza para poner en uno determinados bits // AND & --> Se utiliza para poner en cero determinados bits //PUERTO_SALIDAS = activar_salida; //00000001 ó 00000000 // }
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)