Rduino+Resistencias+Leds+Boton
Rduino+Resistencias+Leds+Boton
Programación del boton
👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻
const int boton = 2;
const int led = 13;
void setup() {
pinMode(boton, INPUT_PULLUP);
pinMode(led, OUTPUT);
}
void loop() {
if (digitalRead(boton) == LOW) {
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
}
Ejercicio 1
Al presionar el boton todos los leds deben de prender.
🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖🤖
Semaforo activación en verde:
// Pines
const int rojo = 13;
const int amarillo = 12;
const int verde = 11;
const int boton = 2;
bool solicitud = false;
void setup() {
pinMode(rojo, OUTPUT);
pinMode(amarillo, OUTPUT);
pinMode(verde, OUTPUT);
pinMode(boton, INPUT_PULLUP);
}
void loop() {
// ======================
// FASE VERDE
// ======================
digitalWrite(verde, HIGH);
digitalWrite(amarillo, LOW);
digitalWrite(rojo, LOW);
unsigned long tiempoInicio = millis();
// Verde dura 5 segundos
while (millis() - tiempoInicio < 5000) {
// Si presionan botón (LOW porque usamos INPUT_PULLUP)
if (digitalRead(boton) == LOW) {
solicitud = true;
}
}
// ======================
// SI HAY SOLICITUD PEATONAL
// ======================
if (solicitud) {
// Parpadeo verde (aviso)
for (int i = 0; i < 3; i++) {
digitalWrite(verde, LOW);
delay(300);
digitalWrite(verde, HIGH);
delay(300);
}
solicitud = false;
}
// ======================
// FASE AMARILLO
// ======================
digitalWrite(verde, LOW);
digitalWrite(amarillo, HIGH);
delay(2000);
// ======================
// FASE ROJO (PEATÓN PASA)
// ======================
digitalWrite(amarillo, LOW);
digitalWrite(rojo, HIGH);
delay(5000);
digitalWrite(rojo, LOW);
}
👾👾👾👾👾👾👾👾👾👾👾👾👾👾👾👾👾👾
// Ejercicio semaforo real
const int rojo = 13;
const int amarillo = 12;
const int verde = 11;
const int boton = 2;
void setup() {
pinMode(rojo, OUTPUT);
pinMode(amarillo, OUTPUT);
pinMode(verde, OUTPUT);
pinMode(boton, INPUT_PULLUP);
}
void loop() {
// ======================
// 🔴 FASE ROJO (10 segundos)
// ======================
digitalWrite(rojo, HIGH);
digitalWrite(amarillo, LOW);
digitalWrite(verde, LOW);
unsigned long tiempoInicio = millis();
while (millis() - tiempoInicio < 10000) {
// Si presionan el botón → salir del rojo antes
if (digitalRead(boton) == LOW) {
break;
}
}
// ======================
// 🟢 VERDE
// ======================
digitalWrite(rojo, LOW);
digitalWrite(verde, HIGH);
delay(5000);
// ======================
// 🟡 AMARILLO
// ======================
digitalWrite(verde, LOW);
digitalWrite(amarillo, HIGH);
delay(2000);
digitalWrite(amarillo, LOW);
}
🧟🧟🧟🧟🧟🧟🧟🧟🧟🧟🧟🧟🧟🧟
Proyecto juego de leds
const int rojo = 13;
const int amarillo = 12;
const int verde = 11;
const int boton = 2;
int estado = 0; // 0=rojo, 1=amarillo, 2=verde
int direccion = 1; // 1=sube, -1=baja
int velocidad = 600; // tiempo inicial
bool presiono = false;
void setup() {
pinMode(rojo, OUTPUT);
pinMode(amarillo, OUTPUT);
pinMode(verde, OUTPUT);
pinMode(boton, INPUT_PULLUP);
}
void loop() {
// Encender LED según estado
apagarTodo();
if (estado == 0) digitalWrite(rojo, HIGH);
if (estado == 1) digitalWrite(amarillo, HIGH);
if (estado == 2) digitalWrite(verde, HIGH);
unsigned long inicio = millis();
presiono = false;
// Esperar según velocidad
while (millis() - inicio < velocidad) {
if (digitalRead(boton) == LOW) {
presiono = true;
}
}
// ==========================
// LÓGICA DEL JUEGO
// ==========================
if (estado == 2) { // llegó a VERDE
if (presiono) {
direccion = -1; // regresar
} else {
perder();
reiniciar();
return;
}
}
if (estado == 0 && direccion == -1) {
direccion = 1; // subir otra vez
velocidad -= 50; // aumentar dificultad
if (velocidad < 150) {
velocidad = 150; // límite mínimo
}
}
estado += direccion;
}
// ============================
void apagarTodo() {
digitalWrite(rojo, LOW);
digitalWrite(amarillo, LOW);
digitalWrite(verde, LOW);
}
void perder() {
for (int i = 0; i < 3; i++) {
digitalWrite(rojo, HIGH);
delay(300);
digitalWrite(rojo, LOW);
delay(300);
}
}
void reiniciar() {
estado = 0;
direccion = 1;
velocidad = 600;
}
Comentarios
Publicar un comentario