// C++ code
// initialisation
#include <NewPing.h>
const int LED[]={3, 5, 6, 9, 10};
const int TriggerPin=12;
# define EchoPin 13
const int distance_max=300;
NewPing SR04(TriggerPin, EchoPin, distance_max);
const int buzzer=11;
void setup(){
// on définit les pins des LEDs en OUTPUT
for (int i=0 ; i<5 ; i+=1) {
pinMode(LED[i], OUTPUT);
}
pinMode(TriggerPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop(){
int Time;
int distance;
for(int i=0 ; i<5 ; i+=1){
distance = SR04.ping_cm();
Serial.print("distance=");
Serial.println(distance);
Time = map(distance, 0, 300, 5, 30);
clignote(LED[i], Time);
}
}
void clignote(int LED, int delai){
// augmente la luminosité
for (int i=0;i<255;i=i+10){
analogWrite(LED, i);
delay(delai);
}
// diminue la luminosité
for (int i=255; i>0; i=i-10) {
analogWrite(LED, i);
delay(delai);
}
digitalWrite(LED, LOW);
}
/////////////////////////////////////////
// Fonction mesurant la distance en cm //
/////////////////////////////////////////
long mesure(int triggerpin, int echopin){
// nettoie le trigger
pinMode(triggerpin, OUTPUT);
digitalWrite(triggerpin, LOW);
delayMicroseconds(2);
// positionne le trigger à HIGH pendant 10 microsecondes
digitalWrite(triggerpin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerpin, LOW);
// lit l'echoPin, le temps
// convertit en distance en cm (x0.017)
// et renvoie la valeur
float distance=0.017 * pulseIn(echopin, HIGH);
Serial.print("distance=");
Serial.println(distance);
int freq = map(distance, 0, 300, 5000, 100);
//tone(buzzer, freq, 500);
int time = map(distance, 0, 300, 5, 30);
Serial.print("time=");
Serial.println(time);
return time;
}