- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 7 von 15 ErsteErste ... 56789 ... LetzteLetzte
Ergebnis 61 bis 70 von 145

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

  1. #61
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.210
    Anzeige

    Praxistest und DIY Projekte
    Man kann die Trigger-Pins zusammen legen-das _kann_ funktionieren.
    Vorteil: es spart Pins (grad nen Uno hat ja nicht so üppig viele).
    Der Haken: es _kann_ passieren, dass die Sensoren dann das Echo der anderen empfangen-und die Entfernungen nicht stimmen. Bei guter Anordnung gehts, bei ungünstiger nicht.
    Ausserdem sollte man aufpassen,dass man den Pin, wenn man viele Trigger an einen hängt, nich überlastet...so ganz ohne bisschen Strom gehn die auch nicht.
    Die Echo-Pins sollte man unbedingt getrennt hernehmen, sonst merkt man ja gradenoch "vor irgendeinem der Sensoren könnte was sein"- ziemlich nutzlos.
    Man kann die hc-sr04 auch umbauen, dann ist Echo und Trigger auf einem Pin möglich-hab ich aber selber noch nicht ausprobiert.

    Zur If-Anweisung: dazu gibts dann auch noch die else(), und die else if() auch kann man if()`s beliebig ineinander verschachteln, und in manchen Fällen fährt man mit switch() besser.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  2. #62
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    also das mit den #define hab ich hinbekommen, also den Code für meine 5 Sensoren ausgelegt!

    Nur geht es wie gesagt im loop Teil um die IF Anweisung:

    Code:
    void loop()
    {
      scan_FRONT_MIDDLE();                                   // Abstand Messen
      distance_FRONT_MIDDLE = distance;                      // Distanz Vorne = Abstand
      if(distance_FRONT_MIDDLE < triggerDistance)            // Wenn kleiner als vorgegeben dann reagieren
      {
        backward();                              // Zurück fahren
      }
        else
      {
        vorward();                               // Weiter nach Vorne fahren
      }
    }
    So siehts aus wenn ich ein Sensor hab bzw einmal scan_FRONT_MIDDLE abfrage,
    jetzt hab ich aber noch :

    void scan_FRONT_RIGHT()
    void scan_FRONT_LEFT()
    void scan_RIGHT()
    void scan-LEFT()

    und soll ja so sein das er zb im abstand von 50ms die einzelnen scan´s abfragt ..... so währe es doch richtig oder ?
    ein scan nach dem anderen abfragen ?

    - - - Aktualisiert - - -

    ja also ich habe jetzt in meinem Sketch so gemacht, das ich Trigger und Echo Pins habe, da ich ja ein Mega 2560 mit einem Sensor Shield habe,
    stört es mich nicht wenn ich 20 Pins für die 5 Ultraschall Sensoren belege!
    Meine Homepage www.belagra.de

  3. #63
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.210
    Sieht bissel wie nen BASIC-Programm aus.
    Macht aber nix.
    Ich würd es anders machen:

    fahre vor()
    {
    while(hindernisDa)
    { fahreZurück;
    frageSensorenAb();
    }
    frageSensorenAb();
    }
    So ähnlich mache ichs beim Monstertruck auch: solange er noch weit genug vom Zielpunkt entfernt ist, wird recht sorglos gefahren, und ab und zu halt die Position überprüft.

    Wieso brauchst du eigentlich 20 Pins für 5 Sensoren?? Die brauchen _zweie_ jeder- mehr nicht. Sag bitte nicht, dass du die Dinger auch über den Mega mit Spannung versorgst??
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  4. #64
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    Okay das mit dem Code sieht gut aus ich Versuch mal mein Code zu schreiben.

    Nein hab mich falsch ausgedrückt. Mit Strom werden die Sensoren von dem Sensor Shield versorgt.
    War ein Denkfehler. Ich brauch dann nur 10 Pins für die 5 Sensoren.

    - - - Aktualisiert - - -

    also würde der loop Teil dann so aussehen?

    Code:
    void loop()
    {
      vorward();
       {
        while(scan_FRONT_MIDDLE)
        distance_FRONT_MIDDLE = distance;
        if(distance_FRONT_MIDDLE < triggerDistance)
         {
           backward();
         }  
        while(scan_FRONT_RIGHT)
        distance_FRONT_RIGHT = distance;
        if(distance_FRONT_RIGHT < triggerDistance)
         {
           backward();
         {
        while(scan_FRONT_LEFT)
        distance_FRONT_LEFT = distance;
        if(distance_FRONT_LEFT < triggerDistance)
         {
           backward();
         }
        while(scan_RIGHT)
        distance_RIGHT = distance;
        if(distance_RIGHT < triggerDistance)
         {
           backward();
         }
        while(scan_LEFT)
        distance_LEFT = distance;
        if(distance_LEFT < triggerDistance)
         {
           backward();
         {
       {
    {
    Geändert von Benny1989 (10.08.2014 um 22:00 Uhr)
    Meine Homepage www.belagra.de

  5. #65
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.210
    Benutz das Programm da besser nicht.
    while() heisst ungefähr: solange()...damit kann man prima Endlosschleifen basten, und sucht sich dann dämlich am Fehler...
    Die while()-Schleife wird _erst_ verlassen, wenn (Ausdruck) hinter While nicht mehr zutrifft!
    Du musst dort also schon eine Bedingung definieren, die irgendwann unwahr wird-oder das Programm bleuibt ewig in der Schleife gefangen.

    Sowas z.B. nehme ich, wenn ich ein Programm endgültig stoppen will:

    while(1)
    { //hier geht nix mehr}
    Da die "1" nie falsch werden kann, wird in dieser Schleife ewig geblieben.
    Benutze ich z.B. beim Monstertruck, wenn er endgültig gestoppt werden soll:
    Wenn der Akku zu leer ist um sicheren Betrieb zu gewährleisten, oder die falsche SD-Karte eingelegt ist (ich hab auf der richtigen ne Art "Schlüssel-Datei", nur wenn die gefunden wird, startet das Ding überhaupt -> kleine Spielerei).
    Bei dir müsst es ungefähr so sein:

    while(hindernis_da=1)
    {
    fahre etwas zurück;
    gucke_ob_Hindernis_da_ist(); //extrem wichtig, damit hindernis_da auch umgestellt werden kann, musst du in der Schleife deine Sensoren auch abfragen!
    if(hindernis_nicht_mehr_da) // der Teil kann genausogut in der Sensorenabfrage erledigt werden
    { hindernis_da=0;}
    }
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  6. #66
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    okay, das hab ich mir auch schon gedacht das man bei "while" die schelife beenden muss .... nur wie das dann aussieht das es auch funktioniert ?

    in etwa so ?

    Code:
    void loop()
    {
      vorward();
       {
        while(scan_FRONT_MIDDLE = 1)
        distance_FRONT_MIDDLE = distance;
        if(distance_FRONT_MIDDLE < triggerDistance)
         {
           backward();
           scan_FRONT_MIDDLE();
         }
           if(distance_FRONT_MIDDLE > triggerDistance)
            {
              vorward();
            }
       }
    }
    Meine Homepage www.belagra.de

  7. #67
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.210
    Ne-also Programme schreiben musst du wirklich noch üben.
    Schau dir die Arduino-Referenzen zu den Befehlen mal genauer an.
    Insbesondere ein scan_FRONT_MIDDLE wird wohl kaum, oder gar niemals, überhaupt aufgerufen.
    Ausserdem hast du vermutlich da die geschweiften Klammern zum dem while() vergessen, somit wird, wenn while() zutrifft, nur die folgende Zeile aufgerufen- aber vermutlich auch die nicht, wenn du Glück hast, merkts der Compiler und schimpft da schon.

    Obendrein ist es immer riskant, ein Unterprogramm in sich selber aufzurufen, wie du das da mit vorward() machst.

    Nebenbei: gewöhn dir vernünftige Namen an, _merkbare_!
    Deine Sache, ob du deutsche oder englische benutzt aber das Wort vorward gibts im englischen nicht, und im deutschen ebenfalls nicht- sowas liest sich echt grauenhaft. Wenn du vielleicht in ein, zwei Monaten noch mal an das Programm musst, kann dich solcher Murks zum weinen bringen.
    Bei mir heissen Unterprogramme einfach so:
    fahreVorwaerts();
    oder
    scanneFront();
    Da komm ich auch nach nem Jahr noch drauf, was da gemeint sein könnte...
    Das Gleiche gilt auch für Variablen, je eindeutiger, umso besser.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  8. #68
    Benutzer Stammmitglied
    Registriert seit
    16.02.2014
    Beiträge
    80
    vorward();
    Das kann so nich funktionieren. forward schreibt sich mit f !

    Tschuldigung das musste sein. Das Wort hat mich aus dem Bildschirm raus angesprungen...

  9. #69
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.210
    Das doofe ist-den Compilern ist das völlig Wurst ,bis auf die reservierten Wörter kann man da erfinden, wozu man lustig ist.
    Das Hauptproblem haben dann die, die den Sermon mal lesen-und verstehn sollen....
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  10. #70
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    35
    Beiträge
    180
    @ Rabenauge

    ja ich bin noch dabei dies zu lernen, ich mach das noch ned so lang

    Ich brauch halt immer bissle bis es klappt! Okay ich schau mir das an und versuche es zu ändern!
    Aber einfach kann man das mit den Sensoren ned programmieren, ich hab das mit "wihle" noch nicht gemacht !!!!
    Ist mein erstes mal ^^

    Des weiteren leuchtet mir das an deutsche Namen zu vergeben, auch dieser Rat, ist gut - da hast du recht dann kommt man
    nicht durch einander und jemand änderst kommt auch damit klar wenn man mir mal unter die Arme greifen will!

    Das war der Code der einwandfrei klappt aber halt mit einem Sensor! ( und auch schon mit Deutschen Namen

    Code:
    void loop()
    {
      scan_VORNE_MITTE();                                            // Abstand Messen
      distance_VORNE_MITTE = distance;                         // Distanz Vorne = Abstand
      if(distance_VORNE_MITTE < triggerDistance)            // Wenn kleiner als vorgegeben dann reagieren
      {
        zurueck();                              // Zurück fahren
      }
        else
      {
        vor();                               // Weiter nach Vorne fahren
      }
    }
    - - - Aktualisiert - - -

    Das is es auch verstehe kann ich es nicht einfach so schreiben?
    Das er einfach so einen nach dem anderen immer und immer wieder abarbeitet?
    Natürlich gehts auch mit "while" und so oder sollte ich es so nicht machen ?
    Also würde noch mal das gleiche für scan_VORNE_LINKS, scan_RECHTS und scan_LINKS dazu kommen.

    Weil wie soll ich sagen? So verstehe ich es ..... in Distanz_VORNE_MITTE schreibt er den Wert hinein was der Sensor für eine
    Distanz im Programm scan_VORNE_MITTE ermittelt und wenn der Wert kleiner ist wie in triggerDistanz soll er zurück fahren, drehen und
    wieder vor fahren, so verstehe ich diesen Code.

    Code:
    void loop()
    {
      scan_VORNE_MITTE();
      distanz_VORNE_MITTE = distanz;
      if(distanz_VORNE_MITTE < triggerDistanz)
      {
        zurueck();
      }
        else
      {
        vor();
      }
    
       scan_VORNE_RECHTS();
      distanz_VORNE_RECHTS = distanz;
      if(distanz_VORNE_RECHTS < triggerDistanz)
      {
        zurueck();
      }
        else
      {
        vor();
      }
    
    }
    Meine Homepage www.belagra.de

Seite 7 von 15 ErsteErste ... 56789 ... 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
  •  

Solar Speicher und Akkus Tests