-
Hilfe bei Bumpern!!
Hallo,
vor kurzem habe ich mir auch eine C-unit gekauft und bin nun seit etwa 2 wochen mit meinem eigenen Roboter beschäftigt...
(und dieses Forum hat einiges dazu beigetragen...)
ich bin leider auch im programmieren der C-unit vollkommener Anfänger. Bis vor 2 Tage hab ich das noch mit dem CC-Plus gemacht.
lange Rede kurzer Sinn..
Warum funktioniert mein Porggramm nicht?? ](*,)l
Vielleicht hab ich ja auch einfach nur absoluten Mist gemacht...
Code:
define Sensor1 port[1] 'Sensor vorne/links
define Sensor2 port[2] 'Sensor vorne/mitte
define Sensor3 port[3] 'Sensor vorne/rechts
define Motor1v port[4] 'Motor links/vorwärts
define Motor1r port[5] 'Motor links/rückwärts
define Motor2v port[6] 'Motor rechts/vorwärts
define Motor2r port[7] 'Motor rechts/rückwärts
#loop
Motor1v=On 'Beide Motoren an (vorwärts)
Motor2v=On
if Sensor1 then Motor1v=Off 'Wenn Sensor1 schaltet, dann beide Motoren aus
if Sensor1 then Motor2v=Off
if Sensor1 then Motor1r=On 'Anschließend beide Motoren wieder an (rückwärts)
if Sensor1 then Motor2r=On
Pause=100
Motor1r=Off
Motor2r=Off
Motor1v=On
Pause=20
...
-
Was macht das Programm denn? Gar nix oder ?
Wenn es beim Compiler schon einen Fehler gegeben hat ... nach meinem Handbuch darf zwischen PAUSE und der Dauer kein = stehen (also PAUSE 100 und nicht PAUSE=100). Das merkt aber die Entwicklungsumgebung normalerweise, wenn auch mit etwas kryptischen Fehlermeldungen.
Hats Du es mal mit dem Simulator laufen lassen? Da sieht man schnell ob die Ports wenigstens einigermaßen was tun.
-
also beim compilieren meldet er keinen Fehler.
und im simulator fangen beide ausgänge für die motoren 1 und 2 an zu laufen, aba wenn man nun ein signal an den sensorport gibt dann hörne sie einfach nich auf??????
danke für die schnelle antwort..
mfg
Ich
-
CC1-Prog
Hallo "ich",
genau weiss ich nicht, was Dein Prog so machen soll. Nach dem Ausschnitt soll in einer Schleife ...:
1. Der Roboter die Vorwärtsfahrt stoppen, wenn Sensor 1 anspricht.
2. Dann sofort mit der Rückwärtsfahrt beginnen.
3. Er soll 2 Sekunden lang (PAUSE 100) rückwärts fahren.
4. Dann wird die Rückwärtsfahrt gestoppt.
5. Dann geht's links vorwärts für 0,4 Sekunden.
6. Was dann passiert, ist unbekannt.
Das sollte so auch nach deinem Prog passieren, aber in der realen Sensor-Abfrage solltest du nicht dreimal hintereinander den Sensor abfragen, weil das unterschiedliche Ergebnisse erzielen kann. Deine Programmlogik geht aber davon aus, dass dreimal immer der selbe Wert gelesen wird. Du musst also alles was nach "IF Sensor1 then ..." passieren soll, in einen Block ohne neue IF-Abfrage packen.
Gruß Dirk
-
hi
1. genau so soll das programm laufen, laut simulator tut es das aber nicht .
im simulator geht der port für vorwärts fahren nicht aus und der port für rückwärts fahren nicht an!
2. Wie mach ich dass denn alles in einen Block??? wär schön du könntest es mir mal erklären...ich bin ziemlicher anfänger...
danke
Ich
-
also so würdest du theoretisch alles in eine block packen. jetzt wird der sensor nur einmal abgefragt, und dann alle befehle nacheinander ausgeführt
if Sensor1 then
Motor1v=Off
Motor2v=Off
Motor1r=On
Motor2r=On
endif
(ohne gewähr dass die syntax stimmt weil ich schon ewig kein basic mehr geproggt hab...)
-
Wenn ich es so mache...
Code:
#loop
Motor1v=On 'Beide Motoren an (vorwärts)
Motor2v=On
if Sensor1 then
Motor1v=Off 'Wenn Sensor1 schaltet, dann beide Motoren aus
Motor2v=Off
Motor1r=On 'Anschließend beide Motoren wieder an (rückwärts)
Motor2r=On
Pause=500
endif
Dann bringt er beim compilieren einen fehler.
und zwar: "Zeile 21: undefiniertes Label ENDIF"
Zeile 21 ist die zeile "endif" (logischer weise)
ich hoffe mir kann jemand helfen...](*,)
danke
Ich
-
also nicht korrekt mein code...
entweder du findest selbst raus wie du mehrere befehle in eine if-abfrage packen kannst (handbuch?) oder du machst es quick+dirty: du setzt in der sensor-if-abfrage eine variable auf 1 oder true, und fragst dann immer dies varaiable ab...
evtl geht es aber auch mit begin... end um die vier motorbefehle herum...
if Sensor1 then
begin
Motor1v=Off
Motor2v=Off
Motor1r=On
Motor2r=On
end
-
danke erstmal!
also mit begin tritt ähnlicher fehler auf udn handbuchmäßig is auch nich viel drin. Ist meiner meinung nahc auch nicht so besonders dokumentiert das ganze.
ich werde mich dann ma wieta auf die suche machen und es probieren selbst rauszubekommmen.
danke
Ich :-k
-
ich habs hinbekommen!!!! \:D/
man muss schreiben
if Sensor1 then goto Rueckwaerts
als beispiel
und in #Rueckwaerts schriebt man dann:
Motor1=On
Motor2=Off
usw.
mfg
Ich