CONTADOR DOS DÍGITOS CON INFRARROJO
#include <IRremote.h>
int receiver = A0; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;
int contador = 0; //Variable asociada al contador
int unidad=0; // cuenta las unidades (derecha)
int decena=0; // cuenta las decenas (izquierda)
void encender(int a, int b, int c, int d, int e, int f, int g)
{
//Funcion que permite mostrar los numeros del 0 al 9
//Asigna un segmento del display a cada pin
digitalWrite (7,a); //Se reciben 7 variables y se asignan
digitalWrite (8,b); //a cada una de las salidas
digitalWrite (9,c);
digitalWrite (10,d);
digitalWrite (11,e);
digitalWrite (12,f);
digitalWrite (13,g);
}
void encender2(int a2, int b2, int c2, int d2, int e2, int f2, int g2)
{
//Funcion que permite mostrar los numeros del 0 al 9
//Asigna un segmento del display a cada pin
digitalWrite (0,a2); //Se reciben 7 variables y se asignan
digitalWrite (1,b2); //a cada una de las salidas
digitalWrite (2,c2);
digitalWrite (3,d2);
digitalWrite (4,e2);
digitalWrite (5,f2);
digitalWrite (6,g2);
}
void setup() {
Serial.begin(9600); // for serial monitor output
irrecv.enableIRIn(); // Start the receiver
//Inicializa los pines como entradas/salidas digitales
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) // have we received an IR signal?
{
Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
irrecv.resume(); // receive the next value
if (results.value==0xFD807F)
{
contador++;
unidad=unidad+1; // incrementa la unidad, primer 7seg
if (unidad >= 10){ // cuando la unidad llegue a 10 incrementa la decena
decena=decena+1; // incrementa la decena, segundo 7seg
unidad=0; // regresa la unidad a cero
if (decena>=10){ // cuando la decena llegue a 10 se inicializa a cero
decena=0;
}
}
}
if (results.value==0xFD906F)
{
contador--;
unidad=unidad-1;
if (unidad < 0){
decena=decena-1;
unidad=9;
if (decena<0){
decena=0;
}
}
}
} //Fin IF global
switch (contador)
{
//Dependiendo del contador, se muestra el numero indicado
//Envia estados (1 y 0) al display dependiendo del numero a mostrar
case 0:
encender (1, 1, 1, 1, 1, 1, 0); //Muestra el numero 0
break;
case 1:
encender (0, 1, 1, 0, 0, 0, 0); //Muestra el numero 1
break;
case 2:
encender (1, 1, 0, 1, 1, 0, 1); //Muestra el numero 2
break;
case 3:
encender (1, 1, 1, 1, 0, 0, 1); //Muestra el numero 3
break;
case 4:
encender (0, 1, 1, 0, 0, 1, 1); //Muestra el numero 4
break;
case 5:
encender (1, 0, 1, 1, 0, 1, 1); //Muestra el numero 5
break;
case 6:
encender (1, 0, 1, 1, 1, 1, 1); //Muestra el numero 6
break;
case 7:
encender (1, 1, 1, 0, 0, 0, 0); //Muestra el numero 7
break;
case 8:
encender (1, 1, 1, 1, 1, 1, 1); //Muestra el numero 8
break;
case 9:
encender (1, 1, 1, 0, 0, 1, 1); //Muestra el numero 9
break;
}
}
Comentarios
Publicar un comentario