// Define los pines que van conectados al display
const int displayDecenas[7] = { 4, 5, 6, 7, 15, 16, 17 };
// a b c d e f g
const int displayUnidades[7] = { 18, 8, 3, 46, 9, 10, 11 };
// a b c d e f g
// Define un arreglo con los números codificados para display ánodo común
const byte DisplayAnodo[10] = {0b1000000, //0
0b1111001, //1
0b0100100, //2
0b0110000, //3
0b0011001, //4
0b0010010, //5
0b0000010, //6
0b1111000, //7
0b0000000, //8
0b0010000}; //9
uint8_t buttonPinBlue = 47; // pin:47 pulsador Pull-Up azul cuenta ascedente
uint8_t buttonPinGreen = 48; // pin:48 pulsador Pull-Down verde cuenta descedente
uint8_t ledGreen = 13; // Led que indica auditorio con capacidad
uint8_t ledRed = 14; // Led que indica auditorio lleno
int cuenta; // Contador para aumentar o disminuir con cada pulsación
// funciones que prenden el display
void Display_decenas_Write(int number);
void Display_unidades_Write(int number);
void Display_Muestra(int number);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32-S3!");
// Inicializa el pin del pulsador como entrada con resistencia pull-up interna
pinMode(buttonPinBlue, INPUT_PULLUP);
pinMode(buttonPinGreen, INPUT_PULLDOWN);
pinMode(ledGreen, OUTPUT);
pinMode(ledRed, OUTPUT);
// Configura los pines del display unidad y decenas como salidas
for(int i = 0; i < 7; i++) {
pinMode(displayUnidades[i], OUTPUT);
pinMode(displayDecenas[i], OUTPUT);
}
cuenta= 0;
Display_Muestra(cuenta); // Inicia display en CERO
} //fin de setup
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
/* Inicializo la señalización con los leds*/
if (cuenta >= 0 && cuenta < 20){
digitalWrite(ledGreen, HIGH); // LED GREEN : ON, hay capacidad
digitalWrite(ledRed, LOW); // LED GREEN : OFF
}
if (cuenta == 20){
digitalWrite(ledGreen, LOW); // LED GREEN : OFF
digitalWrite(ledRed, HIGH); // LED GREEN : ON, NO hay capacidad
}
if (Serial.available()) {
char light = Serial.read() - '0';
digitalWrite(ledRed, HIGH);
if (light==1){
delay(10); // Pequeña demora
digitalWrite(ledGreen, LOW);
if(cuenta<20){ // Comprueba si hay capacidad (Hasta 20)
cuenta= cuenta+1; // Incrementa el contador
Display_Muestra(cuenta); // Muestra dígitos en el display
// Serial.print("Contador: "); // Imprime el valor del contador en el terminal
// Serial.println(cuenta);
}
}
// else{
// if(cuenta>0){ // Comprueba si hay capacidad (Hasta 20)
// cuenta= cuenta-1; // Incrementa el contador
// Display_Muestra(cuenta); // Muestra dígitos en el display
// Serial.print("Contador: "); // Imprime el valor del contador en el terminal
// Serial.println(cuenta);
// }
// }
}
} // fin de loop
/* Funciones que son utilizadas por los displays*/
void Display_Muestra(int number) // Convierte a BCD y lo Muestra en los displays
{
int unidades = number % 10;
int decenas = number / 10;
Display_unidades_Write(unidades);
Display_decenas_Write(decenas);
}
void Display_decenas_Write(int number)
{
byte numberBit = DisplayAnodo[number];
for (int i = 0; i < 7; i++)
{
int bit = bitRead(numberBit, i);
digitalWrite(displayDecenas[i], bit);
}
}
void Display_unidades_Write(int number)
{
byte numberBit = DisplayAnodo[number];
for (int i = 0; i < 7; i++)
{
int bit = bitRead(numberBit, i);
digitalWrite(displayUnidades[i], bit);
}
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1