#include <Arduino.h>
const byte segmentPins[] = {19, 18, 5, 17, 16, 4, 2}; // A, B, C, D, E, F, G
const byte digitPins[] = {12, 25, 27, 26}; // DIG1, DIG2, DIG3, DIG4
//funcion Set-up
void setup() {
Serial.begin(115200);
// output para los numeros
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
// output para los digitos
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
}
}
void displayDigit(int digit, int value) {
// define los numeros de 0 - 9
const int segments[10][7] = {
{0, 0, 0, 0, 0, 0, 1}, // 0
{1, 0, 0, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0}, // 2
{0, 0, 0, 0, 1, 1, 0}, // 3
{1, 0, 0, 1, 1, 0, 0}, // 4
{0, 1, 0, 0, 1, 0, 0}, // 5
{0, 1, 0, 0, 0, 0, 0}, // 6
{0, 0, 0, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0}, // 8
{0, 0, 0, 0, 1, 0, 0} // 9
};
//condicion para prender los numeros
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], segments[value][i]);
}
//activa todos los digitos
digitalWrite(digitPins[digit], HIGH);
}
void loop() {
//condicion de contador para ir del numero menor hasta el mayor
for (int count = 0; count < 10000; count++) {
int digit1 = count / 1000 % 10;
int digit2 = count / 100 % 10;
int digit3 = count / 10 % 10;
int digit4 = count % 10;
// apaga todos los digitos
for (int i = 0; i < 4; i++) {
digitalWrite(digitPins[i], LOW);
}
//digito 1
displayDigit(0, digit1);
delay(10);
digitalWrite(digitPins[0], LOW);
//digito 2
displayDigit(1, digit2);
delay(10);
digitalWrite(digitPins[1], LOW);
//digito 3
displayDigit(2, digit3);
delay(10);
digitalWrite(digitPins[2], LOW);
//digito 4
displayDigit(3, digit4);
delay(10);
digitalWrite(digitPins[3], LOW);
//delay para la visualizacion
delay(60);
}
}