// STM32 Nucleo-C031C6 I2C Example
// Simulation: https://wokwi.com/projects/365421666018061313
// Pines de los LEDs
int leds[] = {D0, D1, D2, D3, D4, D5, D6, D7, D8, D9};
const int numLeds = 10;
// Botones
const int btnMasVel = A0; // Aumentar velocidad
const int btnMenosVel = A1; // Disminuir velocidad
// Velocidad inicial (ms)
int velocidad = 150;
// Límites
const int velMin = 20;
const int velMax = 500;
void setup() {
for (int i = 0; i < numLeds; i++) {
pinMode(leds[i], OUTPUT);
digitalWrite(leds[i], LOW);
}
pinMode(btnMasVel, INPUT_PULLUP);
pinMode(btnMenosVel, INPUT_PULLUP);
}
void loop() {
// Botón aumentar velocidad
if (digitalRead(btnMasVel) == LOW) {
velocidad -= 20;
if (velocidad < velMin) {
velocidad = velMin;
}
delay(150); // anti rebote
}
// Botón disminuir velocidad
if (digitalRead(btnMenosVel) == LOW) {
velocidad += 20;
if (velocidad > velMax) {
velocidad = velMax;
}
delay(150); // anti rebote
}
// Izquierda -> Derecha
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], HIGH);
delay(velocidad);
digitalWrite(leds[i], LOW);
verificarBotones();
}
// Derecha -> Izquierda
for (int i = numLeds - 2; i > 0; i--) {
digitalWrite(leds[i], HIGH);
delay(velocidad);
digitalWrite(leds[i], LOW);
verificarBotones();
}
}
void verificarBotones() {
if (digitalRead(btnMasVel) == LOW) {
velocidad -= 20;
if (velocidad < velMin) {
velocidad = velMin;
}
delay(150);
}
if (digitalRead(btnMenosVel) == LOW) {
velocidad += 20;
if (velocidad > velMax) {
velocidad = velMax;
}
delay(150);
}
}