Aprender el uso de estructuras de control anidadas para el manejo y uso de diferentes elementos
Cargue el código proporcionado en su placa Arduino Uno. .
// Definición de las constantes que representan los segmentos de un display de 7 segmentos
const int A = 2;
const int B = 3;
const int C = 4;
const int D = 5;
const int E = 6;
const int F = 7;
const int G = 8;
// Definición de los pines para los elementos externos
const int LED2 = 12;
const int LED3 = 11;
const int BUZZER = 10;
const int MOTOR = 13;
const int RELE = 9;
// Número de segmentos en el display de 7 segmentos
const int N = 7;
// Definición de los segmentos que forman los dígitos en el display
const int SEGMENTOS[N] = {A, B, C, D, E, F, G};
// Definición de los patrones para los dígitos del 0 al 9 en el display de 7 segmentos
const int DIGITOS[10][N] = {
/*0*/ {1, 1, 1, 1, 1, 1, 0},
/*1*/ {0, 1, 1, 0, 0, 0, 0},
/*2*/ {1, 1, 0, 1, 1, 0, 1},
/*3*/ {1, 1, 1, 1, 0, 0, 1},
/*4*/ {0, 1, 1, 0, 0, 1, 1},
/*5*/ {1, 0, 1, 1, 0, 1, 1},
/*6*/ {1, 0, 1, 1, 1, 1, 1},
/*7*/ {1, 1, 1, 0, 0, 0, 0},
/*8*/ {1, 1, 1, 1, 1, 1, 1},
/*9*/ {1, 1, 1, 1, 0, 1, 1}};
const int OFF = LOW; // Define el estado apagado como LOW
void setup()
{
// Configura los pines como salida
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(MOTOR, OUTPUT);
pinMode(RELE, OUTPUT);
// Configura los pines de los segmentos como salida y los apaga
for (int i = 0; i < N; i++)
{
pinMode(SEGMENTOS[i], OUTPUT);
digitalWrite(SEGMENTOS[i], OFF); // apagar
}
}
// Función para mostrar un dígito en el display
void print(int d)
{
for (int i = 0; i < N; i++)
{
digitalWrite(SEGMENTOS[i], DIGITOS[d][i]);
}
}
void loop()
{
int count = 0;
while (true)
{
// Muestra los dígitos del 0 al 9 en el display
for (int i = 0; i < 10; i++)
{
print(i);
delay(500); // esperar 500 milisegundos
}
count++;
if (count >= 5 && count < 8)
{
// Activa LED2, el zumbador y desactiva el relé y el motor
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
digitalWrite(BUZZER, HIGH);
digitalWrite(RELE, LOW);
digitalWrite(MOTOR, LOW);
}
else if (count >= 8 || count == 0)
{
// Desactiva LED2, LED3, el zumbador y el motor, activa el relé y apaga los segmentos del display
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(BUZZER, LOW);
digitalWrite(MOTOR, LOW);
digitalWrite(RELE, HIGH);
for (int i = 0; i < N; i++)
{
digitalWrite(SEGMENTOS[i], OFF);
}
count = 0;
}
else
{
// Activa LED3 y el motor, desactiva el zumbador y el relé
digitalWrite(LED3, HIGH);
digitalWrite(BUZZER, LOW);
digitalWrite(MOTOR, HIGH);
digitalWrite(RELE, HIGH);
}
}
}
Modificación
Cambiar el código para que se tenga funcionando el motor y el foco al mismo tiempo, y en combinación con los LEDs y buzzer (lo contrario).