Étape 13 : Logiciel Sketch: (copier et coller dans IDE Arduino) [mise à jour 01:00 20/04/14]
Vous pouvez obtenir l’esquisse du logiciel Arduino pour HandBat ci-dessous.
Remarque importante : Vous devrez télécharger et installer les deux bibliothèques utilisées dans ce sketch :
- Bibliothèque de Tim Eckel pour capteur à ultrasons - https://code.google.com/p/arduino-new-ping/
- Bibliothèque De Tim Eckel non conflictuelles tonalités - https://code.google.com/p/arduino-tone-ac/
Si vous n’êtes pas familier avec l’installation des bibliothèques de l’Arduino, consultez Comment installer les bibliothèques
Logiciel Sketch : Copiez et collez dans IDE Arduino
/* YourDuino Project Example: BatHand - Hand-held SONAR Ranger for blind user / dark navigation - Does Ultrasonic Ranging, Outputs tones for distance - SEE the comments after "//" on each line below - PIN CONNECTIONS: - Ultrasonic HC-S04 Type Sensor: - Trigger pin 6 - Echo pin 11 - Piezo type Beeper: - 10 (For bipolar louder signal) - 9 - Pin 13 LED (Built into Arduino/Yourduino board) - V1.04 03-29-14 Tone settings Questions: terry */ /*-----( Import needed libraries )-----*/ #include <NewPing.h> // Library From Tim Eckel for Ultrasonic Sensor // <a href="https://code.google.com/p/arduino-new-ping/"> https://code.google.com/p/arduino-new-ping/ </a> #include <toneAC.h> // Library From Tim Eckel for non-conflicting tones // <a href="https://code.google.com/p/arduino-tone-ac/"> https://code.google.com/p/arduino-new-ping/ </a> /*-----( Declare Constants and Pin Numbers )-----*/ #define TRIGGER_PIN 6 // Arduino pin tied to trigger pin on the ultrasonic sensor. #define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor. //NOTE: Beeper uses pins 9,10 (Set within toneAC library) #define Pin13LED 13 // Built-in LED on Arduino/YourDuino board #define MAX_DISTANCE 300 // Maximum distance we want to ping for (in centimeters). /*-----( Declare objects )-----*/ NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance. /*-----( Declare Variables )-----*/ unsigned int uS; // Measured echo time in MicroSeconds unsigned int DistCM; // Measured distance in CM void setup() /****** SETUP: RUNS ONCE ******/ { Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results. BeepQuality(1800,250); // Welcome beep }//--(end setup )--- void loop() /****** LOOP: RUNS CONSTANTLY ******/ { delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings. uS = sonar.ping(); // Send ping, get ping time in microseconds (uS). DistCM = uS / US_ROUNDTRIP_CM; // Calculate distance in CM Serial.print("Ping: "); Serial.print(DistCM); // print Distance in CM (0 = outside set distance range) Serial.println("cm"); //-----( Calculate Tone frequency and length depending on distance )-------- if ( (DistCM > 0) && (DistCM < 25 ) ) BeepQuality(2000,(DistCM * 10)); if ( (DistCM >= 25) && (DistCM < 100) ) BeepQuality(1800,(DistCM * 4 )); if ( (DistCM >= 100) && (DistCM < 200) ) BeepQuality(1700,(DistCM )); if ( (DistCM >= 200) || (DistCM == 0) ) BeepQuality(1900,(20 )); // Chirp when out of range }//--(end main loop )--- /*-----( Declare User-written Functions )-----*/ void BeepQuality(int Freq, int Duration) { digitalWrite(Pin13LED, HIGH); // Turn on lED toneAC(Freq); // Start the beep at the desired frequency delay(Duration); // Listen to the beep for desired time toneAC(); // Stop beep if (Freq == 1900) delay(1000); // Distinguish Out Of Range digitalWrite(Pin13LED, LOW); // Stop lED } //*********( THE END )***********