- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 57

Thema: Mein erster Roboter

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von avus17
    Registriert seit
    28.01.2011
    Ort
    Planet Erde
    Alter
    26
    Beiträge
    239
    @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

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von avus17
    Registriert seit
    28.01.2011
    Ort
    Planet Erde
    Alter
    26
    Beiträge
    239
    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.
    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
    Der Bot soll einfach nur irgendwo gegenfahren, Bremsen,Wenden und weiter fahren.
    Die Website von ruedi99ms, einem anderen Freund und mir! http://www.highbankfive.de/
    Unser Feuerlöschroboter ALUBME : Version 1 Version 2

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    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!

  4. #4
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    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.

  5. #5
    Erfahrener Benutzer Begeisterter Techniker Avatar von avus17
    Registriert seit
    28.01.2011
    Ort
    Planet Erde
    Alter
    26
    Beiträge
    239
    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

  6. #6
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    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

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    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!

Ähnliche Themen

  1. Mein erster Roboter
    Von Franky55555 im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 4
    Letzter Beitrag: 06.04.2009, 17:53
  2. Mein erster Roboter
    Von BuckWheat im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 17
    Letzter Beitrag: 19.03.2009, 15:59
  3. Mein erster Roboter
    Von Dakrat im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 10
    Letzter Beitrag: 06.05.2007, 11:42
  4. Mein erster Roboter
    Von Schnalzi im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 5
    Letzter Beitrag: 19.02.2007, 11:06
  5. mein erster roboter
    Von mäge im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 13
    Letzter Beitrag: 17.04.2005, 19:26

Berechtigungen

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

Solar Speicher und Akkus Tests