Contador BCD

Diseñar un circuito que realice la cuenta en binario, en nuestra caso será un contador BCD (0-9).


Sketch que hay que cargar en la placa


int diodo0=9;
int diodo1=10;
int diodo2=11;
int diodo3=12;


void setup()
{
  pinMode(diodo0, OUTPUT);
  pinMode(diodo1, OUTPUT);
  pinMode(diodo2, OUTPUT);
  pinMode(diodo3, OUTPUT);
}

void loop()
{
  encenderDiodos(0,0,0,1);
  encenderDiodos(0,0,1,0);
  encenderDiodos(0,0,1,1);
  encenderDiodos(0,1,0,0);
  encenderDiodos(0,1,0,1);
  encenderDiodos(0,1,1,0);
  encenderDiodos(0,1,1,1);
  encenderDiodos(1,0,0,0);
  encenderDiodos(1,0,0,1);
}
void encenderDiodos(int d3,int d2, int d1, int d0)
{
  digitalWrite(diodo0, d0);
  digitalWrite(diodo1, d1);
  digitalWrite(diodo2, d2);
  digitalWrite(diodo3, d3);
  delay(500);
 
  digitalWrite(diodo0, LOW);
  digitalWrite(diodo1, LOW);
  digitalWrite(diodo2, LOW);
  digitalWrite(diodo3, LOW);
  delay(500);
}

Vamos a introducir un pulsador en el circuito con la intención de que nos sirva para iniciar el comienzo de la cuenta, el circuito modificado será el siguiente:


Sketch que hay que cargar en la placa

int diodo0=9;
int diodo1=10;
int diodo2=11;
int diodo3=12;
int pinPulsador=0;
int estadoPulsador=0;

void setup()

{
  pinMode(diodo0, OUTPUT);
  pinMode(diodo1, OUTPUT);
  pinMode(diodo2, OUTPUT);
  pinMode(diodo3, OUTPUT);
  pinMode(pinPulsador, INPUT);
 
}

void loop()

{
  estadoPulsador=digitalRead(pinPulsador);
  while(estadoPulsador==LOW)
  {
  encenderDiodos(0,0,0,1);
  encenderDiodos(0,0,1,0);
  encenderDiodos(0,0,1,1);
  encenderDiodos(0,1,0,0);
  encenderDiodos(0,1,0,1);
  encenderDiodos(0,1,1,0);
  encenderDiodos(0,1,1,1);
  encenderDiodos(1,0,0,0);
  encenderDiodos(1,0,0,1);
  estadoPulsador=digitalRead(pinPulsador);
 
  }
  }

//Función declarada para activar los diodos
void encenderDiodos(int d3,int d2, int d1, int d0)

{
  digitalWrite(diodo0, d0);
  digitalWrite(diodo1, d1);
  digitalWrite(diodo2, d2);
  digitalWrite(diodo3, d3);
  delay(500);
 
  digitalWrite(diodo0, LOW);
  digitalWrite(diodo1, LOW);
  digitalWrite(diodo2, LOW);
  digitalWrite(diodo3, LOW);
  delay(500);


RecordMyDestop


No hay comentarios: