ARDUINO + SIETE SEGMENTOS + PULSADOR + INTERRUPCIÓN

ARDUINO + SIETE SEGMENTOS +  PULSADOR + INTERRUPCIÓN

Programación en Arduino donde a través  del sistema attachInterrupt nos permite crear una interrupción y así lograr controlar un conteo del 0-9 y se visualiza en un display 7 segmentos.


Elementos :

1. Arduino UNO
1. Display 7 segmentos  tipo Catodo Comun
8 .Resistencias de 1K y 220 ohm
1. Pulsador Contacto normalmente abierto
1. Protoboard
cables UTP


Procedimiento:

Lo primero es hacer el montaje del circuito en la protoboard.

Para realizar el montaje debemos tener en cuenta que la configuración interna del display es la siguiente:
Recordamos que existen dos tipos, puesto que lon leds internos del display estos se pueden polarizar de ánodo a cátodo por ello existen estos dos tipos de displays los anodos y los cátodos.

Lo otro a tener en cuenta el sistema de conexión utilizado para el pulsador pues de esto depende el código de programación.

Se usa la interrupción por caída el tipo FALLING, cada vez que pase de alto a bajo dicha interrupción el contador incrementara en uno.   

Para nuestro caso empleamos la de pull up lo cual nos da un alto desde el principio y cuando presionamos obtenemos un bajo.

Se realizo el montaje de las resistencia en Pull Down



El siete segmentos es de Cátodo común por ello el COM va a tierra y cada pin de control del controlador de Arduino va al segmento correspondiente. 

Para comprobar que si es de ánodo común lo hacemos con una de las posiciones en el 7 segmentos, conectando el Común con la resistencia de 220 Ohm.

 

Al alimentar el circuito se puede verificar el encendido del led, perteneciente a dicho segmento en este caso el e del 7 segmentos.


 Al final la conexión quedara de la siguiente manera:

 La verificación del funcionamiento se puede ver en las siguientes imágenes.






El código de programación en Arduino es el siguiente:
const int a=3;
const int b=4;
const int c=5;
const int d=6;
const int e=7;
const int f=8;
const int g=9;
int conta=0;

void setup(){
  
  attachInterrupt(0, increment, FALLING);
  Serial.begin(9600);
  //salidas al display
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);


}
void loop(){
Serial.println(conta, DEC);

 if (conta==0){
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, LOW);
 }
  if(conta==1){
  /* Genera el uno en el display*/
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
  }
 if(conta==2){
 /* Genera el dos en el display */
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
 } 
 if(conta==3){
 /* Genera el tres en el display*/
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
 }
 if(conta==4){
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
 }
 if(conta==5){
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);  
 }
 if (conta==6){
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
 }
 if(conta==7){
 /* Genera el siete en el display*/
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, LOW);
 }
 if(conta==8){
  /* Genera el 8 en el display*/
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
 }
 if(conta==9){
 /* Genera el nueve en el display*/
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
 }
}
  
void increment() {
    conta++; 
 if(conta > 9){
conta=0;
 }

}



Comentarios

Entradas populares