YourDuino: HandBat - handhållen ultraljud Radar genom att använda Arduino (13 / 13 steg)
Steg 13: Programvara skiss: (kopiera och klistra in i Arduino IDE) [Uppdaterad 1 på 4/20/14]
Du kan få den Arduino programvara skiss för HandBat nedan.
Viktig anmärkning: Du kommer att behöva ladda ner och installera två biblioteken i denna skiss:
- Biblioteket från Tim Eckel för Ultrasonic Sensor - https://code.google.com/p/arduino-new-ping/
- Bibliotek Från Tim Eckel för inte-motstridande toner - https://code.google.com/p/arduino-tone-ac/
Om du inte är bekant med att installera Arduino bibliotek, se hur man installerar bibliotek
Programvara skiss: Kopiera och klistra in Arduino IDE
/ * YourDuino projektet exempel: BatHand
-Handhållen SONAR Ranger för blinda användare / mörka navigering
-Gör ultraljud Ranging, utgångar toner för avstånd
-SE kommentarer "/ /" på varje rad nedan
-PIN-ANSLUTNINGAR:
-Ultraljud HC-S04 typ Sensor:
-Trigger stift 6
-Echo stift 11
-Piezo typ Signalgivare:
-10 (för bipolär starkare signal)
-9
-Stift 13 LED (byggt in Arduino/Yourduino styrelse)
-V1.04 03-29-14 Toninställningar
Frågor: terry * /
/ *---(Import behövs bibliotek)---* /
#include < NewPing.h > / / biblioteket från Tim Eckel för Ultrasonic Sensor
< en href = "https://code.google.com/p/arduino-new-ping/" > https://code.google.com/p/arduino-new-ping/ < /a >
#include < toneAC.h > / / bibliotek från Tim Eckel för inte-motstridande toner
< en href = "https://code.google.com/p/arduino-tone-ac/" > https://code.google.com/p/arduino-new-ping/ < /a >
/ *---(Deklarera konstanter och Pin nummer)---* /
#define TRIGGER_PIN 6 / / Arduino PIN-kod knuten till utlösa pin på ultrasonic sensor.
#define ECHO_PIN 11 / / Arduino PIN-kod knuten till echo pin på ultrasonic sensor.
Obs: Signalgivare använder stift 9,10 (anges i toneAC bibliotek)
#define Pin13LED 13 / / inbyggd LED Arduino/YourDuino ombord
#define MAX_DISTANCE 300 / / Max avstånd vi vill skicka ping (i centimeter).
/ *---(Deklarera objekt)---* /
NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); NewPing inställning av stift och maximalt avstånd.
/ *---(Deklarera variabler)---* /
unsigned int oss; Uppmätta echo tid i mikrosekunder
unsigned int DistCM; Uppmätta avståndet i CM
void setup() / *** SETUP: kör en gång *** /
{
Serial.BEGIN(115200); Öppna seriell monitor på 115200 baud se ping resultat.
BeepQuality(1800,250); Välkommen beep
} //--(end setup)---
void loop() / *** LOOP: kör ständigt *** /
{
Delay(50); Vänta 50 ms mellan pingmeddelandena (ca 20 ping/SEK). 29ms bör vara den kortaste fördröjningen mellan pingar.
Oss = sonar.ping(); Skicka ping, ping tid i mikrosekunder (oss) att få.
DistCM = oss / US_ROUNDTRIP_CM; Beräkna avståndet i CM
Serial.Print ("Ping:");
Serial.Print(DistCM); skriva ut avståndet i CM (0 = utanför förutbestämd distans intervall)
Serial.println("cm");
---(Beräkna tonar frekvens och längd beroende på avstånd)---
om ((DistCM > 0) & & (DistCM < 25)) BeepQuality (2000,(DistCM * 10));
om ((DistCM > = 25) & & (DistCM < 100)) BeepQuality (1800,(DistCM * 4));
om ((DistCM > = 100) & & (DistCM < 200)) BeepQuality (1700, (DistCM));
om ((DistCM > = 200) || (DistCM == 0)) BeepQuality (1900, (20));
Kvittra när utanför intervallet
} //--(end huvudloop)---
/ *---(Förklara användaren skrivna funktioner)---* /
void BeepQuality (int Freq, int längd)
{
digitalWrite (Pin13LED, hög); Slå på lED
toneAC(Freq); Starta beep på önskad frekvens
Delay(duration); Lyssna på pip för önskad tid
toneAC(); Stoppa beep
om (Freq == 1900) delay(1000); Skilja utanför intervallet
digitalWrite (Pin13LED, låg); Stop ledde
}
//*********( THE END )***********