- Labornetzteil AliExpress         
Seite 12 von 15 ErsteErste ... 21011121314 ... LetzteLetzte
Ergebnis 111 bis 120 von 145

Thema: Tips zum Umbau von ferngesteuert auf selbst fahrend für mein Roboter

  1. #111
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Anzeige

    Praxistest und DIY Projekte
    Klar, das Ampel Beispiel ist ok.
    Ich würde aber alternativ
    #define LEDPIN_ROT 1
    #define LEDPIN_ORANGE 2
    #define LEDPIN_GRUEN 3
    (Großbuchstaben) empfehlen, weil es sich hier um Konstanten handelt. Kein Muss, aber guter Stil.

  2. #112
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    Okay, Konstanten das Wort hat mir gefehlt ....

    also LED oder Button Pins sind Konstanten! und Das andere Variablen - Global oder Lokal.

    Ich wollte e schon Fragen, was zwischen den beiden Unterschiedlichen Schreibweisen der unterschied ist!??

    int LEDPIN_ROT = 1; und #define LEDPIN_ROT 1

    ich hab schon bemerkt immer wenn eine Library im Spiel ist also, NEW PING.h oder Servo.h wird das gerne gemacht!
    Hat das einen bestimmten Grund oder einen bestimmten Vorteil?

    Wobei es ja auch: int LEDPIN_ROT und const int LEDPIN_ROT gibt also wenn die Konstante nicht geändert werden soll.

    Wie macht man das dann mit dem #define wenn man sie nicht ändern darf oder ist das schon von Anfang an gegeben?
    Meine Homepage www.belagra.de

  3. #113
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    'Nerdmütze aufsetzen'
    #define ist eine Präprozessor-Direktive (wie alle Befehle, die mit '#' beginnen). Bevor der Kompiler den Quelltext in Maschinencode übersetzt, ist der Präprozessor am Start. Der 'klebt' zuerst alle Quelltextteile zusammen, sofern mit #include andere Teile integriert werden sollen. Also bastelt erstmal einen Gesamtquelltext. Gleichzeitig werden auch alle '#define-Begriffe', die im Quelltext vorkommen ersetzt. Also z.B. wo LEDPIN_ROT steht, wird dies mit einer 1 ersetzt.

    'const int' arbeitet anders, weil noch eine Typenprüfung stattfindet. Also z.B. würde 'const int zahl = 17.44;' eine Fehlermeldung provozieren, weil hier eine Gleitkommazahl als Ganzzahl definiert werden soll. Normalerweise sollte z.B. 'const int zahl = 8;' vom Optimierer des Kompilers ebenso direkt in Maschinencode geschrieben werden, so dass effektiv außer der Typprüfung kein Unterschied zwischen beiden Schreibweisen vorhanden ist.

    'Nerdmütze wieder absetzen'
    Kurz: Beide Definitionen sind sich sehr ähnlich.

  4. #114
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    grins okay - danke für die Erklärung

    Also wie man es praktisch schreiben möchte, manchmal braucht man aber ja const int.
    Habs grade am mega Getestet mit dem AmpelCode, funktioniert mit den Tabs einwandfrei^^

    @ Sisor eine Frage, du hast doch mit bekommen, das ich meine 5 Sensoren mit der oder Abfrage, abfrage.

    Code:
    void loop()
    { 
      if(tempVORNE_MITTE < triggerDistanz || tempVORNE_RECHTS < triggerDistanz || tempRECHTS < triggerDistanz)
      {
        zurueck_LINKS();
      }
        else
      {
        vor();
      }
      
      if(tempVORNE_LINKS < triggerDistanz || tempLINKS < triggerDistanz)
      {
        zurueck_RECHTS();
      }
        else
      {
        vor();
      }
    }
    Wenn das alles verodert ist fragt er dann auch einen nach dem anderen ab? Nicht das ich mir mit den Echos in die Quere komme ???
    Also ned das der eine Sensor das Echo vom anderen Sensor abfragt!
    Meine Homepage www.belagra.de

  5. #115
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Ich sehe in deinem Quelltext überhaupt keine Abfrage der Ultraschall-Sensoren.

  6. #116
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    ja grins ....

    weil die in den Unterprogrammen stecken^^

    Code:
    void scan_VORNE_RECHTS()
    {
      int tempVORNE_RECHTS = VORNE_RECHTS.ping();
      int VORNE_RECHTS = tempVORNE_RECHTS / US_ROUNDTRIP_CM;
      if(VORNE_RECHTS == 0)
      {
        VORNE_RECHTS = MAX_DISTANCE;
      }
      delay(100);
    }
    Meine Homepage www.belagra.de

  7. #117
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    - Deine Funktion ist vom Typ void, liefert also keinen Wert zurück.
    - Dein Hauptprogramm ruft diese Funktion nie auf.

  8. #118
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    em stimmt, so klappt das wahrscheinlich nicht

    ja aber welche Funktion sollte es sonst sein? muss dann eine sein wo auch zurück gibt, hab aber auch gedacht das
    void zurück gib ....

    währe das dann z.b. " char" ??
    Geändert von Benny1989 (17.08.2014 um 20:42 Uhr)
    Meine Homepage www.belagra.de

  9. #119
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    -void bedeutet Leere, Nichts.
    -wozu das delay?
    -warum nicht einfach
    Code:
    void loop()
    { 
      int vm = VORNE_MITTE.ping_cm();
      int vr = VORNE_RECHTS.ping_cm();
      if(vm && vm < triggerDistanz  || vr && vr < triggerDistanz ...
      }
    Damit kannst du dir die Funktionen sparen.

    Um deine ursprüngliche Frage zu beantworten: Die US_Sensoren werden nacheinander abgefragt, und kommen sich nicht ins Gehege.
    Übrigens: Bei 70cm maximaler Distanz dauert ein ping-Funktionsaufruf etwa 2*0,7/340 s = 4 ms lang.

  10. #120
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    okay also so kann ich das auch machen, mit der separaten Funktion hab ich es halt etwas besser verstanden !

    Das heist ein US Sensor brauch 4ms für eine Messung?

    Ich glaub dir schon das dass so ist hab ich ja auch grad gelesen....
    Nur hab ich schon Beispiel Programme gesehen, wo die das auch mit "void" gemacht haben - komisch

    Ich hab zum Beispiel global Deklariert die Distanz und die Maximale Distanz:

    Code:
    int triggerDistanz = 70;
    int MAX_DISTANCE = 100;
    Brauch ich das halt dann noch trotzdem ?
    Weil ich würd gern vorerst das so mit den Unterprogrammen machen! Weil das es für mich verständlich bleibt!

    Du Sisor, hast ja weit aus mehr die Erfahrung und Kompetenz, wenn du mein Code schreiben würdest währe er wahrscheinlich nur 1/4 so groß wie
    jetzt. Das is das was ich gemeint hab, das ich es momentan noch so schreibe das ich es auch verstehe, aber es funktioniert immer besser!

    Also wenn ich das so lassen möchte und die Funktion " void scan_VORNE_RECHTS " bleiben soll - muss ich das void ersetzten nur durch welches?
    es gibt float() char() Byte() word() nur welches von denen gibt auch Aussagen zurück?
    Geändert von Benny1989 (17.08.2014 um 21:05 Uhr)
    Meine Homepage www.belagra.de

Seite 12 von 15 ErsteErste ... 21011121314 ... LetzteLetzte

Ähnliche Themen

  1. [ERLEDIGT] Umbau Roomba 581 von NiMh auf LiFePO4 (Lithium)... Testphase
    Von Zündfunke im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 15
    Letzter Beitrag: 25.07.2012, 17:02
  2. Antworten: 0
    Letzter Beitrag: 27.08.2011, 22:57
  3. Tchibo Reinigungsroboter Erfahrungen / Tips / Umbau
    Von joline im Forum Staubsaugerroboter / Reinigungs- und Rasenmähroboter
    Antworten: 123
    Letzter Beitrag: 02.02.2008, 22:59
  4. Antworten: 6
    Letzter Beitrag: 13.12.2007, 17:03
  5. umbau vom lego controllcenter zum steuergeräz für roboter
    Von leonmortiba im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 5
    Letzter Beitrag: 21.09.2004, 13:49

Berechtigungen

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

12V Akku bauen