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

Entradas populares de este blog

RobóticaIJR

Arduino + Servo motor