-         

Ergebnis 1 bis 4 von 4

Thema: Arduino HC-SRO4 Werte übergeben

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2014
    Beiträge
    8

    Arduino HC-SRO4 Werte übergeben

    Anzeige

    Hallo Leute,

    dies ist mein erster Beitrag hier und entdecke seid ein paar Tagen die Welt der Mikrocontroller.

    Folgenden Sketch habe ich auf meinem UNO-R3 an laufen.

    Code:
    int pingPin = 13;
    int inPin = 12;
     
    void setup() {
    Serial.begin(9600);
    }
     
    void loop()
    {
    // establish variables for duration of the ping,
    // and the distance result in inches and centimeters:
    long duration, inches, cm;
     
    // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
    // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
    pinMode(pingPin, OUTPUT);
    digitalWrite(pingPin, LOW);
    delayMicroseconds(2);
    digitalWrite(pingPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(pingPin, LOW);
     
    // The same pin is used to read the signal from the PING))): a HIGH
    // pulse whose duration is the time (in microseconds) from the sending
    // of the ping to the reception of its echo off of an object.
    pinMode(inPin, INPUT);
    duration = pulseIn(inPin, HIGH);
     
    // convert the time into a distance
    inches = microsecondsToInches(duration);
    cm = microsecondsToCentimeters(duration);
     
    Serial.println(cm, DEC);
     
    delay(100);
    }
     
    long microsecondsToInches(long microseconds)
    {
    // According to Parallax's datasheet for the PING))), there are
    // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
    // second).  This gives the distance travelled by the ping, outbound
    // and return, so we divide by 2 to get the distance of the obstacle.
    return microseconds / 74 / 2;
    }
     
    long microsecondsToCentimeters(long microseconds)
    {
    // The speed of sound is 340 m/s or 29 microseconds per centimeter.
    // The ping travels out and back, so to find the distance of the
    // object we take half of the distance travelled.
    return microseconds / 29 / 2;
    
    }
    jetzt verzweifel ich an der Fragestellung die Werte zu nutzen. Hierfür wollte ich eine LED an Pin 3 auf HIGH setzen wenn der Messwert unter 15cm fällt.

    Folgender Code fiel mir dazu ein.
    Code:
    if (digitalRead(inPin)<=435){ // 15cm * 29 microseconds per centimeter (sollte die Distanz beschreiben)
        digitalWrite(3, HIGH);
      } else {
        digitalWrite(3, LOW);
      }
    Diesen Code habe ich am Ende angefügt.

    Code:
    int pingPin = 13;
    int inPin = 12;
     
    void setup() {
    Serial.begin(9600);
    pinMode(3, OUTPUT);
    
    }
     
    void loop()
    {
    // establish variables for duration of the ping,
    // and the distance result in inches and centimeters:
    long duration, inches, cm;
     
    // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
    // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
    pinMode(pingPin, OUTPUT);
    digitalWrite(pingPin, LOW);
    delayMicroseconds(2);
    digitalWrite(pingPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(pingPin, LOW);
     
    // The same pin is used to read the signal from the PING))): a HIGH
    // pulse whose duration is the time (in microseconds) from the sending
    // of the ping to the reception of its echo off of an object.
    pinMode(inPin, INPUT);
    duration = pulseIn(inPin, HIGH);
     
    // convert the time into a distance
    inches = microsecondsToInches(duration);
    cm = microsecondsToCentimeters(duration);
     
    Serial.println(cm, DEC);
     
    delay(100);
    }
     
    long microsecondsToInches(long microseconds)
    {
    // According to Parallax's datasheet for the PING))), there are
    // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
    // second).  This gives the distance travelled by the ping, outbound
    // and return, so we divide by 2 to get the distance of the obstacle.
    return microseconds / 74 / 2;
    }
     
    long microsecondsToCentimeters(long microseconds)
    {
    // The speed of sound is 340 m/s or 29 microseconds per centimeter.
    // The ping travels out and back, so to find the distance of the
    // object we take half of the distance travelled.
    return microseconds / 29 / 2;
    
    if (digitalRead(inPin)<=435){  // 15cm * 29ms/cm
        digitalWrite(3, HIGH);
      } else {
        digitalWrite(3, LOW);
      }
    
    }
    Kann mir jemand Helfen mein Problem zu lösen?

    Dank in Voraus.

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.12.2008
    Ort
    Bad Ems
    Alter
    55
    Beiträge
    109
    Hallo,

    Du kannst nicht einfach den Wert digital einlesen, wie Du das hier: if (digitalRead(inPin)<=435) probiert hast, sondern Du musst die Laufzeit messen.

    Vielleicht willst Du Dir hier: http://www.elektronik-bastelkeller.de/wordpress/?p=504 mal durchlesen, wie der Sensor angeschlossen und benutzt wird. Am Ende des Sketches wird die Entfernung in Millimetern berechnet, da könntest Du Deine Abfrage einbauen.

    Gruß (und guten Rutsch),
    Ralf
    http://www.Elektronik-Bastelkeller.de - Elektronik und Mikrocontroller als Hobby

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.01.2014
    Beiträge
    398
    Blog-Einträge
    3
    Hast du diesen Sketch schon gesehen?

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2014
    Beiträge
    8
    Hi Schamann,
    Hi Sisor,

    danke für die schnelle Antwort.

    Sisor, so habe ich mir das vorgestellt. Ich verstehe es noch nicht ganz aber das kommt noch.

    Danke an beide.

Ähnliche Themen

  1. Array an Funktion übergeben
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 02.05.2013, 22:23
  2. mehrdimensionale arrays übergeben
    Von Roboman93 im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 20.06.2008, 14:06
  3. Register übergeben
    Von Christoph2 im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 22.02.2008, 23:22
  4. Tasterwerte an Hyperterminal übergeben
    Von Thraxas im Forum Asuro
    Antworten: 54
    Letzter Beitrag: 21.11.2007, 19:47
  5. Von µC an PHP Werte übergeben
    Von EagleStar im Forum C - Programmierung (GCC u.a.)
    Antworten: 12
    Letzter Beitrag: 11.12.2006, 10:12

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •