#include <Tone.h>
const int buttonPin = A4;
const int trigPin = A1;
const int echoPin = A3;
const int redled = A2;
const int yellowled = A7;
const int greenled = A5;
const int buzzerPin = A6;
int buttonState = 0;
const int dataPin = D9; /* DS */
const int clockPin = D7; /* SHCP */
const int latchPin = D8; /* STCP */
int distancedigit;
void displayDistance(int distance) {
byte abc[] = {
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B00111110, // 6
B11100000, // 7
B11111110, // 8
B11100110, // 9
};
}
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(redled, OUTPUT);
pinMode(yellowled, OUTPUT);
pinMode(greenled , OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
long distance = (duration / 58.0);
Serial.println("la distance est : ");
Serial.println(distance);
if (distance > 120.0 ) {
Serial.println("Distance > 120cm");
digitalWrite(greenled, HIGH);
digitalWrite(redled, LOW);
digitalWrite(yellowled, LOW);
} else if (30.0 < distance && distance < 120.0) {
Serial.println("Distance between 30 and 120 cm");
digitalWrite(redled, LOW);
digitalWrite(yellowled, HIGH);
digitalWrite(greenled, LOW);
int duration = map(distance , 30 , 120, 0, 1000);
tone(buzzerPin, 400);
delay(200);
Serial.print("Duration");
Serial.println(duration);
} else if (distance < 30.0) {
digitalWrite(redled, HIGH);
digitalWrite(yellowled, LOW);
digitalWrite(greenled, LOW);
tone(buzzerPin , 440 , 0);
}
}
distancedigit = distance / 100;
int distanceDigit1 = distancedigit / 10;
int distanceDigit2 = distancedigit % 10;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, abc[distanceDigit1]);
shiftOut(dataPin, clockPin, MSBFIRST, abc[distanceDigit2]);
digitalWrite(latchPin, HIGH);
delay(500);
displayDistance(distance);
}
Loading
st-nucleo-l031k6
st-nucleo-l031k6