{"id":1450,"date":"2024-09-10T06:05:35","date_gmt":"2024-09-10T04:05:35","guid":{"rendered":"https:\/\/labopothier.com\/?p=1450"},"modified":"2025-10-02T14:42:35","modified_gmt":"2025-10-02T12:42:35","slug":"activites-arduino-ultrason-radar-de-recul-avec-codes-arduino-et-codes-python-equivalent","status":"publish","type":"post","link":"https:\/\/labopothier.com\/index.php\/2024\/09\/10\/activites-arduino-ultrason-radar-de-recul-avec-codes-arduino-et-codes-python-equivalent\/","title":{"rendered":"ACTIVITES ARDUINO ULTRASON : radar de recul (avec codes Arduino et codes Python \u00e9quivalent)"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\"><strong>ACTIVITE 1 ULTRASON radar de recul :&nbsp;<\/strong> <strong>mesure simple de distance avec un module ultrason HC-SR04<\/strong><\/h4>\n\n\n\n<p><strong>Remarque<\/strong>: Ces activit\u00e9s peuvent \u00eatre programm\u00e9es avec le langage d&rsquo;Arduino mais aussi en Python. Pour cela, il faut utiliser Nanpy (voir l&rsquo;article <a rel=\"noreferrer noopener\" href=\"https:\/\/labopothier.com\/index.php\/2020\/04\/04\/programmer-en-python-pour-la-carte-arduino\/\" target=\"_blank\">Programmer-en-python-pour-la-carte-arduino<\/a>)<\/p>\n\n\n\n<p><strong>Objectif<\/strong> : mesurer une distance \u00e0 partir de la mesure du temps de parcours d\u2019une onde ultrasonore qui se r\u00e9fl\u00e9chit sur un obstacle.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"387\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/radar1-1024x387-1.png\" alt=\"\" class=\"wp-image-1840\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/radar1-1024x387-1.png 1024w, https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/radar1-1024x387-1-300x113.png 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/radar1-1024x387-1-768x290.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre title=\"Avec le langage Arduino\" class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp line-numbers\">\/* \n * Code d'exemple pour un capteur \u00e0 ultrasons HC-SR04.\n *\/\n\n\/* Constantes pour les broches *\/\nconst byte TRIGGER_PIN = 13; \/\/ Broche TRIGGER\nconst byte ECHO_PIN = 12;    \/\/ Broche ECHO\n\n\n \n\/* Constantes pour le timeout *\/\nconst unsigned long MEASURE_TIMEOUT = 25000UL; \/\/ 25ms = ~8m \u00e0 340m\/s, temps limite pour la mesure de distance\n\n\/* Vitesse du son dans l'air en mm\/us *\/\nconst float SOUND_SPEED = 340.0 \/ 1000;\n\n\/** Fonction setup() *\/\nvoid setup() {\n   \n  \/* Initialise le port s\u00e9rie *\/\n  Serial.begin(9600);\n   \n  \/* Initialise les broches *\/\n  pinMode(TRIGGER_PIN, OUTPUT);\n  digitalWrite(TRIGGER_PIN, LOW); \/\/ La broche TRIGGER doit \u00eatre \u00e0 LOW au repos\n  pinMode(ECHO_PIN, INPUT);\n\n\/\/  \n}\n \n\/** Fonction loop() *\/\nvoid loop() {\n  \n  \/* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10\u00b5s sur la broche TRIGGER *\/\n  digitalWrite(TRIGGER_PIN, HIGH);\n  delayMicroseconds(10);\n  digitalWrite(TRIGGER_PIN, LOW);\n  \n  \/* 2. Mesure le temps en us entre l'envoi de l'impulsion ultrasonique et son \u00e9cho (si il existe) *\/\n  long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);\n \/* REMARQUE. , si aucune mesure n'appara\u00eet, d\u00e9sactiver le timeout, en d\u00e9sactivant la ligne pr\u00e9c\u00e9dente et en activant celle ci :*\/\n \/\/long measure = pulseIn(ECHO_PIN, HIGH); \n   \n   \n  \/* 3. Calcul de la distance \u00e0 partir du temps mesur\u00e9 *\/\n  float distance_mm = measure \/ 2.0 * SOUND_SPEED;\n  \n\n  \n  \/* Affiche les r\u00e9sultats en mm *\/\n\n  Serial.print(\"distance en mm : \");\n  Serial.print(distance_mm);\n  Serial.println(\" mm, \");\n\n\/\/   \n  \/* D\u00e9lai d'attente pour \u00e9viter d'afficher trop de r\u00e9sultats \u00e0 la seconde *\/\n  delay(500);\n}<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Remarque :<\/strong><\/p>\n\n\n\n<p> Il semblerait que depuis quelques temps, le TIMEOUT emp\u00eache la mesure de se faire. Dans ce cas il faudrait d\u00e9sactiver ce timeout en rempla\u00e7ant la ligne :<\/p>\n\n\n\n<p><code><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">  long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);<\/code><\/code><\/p>\n\n\n\n<p>par :<\/p>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">  long measure = pulseIn(ECHO_PIN, HIGH);<br><\/code><\/p>\n<\/blockquote>\n\n\n\n<pre title=\"Avec le langage Python (en utilisant Nanpy)\" class=\"wp-block-code\"><code lang=\"python\" class=\"language-python line-numbers\"># -*- coding: utf-8 -*-\n\"\"\"\nRadar de recul :\nOn veut mesurer une distance \u00e0 partir de la mesure du temps de parcours d\u2019une onde ultrasonore qui se r\u00e9fl\u00e9chit sur un obstacle. On utiliser pour cela un module ultrason HC-SR04\n\"\"\"\n\n#########################################  IMPORTATION DES BIBLIOTHEQUES ET MODULES  #############################################################################\n\n\nfrom nanpy import ArduinoApi    # importation des biblioth\u00e8ques pour communication avec Arduino\nfrom nanpy import SerialManager\nfrom nanpy import Ultrasonic  # pour utiliser le module HC-SR04\nfrom time import sleep   # pour faire des \"pauses\" dans l'ex\u00e9cution du programme\n\n\n#########################################  COMMUNICATION AVEC CARTE ARDUINO ET DEFINITION DES BROCHES ET VARIABLES  #######################################################\n\n\nconnection = SerialManager(device='COM9') #indiquer le bon port de la carte Arduino, ici COM9\n\na = ArduinoApi(connection=connection)  #connection \u00e0 la carte Arduino, on pr\u00e9c\u00e9dera chaque instruction Arduino par a. (exemple a.pinMode(2,a.OUTPUT)\n\ncapteurUltraSon = Ultrasonic(echo=12, trig=13, useInches=False, connection=connection) # Branchements du capteur\n\n#########################################   CODE ARDUINO  EN LANGAGE PYTHON    #################################################################################\n\nwhile True :\n\n    # Mesure de la dur\u00e9e pris par le son pour faire l'Aller\/Retour entre le capteur US et l'obstacle.\n    duree_\u00b5s = capteurUltraSon.get_duration()\n    duree_s  = duree_\u00b5s\/1000000.0             # Conversion \u00b5s en s\n    print ('dur\u00e9e aller retour = ',duree_s)\n\n    VITESSE_SON = 340.0                    #vitesse du son dans l'air en m\/s\n    distanceAllerRetour_s = VITESSE_SON * duree_s;\n    distance_m = distanceAllerRetour_s \/ 2\t#Distance jusqu'a l'obstacle.\n\n\n    print ('distance en m = ', distance_m)\n    sleep(0.5)\n<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>ACTIVITE 1bis ULTRASON radar de recul :&nbsp;activit\u00e9 1 avec alertes LED couleurs diff\u00e9rentes selon distance<\/strong><\/h4>\n\n\n\n<p><strong>Objectif<\/strong> : Faire clignoter des LED de couleurs diff\u00e9rentes (rouge, orange, verte) selon la position de l\u2019obstacle par rapport au capteur US. On utilise des r\u00e9sistances de protection de 220 \u03a9.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Zone verte : entre 30 cm et 50 cm<\/li>\n\n\n\n<li>Zone orange : entre 10 cm et 30 cm<\/li>\n\n\n\n<li>Zone rouge : moins de 10 cm<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"398\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/radar2-1024x398.png\" alt=\"\" class=\"wp-image-320\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/radar2-1024x398.png 1024w, https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/radar2-300x117.png 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/radar2-768x298.png 768w, https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/radar2.png 1138w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Bonus<\/strong> : Faire clignoter les LED plus rapidement quand l\u2019obstacle se rapproche !<\/p>\n\n\n\n<pre title=\"Avec le langage Arduino\" class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp line-numbers\">\/* \n * Code d'exemple pour un capteur \u00e0 ultrasons HC-SR04 avec alertes LED.\n *\/\n\n\/* Constantes pour les broches *\/\nconst byte TRIGGER_PIN = 13; \/\/ Broche TRIGGER\nconst byte ECHO_PIN = 12;    \/\/ Broche ECHO\nconst byte LED_verte = 8; \/\/ broches pour les LED \nconst byte LED_orange = 9;\nconst byte LED_rouge = 10;\n\n\n\n \n\/* Constantes pour le timeout *\/\nconst unsigned long MEASURE_TIMEOUT = 25000UL; \/\/ 25ms = ~8m \u00e0 340m\/s, temps limite pour la mesure de distance\n\n\/* Vitesse du son dans l'air en mm\/us *\/\nconst float SOUND_SPEED = 340.0 \/ 1000;\n\n\/** Fonction setup() *\/\nvoid setup() {\n   \n  \/* Initialise le port s\u00e9rie *\/\n  Serial.begin(9600);\n   \n  \/* Initialise les broches *\/\n  pinMode(TRIGGER_PIN, OUTPUT);\n  digitalWrite(TRIGGER_PIN, LOW); \/\/ La broche TRIGGER doit \u00eatre \u00e0 LOW au repos\n  pinMode(ECHO_PIN, INPUT);\n  pinMode (LED_verte, OUTPUT); \/\/ On d\u00e9clare les broches des LED et buzzer comme sorties\n  pinMode (LED_orange, OUTPUT);\n  pinMode (LED_rouge, OUTPUT);\n\/\/  \n}\n \n\/** Fonction loop() *\/\nvoid loop() {\n  \n  \/* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10\u00b5s sur la broche TRIGGER *\/\n  digitalWrite(TRIGGER_PIN, HIGH);\n  delayMicroseconds(10);\n  digitalWrite(TRIGGER_PIN, LOW);\n  \n  \/* 2. Mesure le temps en us entre l'envoi de l'impulsion ultrasonique et son \u00e9cho (si il existe) *\/\n  long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);\n   \n  \/* 3. Calcul de la distance \u00e0 partir du temps mesur\u00e9 *\/\n  float distance_mm = measure \/ 2.0 * SOUND_SPEED;\n  \n \/\/ zone pour laquelle la LED verte clignote \nif ((distance_mm &lt; 500.0)and (distance_mm &gt; 300.0)) {\ndigitalWrite (LED_verte, HIGH); \/\/la LED s'allume pendant 1 s et s'\u00e9teint pendant 0,5 s\ndelay(1000);\ndigitalWrite (LED_verte,LOW);\ndelay (500);\n }\n \n\/\/zone pour laquelle la LED orange clignote \nif ((distance_mm &lt; 300.0) and (distance_mm &gt; 100.0)) { \/\/la LED s'allume pendant 0,5 s et s'\u00e9teint pendant 0,25 s\ndigitalWrite (LED_orange, HIGH); \ndelay(500);\ndigitalWrite (LED_orange,LOW);\ndelay (250);\n}\n\n\/\/zone pour laquelle la LED rouge clignote\n if (distance_mm &lt; 100.0) { \/\/la LED s'allume pendant 0,1 s et s'\u00e9teint pendant 0,05 s\ndigitalWrite (LED_rouge, HIGH); \ndelay(100);\ndigitalWrite (LED_rouge,LOW);\ndelay (50);\n\n }\n\n\/\/ sinon il ne se passe rien ... \nelse {\n  digitalWrite (LED_verte,LOW);\n  digitalWrite (LED_orange,LOW);\n  digitalWrite (LED_rouge,LOW);\n  delay (50);\n  \n}\n    \n  \n  \/* Affiche les r\u00e9sultats en mm*\/\n \n  Serial.print(\"distance en mm : \");\n  Serial.print(distance_mm);\n  Serial.println(\" mm, \");\n\n\/\/   \n  \/* D\u00e9lai d'attente pour \u00e9viter d'afficher trop de r\u00e9sultats \u00e0 la seconde *\/\n  delay(500);\n}<\/code><\/pre>\n\n\n\n<pre title=\"Avec Python (en utilisant Nanpy)\" class=\"wp-block-code\"><code lang=\"python\" class=\"language-python line-numbers\"># -*- coding: utf-8 -*-\n\"\"\"\nRadar de recul avec LED d'alerte:\nOn veut mesurer une distance \u00e0 partir de la mesure du temps de parcours d\u2019une onde ultrasonore qui se r\u00e9fl\u00e9chit sur un obstacle. On utiliser pour cela un module ultrason HC-SR04\nOn fera clignoter des LED de couleurs diff\u00e9rentes (rouge, orange, verte) selon la position de l\u2019obstacle par rapport au capteur US, de plus en pus vite selon la zone.\nZone verte : entre 30 cm et 50 cm\nZone orange : entre 10 cm et 30 cm\nZone rouge : moins de 10 cm\n\n\"\"\"\n#########################################  IMPORTATION DES BIBLIOTHEQUES ET MODULES  #############################################################################\n\n\n\nfrom nanpy import ArduinoApi    # importation des biblioth\u00e8ques pour communication avec Arduino\nfrom nanpy import SerialManager\nfrom nanpy import Ultrasonic  # pour utiliser le module HC-SR04\nfrom time import sleep   # pour faire des \"pauses\" dans l'ex\u00e9cution du programme\n\n\n\n#########################################  COMMUNICATION AVEC CARTE ARDUINO ET DEFINITION DES BROCHES ET VARIABLES  #######################################################\n\n\nconnection = SerialManager(device='COM9') #indiquer le bon port de la carte Arduino\n\na = ArduinoApi(connection=connection)  #connection \u00e0 la carte Arduino, on pr\u00e9c\u00e9dera chaque instruction Arduino par a. (exemple a.pinMode(2,a.OUTPUT)\n\ncapteurUltraSon = Ultrasonic(echo=12, trig=13, useInches=False, connection=connection) # branchement des broches du capteur.\n\nLED_verte = 8  #broches pour les LED (montage en s\u00e9rie avec une r\u00e9sistance de 220 ohms)\nLED_orange = 9\nLED_rouge = 10\na.pinMode(LED_verte,a.OUTPUT) #ces broches sont d\u00e9clar\u00e9es comme sorties\na.pinMode(LED_orange,a.OUTPUT)\na.pinMode(LED_rouge,a.OUTPUT)\n\n\n#########################################   CODE ARDUINO  EN LANGAGE PYTHON    #################################################################################\n\nwhile True :\n\n    # Mesure de la dur\u00e9e pris par le son pour faire l'Aller\/Retour entre le capteur US et l'obstacle.\n    duree_\u00b5s = capteurUltraSon.get_duration()\n    duree_s  = duree_\u00b5s\/1000000.0             # Conversion \u00b5s en s\n    print ('dur\u00e9e aller retour = ',duree_s)\n\n    VITESSE_SON = 340.0                    #vitesse du son dans l'air en m\/s\n    distanceAllerRetour_s = VITESSE_SON * duree_s;\n    distance_m = distanceAllerRetour_s \/ 2\t# Distance jusqu'a l'obstacle.\n    print ('distance en m = ', distance_m)\n\n\n    if distance_m &lt;  0.5 and distance_m &gt; 0.3 : #zone pour laquelle la LED verte clignote\n\n        a.digitalWrite (LED_verte, a.HIGH) #la LED s'allume pendant 1 s et s'\u00e9teint pendant 0,1 s\n        sleep(1)\n        a.digitalWrite (LED_verte,a.LOW)\n        sleep (0.1)\n\n\n\n\n    if distance_m &lt; 0.3 and distance_m &gt; 0.1: #zone pour laquelle la LED orange clignote\n\n        a.digitalWrite (LED_orange, a.HIGH); #la LED s'allume pendant 0,1 s et s'\u00e9teint pendant 0,01 s\n        sleep(0.1)\n        a.digitalWrite (LED_orange,a.LOW)\n        sleep (0.01)\n\n\n\n    if distance_m &lt; 0.1: #zone pour laquelle la LED rouge clignote\n\n        a.digitalWrite (LED_rouge,a.HIGH) #la LED s'allume pendant 0,05 s et s'\u00e9teint pendant 0,005 s\n        sleep (0.05)\n        a.digitalWrite (LED_rouge,a.LOW)\n        sleep (0.005)\n\n\n\n\n    sleep(0.5)\n<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>ACTIVITE 1ter ULTRASON radar de recul :&nbsp;activit\u00e9 1 avec alertes LED + buzzer<\/strong><\/h4>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Objectif<\/strong> : Idem activit\u00e9 1bis avec buzzer qui \u00e9met des bips de plus en plus rapides et de plus en plus aigus quand l\u2019obstacle se rapproche<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Zone verte : entre 30 cm et 50 cm, buzzer \u00e0 440 Hz<\/li>\n\n\n\n<li>Zone orange : entre 10 cm et 30 cm, buzzer \u00e0 880 Hz<\/li>\n\n\n\n<li>Zone rouge : moins de 10 cm, buzzer \u00e0 880 Hz<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"440\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/radar3-1024x440.png\" alt=\"\" class=\"wp-image-334\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/radar3-1024x440.png 1024w, https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/radar3-300x129.png 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/radar3-768x330.png 768w, https:\/\/labopothier.com\/wp-content\/uploads\/2020\/04\/radar3.png 1127w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre title=\"Avec le langage Arduino\" class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp line-numbers\">\/* \n * Code d'exemple pour un capteur \u00e0 ultrasons HC-SR04 avec alertes LED et buzzer.\n *\/\n\n\/* Constantes pour les broches *\/\nconst byte TRIGGER_PIN = 13; \/\/ Broche TRIGGER\nconst byte ECHO_PIN = 12;    \/\/ Broche ECHO\nconst byte LED_verte = 8; \/\/ broches pour les LED et le buzzer\nconst byte LED_orange = 9;\nconst byte LED_rouge = 10;\nconst byte buzzer = 11;\n\n\n\n \n\/* Constantes pour le timeout *\/\nconst unsigned long MEASURE_TIMEOUT = 25000UL; \/\/ 25ms = ~8m \u00e0 340m\/s, temps limite pour la mesure de distance\n\n\/* Vitesse du son dans l'air en mm\/us *\/\nconst float SOUND_SPEED = 340.0 \/ 1000;\n\n\/** Fonction setup() *\/\nvoid setup() {\n   \n  \/* Initialise le port s\u00e9rie *\/\n  Serial.begin(9600);\n   \n  \/* Initialise les broches *\/\n  pinMode(TRIGGER_PIN, OUTPUT);\n  digitalWrite(TRIGGER_PIN, LOW); \/\/ La broche TRIGGER doit \u00eatre \u00e0 LOW au repos\n  pinMode(ECHO_PIN, INPUT);\n  pinMode (LED_verte, OUTPUT); \/\/ On d\u00e9clare les broches des LED et buzzer comme sorties\n  pinMode (LED_orange, OUTPUT);\n  pinMode (LED_rouge, OUTPUT);\n  pinMode (buzzer, OUTPUT);\n\/\/  \n}\n \n\/** Fonction loop() *\/\nvoid loop() {\n  \n  \/* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10\u00b5s sur la broche TRIGGER *\/\n  digitalWrite(TRIGGER_PIN, HIGH);\n  delayMicroseconds(10);\n  digitalWrite(TRIGGER_PIN, LOW);\n  \n  \/* 2. Mesure le temps en us entre l'envoi de l'impulsion ultrasonique et son \u00e9cho (si il existe) *\/\n  long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);\n \/* REMARQUE. , si aucune mesure n'appara\u00eet, d\u00e9sactiver le timeout, en d\u00e9sactivant la ligne pr\u00e9c\u00e9dente et en activant celle ci :*\/   \n \/\/long measure = pulseIn(ECHO_PIN, HIGH); \n   \n  \/* 3. Calcul de la distance \u00e0 partir du temps mesur\u00e9 *\/\n  float distance_mm = measure \/ 2.0 * SOUND_SPEED;\n  \n \/\/ zone pour laquelle la LED verte clignote , buzzer \u00e0 440 Hz\nif ((distance_mm &lt; 500.0)and (distance_mm &gt; 300.0)) {\ndigitalWrite (LED_verte, HIGH); \/\/la LED s'allume pendant 1 s et s'\u00e9teint pendant 0,5 s\ntone (buzzer,440);  \/\/buzzer \u00e0 440 Hz\ndelay(1000);\ndigitalWrite (LED_verte,LOW);\nnoTone (buzzer);\ndelay (500);\n }\n \n\/\/zone pour laquelle la LED orange clignote , buzzer \u00e0 880 Hz\nif ((distance_mm &lt; 300.0) and (distance_mm &gt; 100.0)) { \/\/la LED s'allume pendant 0,5 s et s'\u00e9teint pendant 0,25 s\ndigitalWrite (LED_orange, HIGH); \ntone (buzzer,880); \/\/buzzer \u00e0 880 Hz\ndelay(500);\ndigitalWrite (LED_orange,LOW);\nnoTone (buzzer);\ndelay (250);\n}\n\n\/\/zone pour laquelle la LED rouge clignote , buzzer \u00e0 1760 Hz\n if (distance_mm &lt; 100.0) { \/\/la LED s'allume pendant 0,1 s et s'\u00e9teint pendant 0,05 s\ndigitalWrite (LED_rouge, HIGH); \ntone (buzzer,1760);\/\/ buzzer \u00e0 1760 Hz\ndelay(100);\ndigitalWrite (LED_rouge,LOW);\nnoTone (buzzer);\ndelay (50);\n\n }\n\n\/\/ sinon il ne se passe rien ... \nelse {\n  digitalWrite (LED_verte,LOW);\n  digitalWrite (LED_orange,LOW);\n  digitalWrite (LED_rouge,LOW);\n  delay (50);\n  \n}\n    \n  \n  \/* Affiche les r\u00e9sultats en mm*\/\n\n  Serial.print(\"distance en mm : \");\n  Serial.print(distance_mm);\n  Serial.println(\" mm, \");\n\n\/\/   \n  \/* D\u00e9lai d'attente pour \u00e9viter d'afficher trop de r\u00e9sultats \u00e0 la seconde *\/\n  delay(500);\n}<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Remarque :<\/strong><\/p>\n\n\n\n<p> Il semblerait que depuis quelques temps, le TIMEOUT emp\u00eache la mesure de se faire. Dans ce cas il faudrait d\u00e9sactiver ce timeout en rempla\u00e7ant la ligne :<\/p>\n\n\n\n<p><code><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">  long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);<\/code><\/code><\/p>\n\n\n\n<p>par :<\/p>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">  long measure = pulseIn(ECHO_PIN, HIGH);<br><\/code><\/p>\n<\/blockquote>\n<\/blockquote>\n\n\n\n<pre title=\"Avec Python (en utilisant Nanpy)\" class=\"wp-block-code\"><code lang=\"python\" class=\"language-python line-numbers\"># -*- coding: utf-8 -*-\n\"\"\"\nRadar de recul avec LED d'alerte:\nOn veut mesurer une distance \u00e0 partir de la mesure du temps de parcours d\u2019une onde ultrasonore qui se r\u00e9fl\u00e9chit sur un obstacle. On utiliser pour cela un module ultrason HC-SR04\nOn fera clignoter des LED de couleurs diff\u00e9rentes (rouge, orange, verte) selon la position de l\u2019obstacle par rapport au capteur US, de plus en pus vite selon la zone.\nUn buzzer \u00e9met des bips de plus en plus rapides et plus aigus qaund on s'approche de l'obstacle\nZone verte : entre 30 cm et 50 cm\nZone orange : entre 10 cm et 30 cm\nZone rouge : moins de 10 cm\n\n\"\"\"\n#########################################  IMPORTATION DES BIBLIOTHEQUES ET MODULES  #############################################################################\n\nfrom nanpy import ArduinoApi  # importation des biblioth\u00e8ques pour communication avec Arduino\nfrom nanpy import SerialManager\nfrom nanpy import Ultrasonic # pour utiliser le module HC-SR04\nfrom time import sleep  # pour faire des \"pauses\" dans l'ex\u00e9cution du programme\n\n\n#########################################  COMMUNICATION AVEC CARTE ARDUINO ET DEFINITION DES BROCHES ET VARIABLES  #######################################################\n\nconnection = SerialManager(device='COM7') #indiquer le bon port de la carte Arduino\n\na = ArduinoApi(connection=connection)  #connection \u00e0 la carte Arduino, on pr\u00e9c\u00e9dera chaque instruction Arduino par a. (exemple a.pinMode(2,a.OUTPUT)\n\ncapteurUltraSon = Ultrasonic(echo=12, trig=13, useInches=False, connection=connection) # Branchements du capteur\n\nLED_verte = 8 #broches pour les LED (montage en s\u00e9rie avec une r\u00e9sistance de 220 ohms)\nLED_orange = 9\nLED_rouge = 10\nbuzzer = 11 # broche pour le buzzer\na.pinMode(LED_verte,a.OUTPUT) #ces broches sont d\u00e9clar\u00e9es comme sorties\na.pinMode(LED_orange,a.OUTPUT)\na.pinMode(LED_rouge,a.OUTPUT)\na.pinMode (buzzer,a.OUTPUT)\n\n#########################################   CODE ARDUINO  EN LANGAGE PYTHON    #################################################################################\n\nwhile True :\n\n    # Mesure de la dur\u00e9e pris par le son pour faire l'Aller\/Retour entre le capteur US et l'obstacle.\n    duree_\u00b5s = capteurUltraSon.get_duration()\n    duree_s  = duree_\u00b5s\/1000000.0             # Conversion \u00b5s en s\n    print ('dur\u00e9e aller retour = ',duree_s)\n\n    VITESSE_SON = 340.0                    #vitesse du son dans l'air en m\/s\n    distanceAllerRetour_s = VITESSE_SON * duree_s;\n    distance_m = distanceAllerRetour_s \/ 2\t#Distance jusqu'a l'obstacle.\n    print ('distance en m = ', distance_m)\n\n\n    if distance_m &lt;  0.5 and distance_m &gt; 0.3 : #zone pour laquelle la LED verte clignote , buzzer \u00e0 440 Hz\n\n        a.digitalWrite (LED_verte, a.HIGH)  #la LED s'allume pendant 1 s et s'\u00e9teint pendant 0,5 s\n        a.tone(buzzer,440)                    #buzzer \u00e0 440 Hz\n        sleep(1)\n        a.digitalWrite (LED_verte,a.LOW)\n        a.noTone(buzzer)\n        sleep (0.5)\n\n\n\n\n\n    if distance_m &lt; 0.3 and distance_m &gt; 0.1: #zone pour laquelle la LED orange clignote , buzzer \u00e0 880 Hz\n\n        a.digitalWrite (LED_orange, a.HIGH) #la LED s'allume pendant 0,5 s et s'\u00e9teint pendant 0,25 s\n        a.tone(buzzer,880)                #buzzer \u00e0 880 Hz\n        sleep(0.5)\n        a.digitalWrite (LED_orange,a.LOW)\n        a.noTone(buzzer)\n        sleep (0.25)\n\n\n\n    if distance_m &lt; 0.1:  #zone pour laquelle la LED rouge clignote , buzzer \u00e0 1760 Hz\n\n        a.digitalWrite (LED_rouge,a.HIGH) #la LED s'allume pendant 0,1 s et s'\u00e9teint pendant 0,05 s\n        a.tone(buzzer,1760)            #buzzer \u00e0 1760 Hz\n        sleep (0.1)\n        a.digitalWrite (LED_rouge,a.LOW)\n        a.noTone(buzzer)\n        sleep (0.05)\n\n\n\n\n\n    sleep(0.5)\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>ACTIVITE 1 ULTRASON radar de recul :&nbsp; mesure simple de distance avec un module ultrason HC-SR04 Remarque: Ces activit\u00e9s peuvent \u00eatre programm\u00e9es avec le langage d&rsquo;Arduino mais aussi en Python. Pour cela, il faut utiliser Nanpy (voir l&rsquo;article Programmer-en-python-pour-la-carte-arduino) Objectif : mesurer une distance \u00e0 partir de la mesure du temps de parcours d\u2019une onde [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1572,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[7,10],"tags":[],"class_list":["post-1450","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microcontroleurs-et-python","category-programmer-une-carte-arduino-avec-python"],"_links":{"self":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/1450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/comments?post=1450"}],"version-history":[{"count":5,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/1450\/revisions"}],"predecessor-version":[{"id":1841,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/1450\/revisions\/1841"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/media\/1572"}],"wp:attachment":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/media?parent=1450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/categories?post=1450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/tags?post=1450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}