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
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 alsselbst 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:Dim INT_4 As Integer
Fehlermeldungen: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); }
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
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
Sorry, falsche Lib-Datei kopiert - das Beispiel ist in Basic und das entsprechende Unterprogramm in der Lib ist dieses:
Macht aber keinen Unterschied - Timer_T3PWM wird trotzdem nicht erkannt.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
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
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.
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
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
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
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); } } }
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
Lesezeichen