Pestañas

jueves, 22 de abril de 2021

Proyecto P.C. Puerta automática

En este ejemplo la puerta comienza cerrándose esté donde esté de su recorrido. Cuando esta cerrada se pone a la espera de pulsar el botón de inicio. Una vez pulsado comienza a abrirse. Cuando llega al final del recorrido se para durante 5 segundos y se comienza a cerrar. Cuando llega al final se para hasta que se vuelva a pulsar el botón. Se han añadido LEDs que indican cada movimiento que realiza:

  • LEDrojo: cerrada
  • LED verde: abierta
  • LED ambar con flecha izquierda: cerrando
  • LED ambar con flecha derecha: abriendo

Hemos utilizado Arduino NANO y puente H de motores L298N




Conexiones


Código Arduino

//conexiones de los LEDs:
int rojo = 7;
int LEDabriendo = 10;
int LEDcerrando = 6;
int verde = 12;
//conexiones motor: a los pines 2 y 3
//pulsador inicio al pin 5
int inicio = 5;
//finales de carrera
int FCcerrado = 9;
int FCabierto = 8;
//
bool activo = 0;

void setup()
{
  Serial.begin(9600);

  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(rojo, OUTPUT);
  pinMode(LEDabriendo, OUTPUT);
  pinMode(LEDcerrando, OUTPUT);
  pinMode(verde, OUTPUT);
  pinMode(inicio, INPUT);
  pinMode(FCcerrado, INPUT);
  pinMode(FCabierto, INPUT);
  //Llevamos la puerta a cerrar para iniciar con la puerta cerrada
  cerrando();
}

void loop()
{
  //cuando pulsamos el botón de inicio se abre la puerta
  //hasta que se pulsa el final de carrera de abierto
  //espara 5 segundos y se cierra


  if (digitalRead(inicio)) {
    Serial.println("inicio pulsado");
    abriendo();
    delay(5000);
    cerrando();
  }
}

void cerrado() {
  Serial.println("cerrado");
  digitalWrite(rojo, HIGH);
  digitalWrite(LEDabriendo, LOW);
  digitalWrite(LEDcerrando, LOW);
  digitalWrite(verde, LOW);
  //motor parado
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
}

void abierto() {
  Serial.println("Abierto");
  digitalWrite(rojo, LOW);
  digitalWrite(LEDabriendo, LOW);
  digitalWrite(LEDcerrando, LOW);
  digitalWrite(verde, HIGH);
  //motor parado
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
}

void abriendo() {
  Serial.println("abriendo");
  while (digitalRead(FCabierto) == 0) {
    digitalWrite(rojo, LOW);
    digitalWrite(LEDabriendo, HIGH);
    digitalWrite(LEDcerrando, LOW);
    digitalWrite(verde, LOW);
    // motor abriendo
    digitalWrite(2, HIGH);
    digitalWrite(3, LOW);
  }
  abierto();
}

void cerrando() {
  Serial.println("cerrando");
  while (digitalRead(FCcerrado) == 0) {
    digitalWrite(rojo, LOW);
    digitalWrite(LEDabriendo, LOW);
    digitalWrite(LEDcerrando, HIGH);
    digitalWrite(verde, LOW);
    // motor cerrando
    digitalWrite(2, LOW);
    digitalWrite(3, HIGH);
  }
  cerrado();
}

No hay comentarios:

Publicar un comentario