#include <NewPing.h> //la bibliothèque NewPing pour utiliser le capteur ultrasonique
#include <Tone.h> //la bibliothèque Tone pour utiliser le buzzer
uint16_t duration;//Déclaration de la variable duration pour stocker la durée du son
const int trigPin = D4; // Broche du capteur pour l'émission du signal
const int echoPin = D3; // Broche du capteur pour la réception du signal
const int RED_LED_PIN = D10; // Broche de la LED rouge
const int ORANGE_LED_PIN = D9; // Broche de la LED orangee
const int GREEN_LED_PIN = D5; // Broche de la LED verte
const int BUZZER_PIN = A7;
const int buttonPin = D7;
#define SHCP A5
#define STCP A4
#define DS A6
float distance_meters;
long distance ;
int digit1;
int digit2;
NewPing sonar(trigPin, echoPin);// Création d'une instance de la classe NewPing pour le capteur
// Fonction pour contrôler l'affichage des chiffres sur les afficheurs sept segments
// Définir les caractères pour les chiffres de 0 à 9 sur les afficheurs sept segments
byte digits[] = {
0b01111110, // digit 0
0b00001010, // digit 1
0b10110110, // digit 2
0b10011110, // digit 3
0b11001010, // digit 4
0b11011100, // digit 5
0b11111100, // digit 6
0b00001110, // digit 7
0b11111110, // digit 8
0b11011110 // digit 9
};
void setup() {
Serial.begin(9600);
pinMode(RED_LED_PIN, OUTPUT);// Configuration de la broche de la LED rouge en sortie
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ORANGE_LED_PIN, OUTPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(SHCP, OUTPUT);
pinMode(STCP, OUTPUT);
pinMode(DS, OUTPUT);
}
// Initialisation de la communication série à 115200 bauds
void loop() {
int buttonState = digitalRead(buttonPin); // Lecture de l'état du bouton
unsigned int distance = sonar.ping_cm();// Mesure de la distance avec le capteur
Serial.println("Distance en cm :");// Affichage de la distance mesurée
Serial.println(distance );
distance_meters = distance * 0.01;
Serial.println("Distance en meters :");// Affichage de la distance mesurée
Serial.println(distance_meters);
if (buttonState == LOW) // Vérification si le bouton est enfoncé
{
if (distance > 120)
{
digitalWrite(RED_LED_PIN, LOW); //ettaindre la led rouge
digitalWrite(ORANGE_LED_PIN, LOW); //Éteindre la LED orange
digitalWrite(GREEN_LED_PIN, HIGH); //allumer la led verte
}
else if ((distance > 30.0) && (distance <= 120.0))
{
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, LOW);
digitalWrite(ORANGE_LED_PIN, HIGH);
duration = map(distance - 30, 90, 0, 1000, 0); // Calcul de la durée du son du buzzer en fonction de la distance
tone(BUZZER_PIN, 440);// Générer un son sur le buzzer
delay(200);// Attendre 200 millisecondes
noTone(BUZZER_PIN); // Arrêter le son du buzzer
digitalWrite(BUZZER_PIN, LOW); // Éteindre le buzzer
delay(duration);// Attendre la durée calculée
Serial.print("La Duration ");
Serial.println(duration);
delay(duration);// Attendre la durée calculée
}
else
{
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(ORANGE_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, LOW);
tone(BUZZER_PIN, 440, 0);// Générer un son sur le buzzer
}
}
else
{
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(ORANGE_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, LOW);
}
int distance_integer = int(distance_meters / 10);
digit1 = distance / 100; // Chiffre des centaines
digit2 = (distance % 100) / 10; // Chiffre des dizaines
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, digits[digit2]);
shiftOut(DS, SHCP, MSBFIRST, digits[digit1]| 0b00000001);
digitalWrite(STCP, HIGH);
delay(500);
}
nucleo:D1
nucleo:D0
nucleo:RST.1
nucleo:GND.1
nucleo:D2
nucleo:D3
nucleo:D4
nucleo:D5
nucleo:D6
nucleo:D7
nucleo:D8
nucleo:D9
nucleo:D10
nucleo:D11
nucleo:D12
nucleo:VIN
nucleo:GND.2
nucleo:RST.2
nucleo:5V
nucleo:A7
nucleo:A6
nucleo:A5
nucleo:A4
nucleo:A3
nucleo:A2
nucleo:A1
nucleo:A0
nucleo:REF
nucleo:3V3
nucleo:D13
sr1:Q1
sr1:Q2
sr1:Q3
sr1:Q4
sr1:Q5
sr1:Q6
sr1:Q7
sr1:GND
sr1:Q7S
sr1:MR
sr1:SHCP
sr1:STCP
sr1:OE
sr1:DS
sr1:Q0
sr1:VCC
sr2:Q1
sr2:Q2
sr2:Q3
sr2:Q4
sr2:Q5
sr2:Q6
sr2:Q7
sr2:GND
sr2:Q7S
sr2:MR
sr2:SHCP
sr2:STCP
sr2:OE
sr2:DS
sr2:Q0
sr2:VCC
sevseg1:COM.1
sevseg1:COM.2
sevseg1:A
sevseg1:B
sevseg1:C
sevseg1:D
sevseg1:E
sevseg1:F
sevseg1:G
sevseg1:DP
sevseg2:COM.1
sevseg2:COM.2
sevseg2:A
sevseg2:B
sevseg2:C
sevseg2:D
sevseg2:E
sevseg2:F
sevseg2:G
sevseg2:DP
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
gnd1:GND
gnd2:GND
gnd3:GND
sw1:1
sw1:2
sw1:3
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
gnd4:GND
bz1:1
bz1:2