- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 10

Thema: I-Bumper aus "Pro-Bot 128 bauen und erfolgreich einsetzen" - Problem mit Lib

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    02.02.2014
    Beiträge
    9

    I-Bumper aus "Pro-Bot 128 bauen und erfolgreich einsetzen" - Problem mit Lib

    Anzeige

    Powerstation Test
    Hallo alle zusammen,

    Ich habe ein Problem mit dem Beispielprogramm für den I-Bumper aus dem Buch "Pro-Bot bauen und erfolgreich einsetzen".

    Das Projekt wird nicht kompiliert, weil in der Library die Variablen INT_4, INT_6, INT_7 und die Funktion Timer_T3PWM nicht definiert sind.

    Die Variablen habe ich dann einfach als
    Code:
    Dim INT_4 As Integer
    selbst in die Lib geschrieben, weiß aber nicht, ob das dann auch so funktioniert. Aber warum wird die Funktion nicht erkannt? In der Lib taucht Sie unter ACS_INIT() auf:

    Code:
    void ACS_INIT(byte sensity)
    {
        /*
        PWM für das ACS-System einstellen
        Timer_T3PWM(Par1,Par2,PS);
        Period = Par1*PS/FOSC (51*8/14,7456MHz=27,66 µs)  = 36Khz  Wert=51
        Pulse  = Par2*PS/FOSC (25*8/14,7456MHz=13,56 µs) On Time
        Timer_T3PWM(Word period,Word PW0,Byte PS) '36Khz
        Mit Par1, Par2 kann die Entfernung eingestellt werden
        muss teilweise angepasst werden (Roboter spezifisch)
        */
        Port_WriteBit(IR_left,PORT_OFF);
        Port_WriteBit(IR_right,PORT_OFF);
        Timer_T3PWM(51,sensity,PS_8);
    }
    Fehlermeldungen:

    C:\Users\Sarah\Documents\Robots\ProBot 128\Buch_Beispiele\PRO-BOT128 Lib\PRO-BOT128_Lib_V2.cc(160,17): Semantik Fehler - Variable INT_6 nicht definiert
    C:\Users\Sarah\Documents\Robots\ProBot 128\Buch_Beispiele\PRO-BOT128 Lib\PRO-BOT128_Lib_V2.cc(161,17): Semantik Fehler - Variable INT_7 nicht definiert
    C:\Users\Sarah\Documents\Robots\ProBot 128\Buch_Beispiele\PRO-BOT128 Lib\PRO-BOT128_Lib_V2.cc(168,17): Semantik Fehler - Variable INT_4 nicht definiert
    C:\Users\Sarah\Documents\Robots\ProBot 128\Buch_Beispiele\PRO-BOT128 Lib\PRO-BOT128_Lib_V2.cc(220,24): Semantik Fehler - Variable INT_4 nicht definiert
    C:\Users\Sarah\Documents\Robots\ProBot 128\Buch_Beispiele\PRO-BOT128 Lib\PRO-BOT128_Lib_V2.cc(309,1: Semantik Fehler - Variable INT_6 nicht definiert
    C:\Users\Sarah\Documents\Robots\ProBot 128\Buch_Beispiele\PRO-BOT128 Lib\PRO-BOT128_Lib_V2.cc(317,1: Semantik Fehler - Variable INT_7 nicht definiert
    C:\Users\Sarah\Documents\Robots\ProBot 128\Buch_Beispiele\PRO-BOT128 Lib\PRO-BOT128_Lib_V2.cc(782,5): Semantik Fehler - Funktion Timer_T3PWM nicht definiert
    C:\Users\Sarah\Documents\Robots\ProBot 128\Buch_Beispiele\PRO-BOT128 Lib\PRO-BOT128_Lib_V2.cc(797,5): Semantik Fehler - Funktion Timer_T3PWM nicht definiert

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    07.01.2010
    Ort
    Deutschland
    Beiträge
    739
    Hallo Anna,
    Der Code bei ACS_INIT... ist in C geschrieben. Deine Definition aber ij Basic. Das kann nicht funktionieren.

    Ist das Beispiel in C oder Basic?

    MfG
    bnitram

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    02.02.2014
    Beiträge
    9
    Sorry, falsche Lib-Datei kopiert - das Beispiel ist in Basic und das entsprechende Unterprogramm in der Lib ist dieses:

    Code:
    Sub ACS_INIT(sensitivity As Byte)
        'PWM für das ACS-System einstellen
        'Timer_T3PWM(Par1,Par2,PS);
        'Period = Par1*PS/FOSC (51*8/14,7456MHz=27,66 µs)  = 36Khz  Wert=51
        'Pulse  = Par2*PS/FOSC (25*8/14,7456MHz=13,56 µs) On Time
        'Timer_T3PWM(Word period,Word PW0,Byte PS) '36Khz
        'Mit Par1, Par2 kann die Entfernung eingestellt werden
        'muss teilweise angepasst werden (Roboter spezifisch)
        Port_WriteBit(IR_left,PORT_OFF)
        Port_WriteBit(IR_right,PORT_OFF)
        Timer_T3PWM(51,sensitivity,PS_8)
    End Sub
    Macht aber keinen Unterschied - Timer_T3PWM wird trotzdem nicht erkannt.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    07.01.2010
    Ort
    Deutschland
    Beiträge
    739
    Hallo,
    ich hab dir mal beide Lib's angehangen.. Vielleicht ist deine nur Fehlerhaft...

    https://www.dropbox.com/s/1ral3b62vz...OT128_Lib.cbas

    https://www.dropbox.com/s/0gpgqbt9wr...28_Lib_V2.cbas

    MfG
    bnitram

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    02.02.2014
    Beiträge
    9
    Vielen Dank, jetzt geht's!

    Allerdings reagiert der Roboter nicht, wenn er irgendwo gegen fährt, da schaue ich jetzt mal, woran das liegen könnte.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    07.01.2010
    Ort
    Deutschland
    Beiträge
    739
    Alles klar. Freut mich!
    Ich habe mir inzwischen mal das Beispiel angeschaut...
    Der Bot "erkennt" letztenendes ja nur den Spannungs Zusammenbruch wenn die Motoren blockieren. Zum testen könntest du also das Programm laufen lassen und die Reifen vom Bot festhalten. Dann ist das ja so, wie es im Programm vorgehen ist, nur evtl in extrem...
    Ansonsten könntest du auch ein einfaches Programm selber schreiben, wo du feststellen kannst, ob das so funktioniert. Du müsstest dir nur die Werte vom ADC an das PC Terminal schicken. Das heißt das du die Motoren laufen lässt und dann nur noch GET_ADC(0) auslesen musst und dir das am PC ausgibts.
    Dann solltest du, wenn das so funktioniert wie es im Buch beschrieben wird, eine Werte Veränderung feststellen können, wenn du die Reifen festhältst...

    Ich könnte mir aber auch vorstellen das das Programm nicht mehr funktioniert, wenn du zu gute Akkus bzw. Batterien verwendest. Wenn diese für hohe Entladeströme ausgelegt sind, wird auch die Spannung nur sehr gering zusammen brechen... Das hieße das das Programm in dem Fall nicht mehr funktioniert.. naja. Teste es erstmal so wie ich es dir beschrieben hab.

    MfG
    bnitram

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    02.02.2014
    Beiträge
    9
    Vielen Dank für die guten Tipps! Letztendlich lag es gestern nur an einem falsch deklarierten Thread und die Bumper-Funktion hat dann wunderbar funktioniert. Allerdings gibt es in dem Programm ja auch eine Komponente, in der der Probot mit dem normalen IR-ACS Hindernissen ausweicht, und das funktioniert nicht. Das muss ich also nochmal isolieren. Weißt Du, ob die Wirkung des IR-ACS von den Lichtverhältnissen abhängt, oder nur von der Oberfläche, die das IR-Licht reflektiert? Vielleicht ist nur die Empfindlichkeit falsch eingestellt - steigt mit einem höheren Wert die Empfindlichkeit, oder ist es umgekehrt?

    Das mit den kleineren Testprogrammen ist gut, das versuche ich meist, wenn etwas nicht funktioniert. Dabei lernt man eine ganze Menge, aber es ist natürlich auch eine Herausforderung für einen Programmieranfänger.

    VG
    Anna

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    07.01.2010
    Ort
    Deutschland
    Beiträge
    739
    Hallo Anna,
    ah ok.

    Bei der Empfindlichkeit habe ich nie große Unterschiede festgestellt... Also kann ich da nichts genaueres sagen. Die Objekterkennung hängt relativ stark vom Licht ab. Es ist ja IR...
    Die Oberfläche spielt auch eine Rolle, jedoch funktioniert es in den meisten Fällen.

    MfG
    bnitram

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    02.02.2014
    Beiträge
    9

    Dieselben Fehlermeldungen schon wieder

    Ich bekomme wieder dieselben Fehlermeldungen, diesmal mit einem anderen Programm - es ist zum Verzweifeln. Habe die Lib (ich versuche es mit der Lib in C, die bisher wunderbar funktioniert hat) inzwischen schon mehrmals von der CD neu heruntergeladen, macht keinen Unterschied. Wenn ich aber nun z. B. das Programm LineRacer von der CD kompiliere, funktioniert das wunderbar, wenn ich mein eigenes Programm mit derselben Lib kompilieren möchte, erhalte ich wieder dieselben Fehlermeldungen - liegt also vermutlich am Code. Irgendwelche Ideen, was mit dem Code nicht stimmt?

    Mein Code:

    Code:
    int T1, T2;
    
    void main(void)
     {
     PRO_BOT128_INIT();                             //System setup
     DRIVE_ON();                                    //Drive setup
    
       while(1)
       {
       T1 = READ_LINE_LEFT();                           //Linken Liniensensor lesen
       T2 = READ_LINE_RIGHT();                          //Rechten Liniensensor lesen
    
         if (T1 == T2)
         {
         GO_TURN(5,-25,180);
         }
    
         if (T1 < T2)
         {
         DRIVE_FORWARD(200);
         }
    
         if (T1 > T2)
         {
         GO_TURN(5,25,180);
         }
       }
     }

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    07.01.2010
    Ort
    Deutschland
    Beiträge
    739
    Hallo Anna,
    mit dem C-Code vom ProBot habe ich mich nur kurz beschäftigt, daher kann ich so spontan nicht sagen ob das richtig oder falsch ist.

    Hier findest du jedenfalls die "richtigen" Codes, in einer Übersicht. Vielleicht hilft es dir ja?!:
    http://www.c-control-pro.de/documentation/index.html

    MfG
    bnitram

Ähnliche Themen

  1. Weiteres "Problem" mit Pro Bot128
    Von flo2000 im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 16
    Letzter Beitrag: 29.12.2013, 23:05
  2. Pro Bot 128 problem mit rad encoder
    Von sebi86 im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 15
    Letzter Beitrag: 25.01.2013, 21:24
  3. Pro Bot 128 - Problem mit Ansteuerung des rechten Motors
    Von erik95 im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 12
    Letzter Beitrag: 05.01.2011, 12:47
  4. Pro-Bot 128 ACS-Problem
    Von RoninShooter im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 1
    Letzter Beitrag: 07.02.2010, 16:04
  5. Problem mit Pro-Bot 128
    Von thekingtt im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 04.01.2010, 11:33

Berechtigungen

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

12V Akku bauen