const int LED=13; const int trigger=2; const int echo=3; void setup(){ pinMode(trigger,OUTPUT); // Broche pour activer la mesure (sortie) pinMode(echo,INPUT); // Broche pour lire la valeur (entrée) pinMode(LED,OUTPUT); } void loop(){ digitalWrite(trigger,LOW); delayMicroseconds(5); // Activer digitalWrite(trigger,HIGH); delayMicroseconds(10); digitalWrite(trigger,LOW); long duree=pulseIn(echo,HIGH); // Mesurer long distance=(duree/2)/29.1; if(distance<20) digitalWrite(LED,HIGH); // Réagir else digitalWrite(LED,LOW); delay(500); }
#include <avr/io.h> #include <util/delay.h> #define US_DDR DDRD #define US_PORT PORTD #define US_PIN PIND #define US_TRIGGER 2 #define US_ECHO 3 void sonar_init(void){ // Initialiser le sonar US_DDR |= (1<<US_TRIGGER); // Broche pour activer la mesure (sortie) US_DDR &= ~(1<<US_ECHO); // Broche pour lire la valeur (entrée) } uint32_t sonar_mesure(void){ // Mesurer une distance uint8_t statut=0; uint32_t temps=0; _delay_us(2); US_PORT |= (1<<US_TRIGGER); // Activer _delay_us(10); US_PORT &= ~(1 << US_TRIGGER); while(!statut){ while(US_PIN&(1<<US_ECHO)){ // Mesure la durée du signal haut temps++; statut=1; } } return disTime * 0.00862; // Conversion en cm }