Poryectos
Leds + servo: proyecto leer programación y armar circuito
#include <Servo.h>
Servo miServo;
// Pines LEDs
const int rojo = 13;
const int amarillo = 12;
const int verde = 11;
void setup() {
pinMode(rojo, OUTPUT);
pinMode(amarillo, OUTPUT);
pinMode(verde, OUTPUT);
miServo.attach(9);
}
void loop() {
// 🔴 ROJO
digitalWrite(rojo, HIGH);
digitalWrite(amarillo, LOW);
digitalWrite(verde, LOW);
miServo.write(0); // barrera cerrada
delay(4000);
// 🟢 VERDE
digitalWrite(rojo, LOW);
digitalWrite(verde, HIGH);
miServo.write(90); // barrera abierta
delay(4000);
// 🟡 AMARILLO
digitalWrite(verde, LOW);
digitalWrite(amarillo, HIGH);
miServo.write(45); // transición
delay(2000);
digitalWrite(amarillo, LOW);
}
Leds + servo: juego
#include <Servo.h>
Servo miServo;
const int boton = 2;
const int ledVerde = 6;
const int ledRojo = 7;
int angulo = 0;
int direccion = 5;
void setup() {
miServo.attach(9);
pinMode(boton, INPUT_PULLUP);
pinMode(ledVerde, OUTPUT);
pinMode(ledRojo, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Apagar LEDs
digitalWrite(ledVerde, LOW);
digitalWrite(ledRojo, LOW);
// Movimiento del servo
miServo.write(angulo);
angulo += direccion;
// Rebote
if (angulo >= 180 || angulo <= 0) {
direccion = -direccion;
}
delay(50);
// Si presiona el botón
if (digitalRead(boton) == LOW) {
if (angulo >= 80 && angulo <= 100) {
Serial.println("GANASTE!");
digitalWrite(ledVerde, HIGH);
} else {
Serial.println("PERDISTE!");
digitalWrite(ledRojo, HIGH);
}
delay(1500);
}
}
Leds + servo + boton : proyecto semaforo y valla
#include <Servo.h>
Servo miServo;
// LEDs
const int rojo = 13;
const int amarillo = 12;
const int verde = 11;
// Botón
const int boton = 2;
bool solicitud = false;
void setup() {
pinMode(rojo, OUTPUT);
pinMode(amarillo, OUTPUT);
pinMode(verde, OUTPUT);
pinMode(boton, INPUT_PULLUP);
miServo.attach(9);
}
void loop() {
// ======================
// 🟢 VERDE
// ======================
digitalWrite(verde, HIGH);
digitalWrite(amarillo, LOW);
digitalWrite(rojo, LOW);
miServo.write(90); // barrera abierta
unsigned long tiempo = millis();
while (millis() - tiempo < 5000) {
if (digitalRead(boton) == LOW) {
solicitud = true;
}
}
// ======================
// 🟡 AMARILLO
// ======================
digitalWrite(verde, LOW);
digitalWrite(amarillo, HIGH);
delay(2000);
// ======================
// 🔴 ROJO (PEATÓN)
// ======================
digitalWrite(amarillo, LOW);
digitalWrite(rojo, HIGH);
miServo.write(0); // barrera cerrada
if (solicitud) {
delay(5000); // más tiempo si presionaron botón
} else {
delay(3000); // tiempo normal
}
solicitud = false;
digitalWrite(rojo, LOW);
}
Comentarios
Publicar un comentario