- 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();
}