#define echoPin A3
#define trigPin A1
#define greenLED A5
#define orangeLED A7
#define redLED A2
#define switchPin A4
#define buzzerPin A6
#define SHCP D7
#define STCP D8
#define DS D9

long duration, distance;
byte segments[] = {
  B01111111, // 0
  B00001011, // 1
  B10110111, // 2
  B10011111, // 3
  B11001011, // 4
  B11011101, // 5
  B11111101, // 6
  B00001111, // 7
  B11111111, // 8
  B11011111, // 9
};

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(greenLED, OUTPUT);
  pinMode(orangeLED, OUTPUT);
  pinMode(redLED, OUTPUT);
  pinMode(switchPin, INPUT_PULLUP);
  pinMode(SHCP, OUTPUT);
  pinMode(STCP, OUTPUT);
  pinMode(DS, OUTPUT);
}

void loop() {
  int switchState = digitalRead(switchPin); 
  if (switchState == HIGH) { 
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    duration = pulseIn(echoPin, HIGH);
    distance = (duration * 0.034 / 2)/10;
    Serial.println(distance);

    if (distance > 120) {            
      digitalWrite(greenLED, HIGH);  
      digitalWrite(orangeLED, LOW);  
      digitalWrite(redLED, LOW);     
    } 
    else if(distance > 30 && distance <=120){
      digitalWrite(greenLED, LOW); 
      digitalWrite(orangeLED, HIGH);  
      digitalWrite(redLED, LOW); 
      tone(buzzerPin, 440); 
      delay(200); 
      noTone(buzzerPin); 
      digitalWrite(buzzerPin, LOW);
      Serial.print("Temps d'arrêt: ");
      Serial.print(map(distance, -30, 5, 0, 500)); 
      Serial.println(" ms");
      delay(map(distance, -30, 5, 0, 500)); 
    }
    else {
      digitalWrite(greenLED, LOW); 
      digitalWrite(orangeLED, LOW);  
      digitalWrite(redLED, HIGH); 
      tone(buzzerPin, 440); 
      delay(200);

    }
  }
  int digit1 = distance/10;
  int digit2 = distance % 10;
  digitalWrite(STCP, LOW);
  shiftOut(DS, SHCP, MSBFIRST, segments[digit2]);
  shiftOut(DS, SHCP, MSBFIRST, segments[digit1]);
  digitalWrite(STCP, HIGH);
  delay(50);
}
Loading
st-nucleo-l031k6
74HC595
74HC595