Introduction

L’objectif de ce projet est de concevoir une barrière de parking automatisée contrôlée par un servomoteur et un bouton poussoir. La barrière s’ouvre lorsqu’un utilisateur appuie sur le bouton prévu à cet effet.

Pour signaler le démarrage du processus d’ouverture, une LED clignote six fois de manière visible, informant ainsi que la barrière est en mouvement. Le servomoteur est ensuite actionné pour lever la barrière, simulant le fonctionnement d’un système de contrôle d’accès réel.

Ce projet permet de se familiariser avec :

  • Le pilotage d’un servomoteur pour le contrôle mécanique d’une barrière.

  • La gestion d’entrées numériques avec un bouton poussoir.

  • La programmation de séquences lumineuses, via une LED clignotante, pour indiquer l’état du système.

Cette application constitue une introduction pratique aux systèmes automatisés de contrôle d’accès et à la synchronisation entre actionneurs mécaniques et signaux lumineux.

Schéma du projet

Programme du projet

#include <Servo.h>

const int boutonPin = 5;
const int ledPin = 4;
const int servoPin = 9;

Servo barriere;

bool dejaActive = false; // empêche le déclenchement multiple

void setup() {
  pinMode(boutonPin, INPUT_PULLUP);  // bouton entre pin 5 et GND
  pinMode(ledPin, OUTPUT);

  barriere.attach(servoPin);
  barriere.write(0); // barrière fermée au départ
}

void loop() {

  // Lecture du bouton (appui = LOW avec INPUT_PULLUP)
  if (digitalRead(boutonPin) == LOW && !dejaActive) {
    dejaActive = true;

    // Lever la barrière
    barriere.write(90);

    // Clignotement de la LED 6 fois
    for (int i = 0; i < 6; i++) {
      digitalWrite(ledPin, HIGH);
      delay(500);
      digitalWrite(ledPin, LOW);
      delay(500);
    }

    // Refermer la barrière
    barriere.write(0);
  }

  // Réarmement quand le bouton est relâché
  if (digitalRead(boutonPin) == HIGH) {
    dejaActive = false;
  }
}