// Se definen los valores relevantes para el programa (pines, límites y delay)
#define SEGA1 26 //Segmento A
#define SEGB1 27 //Segmento B
#define SEGC1 14 //Segmento C
#define SEGD1 12 //Segmento D
#define SEGE1 13 //Segmento E
#define SEGF1 25 //Segmento F
#define SEGG1 33 //Segmento G
#define SEGA2 21 //Segmento A
#define SEGB2 22 //Segmento B
#define SEGC2 2 //Segmento C
#define SEGD2 4 //Segmento D
#define SEGE2 5 //Segmento E
#define SEGF2 19 //Segmento F
#define SEGG2 18 //Segmento G
#define REFRESH 1000//Tiempo en ms para refrescar datos
//int xx[] = {SEGA, SEGB, SEGC, SEGD, SEGE, SEGF, SEGG};
int uno[] = {0, 1, 1, 0, 0, 0, 0};
int dos[] = {1, 1, 0, 1, 1, 0, 1};
int tres[] = {1, 1, 1, 1, 0, 0, 1};
int cuatro[] = {0, 1, 1, 0, 0, 1, 1};
int cinco[] = {1, 0, 1, 1, 0, 1, 1};
int seis[] = {1, 0, 1, 1, 1, 1, 1};
int siete[] = {1, 1, 1, 0, 0, 0, 0};
int ocho[] = {1, 1, 1, 1, 1, 1, 1};
int nueve[] = {1, 1, 1, 0, 0, 1, 1};
int cero[] = {1, 1, 1, 1, 1, 1, 0};
void setup() {
Serial.begin(115200);
//Se establecen los pines del display como salidas
pinMode(SEGA1, OUTPUT);
pinMode(SEGB1, OUTPUT);
pinMode(SEGC1, OUTPUT);
pinMode(SEGD1, OUTPUT);
pinMode(SEGE1, OUTPUT);
pinMode(SEGF1, OUTPUT);
pinMode(SEGG1, OUTPUT);
pinMode(SEGA2, OUTPUT);
pinMode(SEGB2, OUTPUT);
pinMode(SEGC2, OUTPUT);
pinMode(SEGD2, OUTPUT);
pinMode(SEGE2, OUTPUT);
pinMode(SEGF2, OUTPUT);
pinMode(SEGG2, OUTPUT);
}
void loop() {
// Debo escribir MAURICIO cambiando numero por letras, por lo que debo escribir:
// 13 (M), 01 (A), 22 (U), 19 (R), 9 (I), 3 (C), 9 (I), 16(O)
int nombre[] = {13, 1, 22, 19, 9, 3, 9, 16};
for (int i = 0; i <=7; i ++)
{
// para recorrer el array con los numeros que escriben mi nombre
escribir_numero(nombre[i]);
delay(REFRESH); // Se espera un segundo, que es lo que marca el enunciado
}
}
void escribir_numero(int numero)
{
int unidades = numero % 10;
int decenas = numero/10;
int* display_unidades = cambio_num_display(unidades);
int* display_decenas = cambio_num_display(decenas);
escribir_digito(display_unidades, 0);
escribir_digito(display_decenas, 1);
}
int* cambio_num_display(int numero)
{
int* digito;
if (numero == 0) digito = cero;
else if (numero == 1) digito = uno;
else if (numero == 2) digito = dos;
else if (numero == 3) digito = tres;
else if (numero == 4) digito = cuatro;
else if (numero == 5) digito = cinco;
else if (numero == 6) digito = seis;
else if (numero == 7) digito = siete;
else if (numero == 8) digito = ocho;
else if (numero == 9) digito = nueve;
else return 0;
return digito;
}
void escribir_digito(int entrada[7], int display)
{
if (display == 1){ // DECENAS
digitalWrite(SEGA1, entrada[0]);
digitalWrite(SEGB1, entrada[1]);
digitalWrite(SEGC1, entrada[2]);
digitalWrite(SEGD1, entrada[3]);
digitalWrite(SEGE1, entrada[4]);
digitalWrite(SEGF1, entrada[5]);
digitalWrite(SEGG1, entrada[6]);
}
else if (display == 0){ // UNIDADES
digitalWrite(SEGA2, entrada[0]);
digitalWrite(SEGB2, entrada[1]);
digitalWrite(SEGC2, entrada[2]);
digitalWrite(SEGD2, entrada[3]);
digitalWrite(SEGE2, entrada[4]);
digitalWrite(SEGF2, entrada[5]);
digitalWrite(SEGG2, entrada[6]);
}
}