@Torrentula Ja, die Kühlung ist schon etwas groß geraten, aber schaden kanne es ja nicht.
@Kampi ach so, hab mich schon gewundert.
@Torrentula Ja, die Kühlung ist schon etwas groß geraten, aber schaden kanne es ja nicht.
@Kampi ach so, hab mich schon gewundert.
Geändert von avus17 (28.08.2011 um 21:15 Uhr)
Die Website von ruedi99ms, einem anderen Freund und mir! http://www.highbankfive.de/
Unser Feuerlöschroboter ALUBME : Version 1 Version 2
Hallo zusammen, ich hab heut schon mal etwas am Code gebastelt da mein ISP-Kabel morgen kommen
sollte. Und nun wollte ich malragen ob der Code so ok ist oder ob da der Microcontroler in Flammen aufgeht.
Der Bot soll einfach nur irgendwo gegenfahren, Bremsen,Wenden und weiter fahren.Code:' Pinbelegung: ' Schalter vorne =PC0 ' Schalter hinten =PC6 ' Enable Motor1 = PA=0 ' Motor1 Eingang A = PA1 ' Motor1 Eingang B = PA2 ' Enable Motor2 = PA4 ' Motor2 Eingang A = PA5 ' Motor2 Eingang B = PA6 $regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 1000000 Config Pina.0 = Output Config Pina.1 = Output Config Pina.2 = Output Config Pina.4 = Output Config Pina.5 = Output Config Pina.6 = Output Config Pinc.0 = Input Config Pinc.6 = Input Pinc.0 = 1 Pinc.6 = 1 Do If Pinc.0 = 1 Then Pina.0 = 1 Pina.4 = 1 Pina.1 = 1 Pina.5 = 1 End If If Pinc.0 = 0 Then Pina.1 = 0 Pina.2 = 0 Pina.5 = 0 Pina.6 = 0 Waitms 20 Pina.1 = 1 Pina.2 = 0 Pina.5 = 0 Pina.6 = 1 Waitms 100 Waitms 100 Pina.1 = 0 Pina.2 = 0 Pina.5 = 0 Pina.6 = 0 End If If Pinc.6 = 1 Then Pina.0 = 1 Pina.4 = 1 Pina.1 = 1 Pina.5 = 1 End If If Pinc.6 = 0 Then Pina.1 = 0 Pina.2 = 0 Pina.5 = 0 Pina.6 = 0 Waitms 20 Pina.1 = 1 Pina.2 = 0 Pina.5 = 0 Pina.6 = 1 Waitms 100 Waitms 100 Pina.1 = 0 Pina.2 = 0 Pina.5 = 0 Pina.6 = 0 End If Loop End
Die Website von ruedi99ms, einem anderen Freund und mir! http://www.highbankfive.de/
Unser Feuerlöschroboter ALUBME : Version 1 Version 2
Hallo
Mit Pinx.y wird der Status eines Pins eingelesen. Wenn du einen Pin als Ausgang verwendest und ihn steuern willst, lautet der Befehl Portx.y=1/0.
Beim zweiten Bremsen nach dem Ausweichen fehlt die kurze 20ms-Pause?
Kommentare kosten im Quellcode nix extra. Aber sonst: Weiter so.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Der Code sieht soweit ganz gut aus. Wie gesagt Kommentare wären schön
Das 2x "Wait 100" würde ich noch zusammenfassen. Und die If-Abfragen ruhig mal beschriften damit man weiß was die machen.
Also erst mal vielen Dank für die Tipps, ich hab den Code mal überarbeitet.
Ist das so Ok oder hab ich wieder was vergessen???
Code:' Pinbelegung: ' Schalter vorne =PC0 ' Schalter hinten =PC6 ' Enable Motor1 = PA=0 ' Motor1 Eingang A = PA1 ' Motor1 Eingang B = PA2 ' Enable Motor2 = PA4 ' Motor2 Eingang A = PA5 ' Motor2 Eingang B = PA6 $regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 1000000 Config Porta.0 = Output Config Porta.1 = Output Config Porta.2 = Output Config Porta.4 = Output Config Porta.5 = Output Config Porta.6 = Output Config Pinc.0 = Input Config Pinc.6 = Input Pinc.0 = 1 Pinc.6 = 1 Do If Pinc.0 = 1 Then 'Wenn keine kolision (vorne) erfolgt Porta.0 = 1 'fahre vorwärts. Porta.4 = 1 Porta.1 = 1 Porta.5 = 1 End If If Pinc.0 = 0 Then 'Wenn kollision (vorne) erfolgt, Porta.1 = 0 'Bremse, Porta.2 = 0 Porta.5 = 0 Porta.6 = 0 Waitms 20 'warte 20 ms Porta.1 = 1 'Drehe 200ms Porta.2 = 0 Porta.5 = 0 Porta.6 = 1 Waitms 200 Porta.1 = 0 'Bremse Porta.2 = 0 Porta.5 = 0 Porta.6 = 0 Waitms 20 'warte 20ms End If If Pinc.6 = 1 Then ' Wenn keine kolision (hinten) Porta.0 = 1 'fahre vorwärts Porta.4 = 1 Porta.1 = 1 Porta.5 = 1 End If If Pinc.6 = 0 Then 'Wenn kolision (hinten) Porta.1 = 0 'Bremse, Porta.2 = 0 Porta.5 = 0 Porta.6 = 0 Waitms 20 'warte 20 ms Porta.1 = 1 'drehe 200ms Porta.2 = 0 Porta.5 = 0 Porta.6 = 1 Waitms 200 Porta.1 = 0 'Bremse Porta.2 = 0 Porta.5 = 0 Porta.6 = 0 Waitms 20 'warte 20 ms End If Loop End
Die Website von ruedi99ms, einem anderen Freund und mir! http://www.highbankfive.de/
Unser Feuerlöschroboter ALUBME : Version 1 Version 2
Jap so ist gut
Die Kommentare dienen legendlich dazu, dass du und andere den Code leichter verstehen. Wenn du jetzt beim programmieren eine Pause machst oder dir den Code 2 Monate später nochmal anschaust hast du tierische Probleme den Code zu verstehen wenn eu ihn nicht ordentlich beschriftest. Bei der Beschriftung ist es weniger wichtig zu schreiben was ein Befehl macht sondern vielmehr was eine komplette Gruppe von Befehlen macht. Hier ein Beispiel:
Du schreibst nicht:
Waitms 200 'Warte 200ms
If PinD.1 = 1 then 'Wenn PinD.1 gleich 1 ist
PinD.2 = 1 'PinD.2 gleich 1
Else 'sonst
PinD.2 = 0 'PinD.2 gleich 0
End If
Weil da siehst du ja schon im Code was die Befehle machen. Du brauchst da nicht nochmal als Kommentar schreiben das "Waitms 200" eine Pause von 200ms bedeutet.
Du schreibst das vielmehr so:
Waitms 200
If PinD.1 = 1 then 'Wenn der linke Taster gedrückt wird,
PinD.2 = 1 'wird sie Lampe eingeschaltet
Else
PinD.2 = 0
End If
So siehst du sofort die Funktion hinter dem Codeblock. Achja und das ist nur ein frei erfundenes Beispiel
Das ist nicht aus deinem Code. In deinem Code hast du das Beschriften ja richtig gemacht, ich wollt dir nur nochmal erklären warum man das so macht.
Ansonsten gut so und weitermachen![]()
Ja, viel besser. Nur noch ne Kleinigkeit: Das Setzen der internen PullUps ist eigentlich auch eine Ausgabe am Pin:
Pinc.0 = 1
Pinc.6 = 1
Deshalb auch hier Portx.y=1
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Lesezeichen