Este código de Arduino enciende LEDs, activa un buzzer y un motor en una secuencia específica mientras muestra números del 0 al 9 en un display de 7 segmentos. El ciclo while juega un papel fundamental en este proceso.
Se definen pines para LEDs (LED1, LED2, LED3), buzzer y motor.
También se definen los pines conectados a cada segmento del display (A-G) y un arreglo SEGMENTOS para agruparlos.
Se define otro arreglo DIGITOS que contiene la configuración para encender los segmentos necesarios para mostrar cada número del 0 al 9.
Finalmente, se define una constante OFF equivalente a LOW para apagar segmentos.
Dentro del ciclo while:
DIGITOS del 0 al 9 (ciclo for).print(i) para mostrar el número en el display.delay(1000).count.count, se encienden diferentes elementos:
count == 1: enciende LED1.count == 2: enciende LED2.count == 3: enciende LED3, buzzer y motor.count == 4: reinicia el ciclo
SEGMENTOS apagando todos los segmentos del display.count a 0.
Código:
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;
const int LED1 = 13;
const int LED2 = 12;
const int LED3 = 11;
const int BUZZER = 10;
const int MOTOR = 9;
const int N = 7;
const int SEGMENTOS[N] = {A, B, C, D, E, F, G};
/*CÁTODO COMÚN*/
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;
void setup()
{
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(MOTOR, OUTPUT);
for (int i = 0; i < N; i++)
{
pinMode(SEGMENTOS[i], OUTPUT);
digitalWrite(SEGMENTOS[i], OFF); //apagar
}
}
void print(int d)
{
for (int i = 0; i < N; i++)
{
digitalWrite(SEGMENTOS[i], DIGITOS[d][i]);
}
}
void loop()
{
int count = 0;
while (true)
{
for (int i = 0; i < 10; i++)
{
print(i);
delay(1000); // esperar 1000 milisegundos
}
count++;
if (count == 1)
{
digitalWrite(LED1, HIGH);
}
else if (count == 2)
{
digitalWrite(LED2, HIGH);
}
else if (count == 3)
{
digitalWrite(LED3, HIGH);
digitalWrite(BUZZER, HIGH);
digitalWrite(MOTOR, HIGH);
}
else if (count == 4)
{
// Reiniciar a estado inicial
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(BUZZER, LOW);
digitalWrite(MOTOR, LOW);
for (int i = 0; i < N; i++)
{
digitalWrite(SEGMENTOS[i], OFF); // apagar segmentos
}
count = 0;
}
}
}
Este código Arduino ejemplifica el funcionamiento del ciclo `while` y su aplicación para crear rutinas repetitivas.
El ciclo `while(true)` ejecuta continuamente el código dentro del bucle. Dentro del ciclo, un contador (`count`) controla la secuencia de encendido de LEDs, un buzzer y un motor. Al llegar a `count == 4`, se reinician todas las salidas y el contador para volver a iniciar la secuencia.