sketch_feb24a.ino 2,25 ko
Newer Older
// 🔹 Définition des broches pour les capteurs ultrason
const int trigPin1 = 9;  // TRIG du capteur gauche
const int echoPin1 = 8;  // ECHO du capteur gauche
const int trigPin2 = 7;  // TRIG du capteur droit
const int echoPin2 = 6;  // ECHO du capteur droit

// 🔹 Définition des broches pour la LED RGB
const int redPin = 10;    // LED Rouge
const int greenPin = 11;  // LED Verte
const int bluePin = 12;   // LED Bleue

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

  // Initialisation des capteurs
  pinMode(trigPin1, OUTPUT); pinMode(echoPin1, INPUT);
  pinMode(trigPin2, OUTPUT); pinMode(echoPin2, INPUT);

  // Initialisation de la LED RGB
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void loop() {
  // 🔹 Mesure des distances
  float distance1 = measureDistance(trigPin1, echoPin1);
  float distance2 = measureDistance(trigPin2, echoPin2);

  // 🔹 Envoi des distances sous format JSON
  Serial.print("{\"gauche\":");
  Serial.print(distance1);
  Serial.print(", \"droite\":");
  Serial.print(distance2);
  Serial.println("}");

  // 🔹 Mise à jour de la LED en fonction des distances
  updateLED(distance1, distance2);

  delay(500);  // Pause pour éviter les mesures trop fréquentes
}

// 🔹 Fonction pour mesurer la distance avec un capteur ultrason
float measureDistance(int trig, int echo) {
  digitalWrite(trig, LOW);
  delayMicroseconds(2);
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  long duration = pulseIn(echo, HIGH, 30000);
  return (duration * 0.0343) / 2;
}

// 🔹 Fonction pour gérer l'affichage de la LED RGB
void updateLED(float distanceGauche, float distanceDroite) {
  const int seuilDanger = 30;  // Seuil d'obstacle critique en cm

  if (distanceGauche < seuilDanger && distanceDroite < seuilDanger) {
    // 🔴 Rouge si obstacles des deux côtés
    setLED(HIGH, LOW, LOW);
  } else if (distanceGauche < seuilDanger || distanceDroite < seuilDanger) {
    // 🔵 Bleu si obstacle d'un seul côté
    setLED(LOW, LOW, HIGH);
  } else {
    // 🟢 Vert si tout est dégagé
    setLED(LOW, HIGH, LOW);
  }
}

// 🔹 Fonction utilitaire pour allumer la LED RGB
void setLED(int r, int g, int b) {
  digitalWrite(redPin, r);
  digitalWrite(greenPin, g);
  digitalWrite(bluePin, b);
}