Changes between Initial Version and Version 1 of 2011/Programmierung


Ignore:
Timestamp:
Mar 31, 2011, 12:26:02 PM (14 years ago)
Author:
kittmann
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 2011/Programmierung

    v1 v1  
     1[[PageOutline]]
     2
     3= Programmierung =
     4== Software Installation Windows ==
     5 * Gehe auf die Homepage http://arduino.cc/en/Main/Software [[BR]] 
     6 * Lade dir in dem Abschnitt Download die Software fuer Windows  herrunter. Zum Zeitpunkt des Girlsdays 2011 war die Version  arduino-0022.zip aktuell. [[BR]]
     7 * Entpacke die herruntergeladene Datei (arduino-0022.zip) [[BR]]
     8 * Gehe in das entpackte Verzeichniss arduino-0022 und doppelklick auf arduino.exe [[BR]]
     9 * die Arduino Entwicklungsumgebung sollte jetzt gestartet sein
     10
     11Weitere Information findest du auf der Homepage http://arduino.cc/en/Guide/Windows
     12
     13== Software Installation Linux (Ubuntu 10.10) ==
     14Die orginal englischsprachige Installationsanleitung findest die hier http://arduino.cc/playground/Linux/Ubuntu oder du folgst einfach unseren Anweisungen:
     15
     16 * Lade dir die .debs Dateien fuer arduino, arduino-core, and librxtx-java herrunter und speicher sie in einem leeren Verzeichniss. Die Dateien kannst du direkt von den folgenden Links herunterladen:
     17
     18   * librxtx-java
     19     * amd: http://mirror.informatik.uni-mannheim.de/pub/linux/distributions/ubuntu//pool/universe/r/rxtx/librxtx-java_2.2pre2-3~maverick1_amd64.deb
     20     * i368: http://mirror.informatik.uni-mannheim.de/pub/linux/distributions/ubuntu//pool/universe/r/rxtx/librxtx-java_2.2pre2-3~maverick1_i386.deb
     21   * arduino-core http://mirror.informatik.uni-mannheim.de/pub/linux/distributions/ubuntu//pool/universe/a/arduino/arduino-core_0022+dfsg-1~maverick1_all.deb
     22   * arduino http://mirror.informatik.uni-mannheim.de/pub/linux/distributions/ubuntu//pool/universe/a/arduino/arduino_0022+dfsg-1~maverick1_all.deb
     23
     24Sollte diese Links nicht funtionieren kannst du die Dateien auch von anderen Servern herunterladen. Benutzte dazu diese Links:
     25
     26   * http://packages.ubuntu.com/maverick-backports/librxtx-java
     27   * http://packages.ubuntu.com/maverick-backports/arduino-core
     28   * http://packages.ubuntu.com/maverick-backports/arduino
     29
     30 * gehe in den Ordner mit den heruntergeladenen Dateien und installiere die Packete mit
     31
     32{{{
     33    sudo dpkg -i *.deb
     34}}}
     35 * jetzt kannst du Verzeichniss mit den heruntergeladenen Dateien loeschen.
     36
     37Falls du mit dieser Installationsbeschreibung nicht klar kommst, dann hilft dir mit sicherheit diese Seite weiter: http://www.pluggy.me.uk/arduino-ubuntu/
     38
     39 * Gehe in das Verzeichniss /usr/arduino-0022 [[BR]]
     40
     41 * starte die Arduino Entwicklungsumgebung mit
     42
     43{{{
     44    ./arduino
     45}}}
     46 * die Arduino Entwicklungsumgebung sollte jetzt gestartet sein.
     47
     48Weitere Information findest du auf der Homepage http://www.arduino.cc/playground/Learning/Linux
     49
     50== Software Installation Mac OS X ==
     51Bitte den Anweisungen auf der Homepage http://arduino.cc/en/Guide/MacOSX folgen :).
     52
     53== Programmieren des Arduino ==
     54Um das Formel1 Auto zu programmieren, werden zwei Software Komponenten benoetigt. Zum einen zwei Dateien die als Software Bibliothek von der Arduino Entwicklungsumgebung benoetigt wird, und zum anderen das Programm zur Steuerung des Roboters, dass du waehrend des Girlsdays auf den Roboter geladen hast. Dazu fuehre bitte folgende Schritte aus:
     55
     56 * Gehe in das Verzeichnis /usr/arduino-0022/libraries. In diesem Verzeichnis erstellst du ein neues Verzeichnis mit den Name '''Formel1'''.
     57
     58{{{
     59    mkdir Formel1
     60}}}
     61 * Nun lade die zwei Dateien [https://svn.mpia.de/trac/gulli/girlsday/browser/2011/software/Formel1/Formel1.cpp?format=txt Formel1.cpp] und [https://svn.mpia.de/trac/gulli/girlsday/browser/2011/software/Formel1/Formel1.h?format=txt Formel1.h] herunter und speichert diese im neu angelegten Verzeichnis '''Formel1.''' 1. Jetzt erstelle bitte eine Verzeichnis '''Girlsday''' auf dem Desktop und speicher die Datei [https://svn.mpia.de/trac/gulli/girlsday/export/5/2011/software/Formel1.pde Formel1.pde] dort. Diese Datei beinhaltet das Program, welches den Roboter steuert und auf den Roboter hochgeladen wird.
     62
     63Das wars! Nun hast du alles was an Software benoetigt wird.
     64
     65== Entwicklungsumgebung Arduino ==
     66'''Benoetigtes Zubehoer''' [[BR]]  Zum Programmieren des Formel1 Autos wird ein USB Kabel [http://www.pollin.de/shop/dt/NDA2ODcyOTk-/Computer_und_Zubehoer/Hardware/Kabel_Stecker_Adapter/USB2_0_Anschlusskabel_A_zu_Mini_B_B5_.html www.pollin.de Bestellnummer: 721 395] mit einem USB Adapter [http://www.watterott.com/de/FTDI-Basic-Breakout-5V www.watterott.com Art.Nr.: 2008438] benoetigt. [[BR]]  [[Image(USBKabel.jpg, 200)]] [[Image(FTDI.jpg, 200)]] [[BR]]
     67
     68'''Anschliessen des !BristelBots mit dem PC'''  [[BR]]  Verbinde das USB Kabel mit dem USB Adapter und schliesse es an deinem PC an. Stecke jetzt den Adapter an die Platine vom Formel1 Wagen so wie es auf dem Bild zu sehen ist (Die Bauteile des Adapters muessen in Fahrtrichtung zeigen.).
     69
     70[[Image(VerbundenMitBristleBot.jpg, 70%)]]
     71
     72'''Oeffnen des Formel1 Auto Beispielprogramms''' [[BR]] Um das Beispielprogramm zu oeffnen klicke auf File > Open und waehle die Datei Girlsdatei.pde aus dem Girlsday Verzeichnis auf dem Desktop aus.
     73
     74'''Waehle deine Arduino Version aus''' [[BR]] Bevor du dein Formel1 Auto programmieren kannst must du in der Entwicklungsumgebung dein benutzten  Arduino Chip einstellen. Waehle unter Tools > Boards > Arduino NG  or older w/ ATmega8 aus.
     75
     76'''Waehle die serielle Schnittstelle aus''' [[BR]] Wenn das Formel1 Auto mit dem PC verbunden ist, dann wird unter Tools > Serial Port die  benutzte Schnittstelle angezeigt. Falls mehrere Shcnittstellen angezeigt  werden, kann man den Formel1 Wagen vom PC trennen. In dem Menue Tools >  Serial Port wird nun die vom Formel1 Wagen verwendete Schnittstelle nicht mehr angezeigt. Verbinde nun den PC mit dem Formel1 Wagen wieder und waehle die verwendete Schnittstelle aus.
     77
     78'''Programmieren des Formel1 Wagens''' [[BR]] Jetzt kannst du deinen Formel1 Wagen  programmieren. Schalte dazu den Batteriepack AUS und dann wieder AN und druecke innerhalb von 5s auf den Upload Knopf. Warte ein paar Sekunden bis das blinken der RX und der TX LEDs auf dem USB  Adapter aufhoert zu blinken. Wenn das Hochladen des Programms  erfolgreich war, siehst du die Nachricht "Done uploading" in der  Statusbar. Falls das Hochladen des Programms nicht erfolgreich war wiederhole diesen Punkt.
     79
     80[[Image(UploadButton.png)]]
     81
     82Ca. 10s Sekunden nach dem Hochladen faengt der Formel1 Wagen an zu fahren. Herzlichen Glueckwunsch fuer dein erstes Arduinoprogramm.
     83
     84Weitere Informationen findest du auf der deutschsprachige Homepage http://www.freeduino.de/books/arduino-tutorial-lady-ada oder auf der englischsprachigen Herstellerseite http://arduino.cc/en/Guide/Windows.
     85
     86== Roboter Befehle ==
     87Waehrend des Girlsdays hast du die Moeglichkeit den Roboter selbst zu programmieren. Du kannst entweder das fertige [https://svn.mpia.de/trac/gulli/girlsday/export/38/2011/software/Girlsday/Girlsday.pde Programm]  herunterladen, oder du kannst dir auch selbst ein eigenes Programm fuer  deinen Roboter schreiben. Dir stehen dabei folgende Befehle zu  Verfuegung:
     88
     89Befehl zur Initialisierung des Roboters:
     90
     91{{{
     92robo.init(180);   
     93//Der erste Wert (180) setzt die Spannung, die an einem eingeschalteten Motor anliegt. Der Wert muss zwischen 0 und 255 liegen. 0
     94//entspricht 0 Volt, 255 wuerde bei einer 4.5 Volt Spannungsversorgung 4.5 Volt betragen. Da die Motoren nur 3 Volt vertragen, sollte
     95//der Wert nicht viel hoeher als 180 sein. Der zweite Wert definiert den Schwellwert, bei dem die Fototransitoren zwischen Links und
     96//Rechts unterscheiden koennen. Je nach Beleuchtungsituation, kannst du mit diesem Wert experimentieren. Ein hoeherer Wert bedeutet,
     97//dass der Helligkeitsunterschied zwischen den Fototransistoren (weisser Untergrund und schwarzer Untergrund) groesser sein muss. Ein
     98//kleiner Wert laesst den Roboter sensibler auf Helligkeitsunterschiede reagieren. Dies hat zur Folge, dass der Roboter sehr haeufig
     99//die Fahrtrichtung waechselt.
     100}}}
     101=== Befehle fuer Licht ===
     102{{{
     103robo.rechtesLicht( AN/AUS );  //Schaltet das rechte Licht vorn AN oder AUS.
     104robo.linkesLicht( AN/AUS );    //Schaltet das linke Licht vorn AN oder AUS.
     105robo.ruecklicht( AN/AUS );    //Schaltet das Ruecklicht AN oder AUS.
     106}}}
     107=== Steuer Befehle ===
     108{{{
     109robo.fahreRechts( );     //Der Roboter faehrt eine Rechtskurve solange bis ein anderer Fahrbefehl ausgefuehrt wird.
     110robo.fahreLinks( );      //Der Roboter faehrt eine Linkskurve solange bis ein anderer Fahrbefehl ausgefuehrt wird.
     111robo.fahreGerade();      //Der Roboter faehrt gerade aus solange bis ein anderer Fahrbefehl ausgefuehrt wird.
     112}}}
     113=== Licht Sensor Befehl ===
     114{{{
     115robo.leseSensor();       //Die Fototransistoren werden ausgelesen. Es wird entschieden, welcher der beiden Fototransistoren
     116                         //mehr Licht empfaengt. Entweder RECHTS, LINKS oder BEIDE empfangen in etwa gleich viel Licht.
     117                         //Der Befehl gibt daher als Ergebnis entweder LINKS, RECHTS oder BEIDE zurueck.
     118}}}
     119=== Warte Befehl ===
     120{{{
     121WARTE(1000);             //Der Roboter wartet fuer eine bestimmt Zeit, bis er weiter arbeiten darf. Die Zahl, die dem Befehl
     122                         //uebergeben wird ist die Zei in Millisekunden. Im Beispiel wird 1000 uebergeben. Das wuerde einer
     123                         //Sekunde entsprechen. Wenn du z. B. nur eine halbe Sekunde warten moechtest, dann solltest du nur
     124                         //500 Millisekunden dem Befehl uebergeben.
     125}}}
     126=== Bedingte Ausfuehrung von Befehlen ===
     127Der Befehl '''SCHALTE''' fragt den Roboter nach einer bestimmten Situation. Mit '''FALLS'''  werden, abhaengig von der Antwort, bestimmte Befehle bis zum break  ausgefuert. Waerend des Girlsdays fragen wir den Roboter mit den Befehl  leseSensor() nach der Beleuchtungssituation der Fototransistoren. Je  nachdem welche Antworten uns der Befehl zurueck gibt ('''LINKS''', '''RECHT''' oder '''BEIDE'''), entscheiden wir was der Roboter tun soll, also "'''FALL LINKS'''" dann soll ber Befehl fahreRechts() ausgefuert werden.
     128
     129{{{
     130SCHALTE ( <Frage nach Situation> )
     131{
     132  FALLS <Bedingung1 fuer Antwort>:
     133        <Auszufuehrende Befehle>
     134        break;
     135  FALLS <Bedingung2 fuer Antwort>:
     136        <Auszufuehrende Befehle>
     137        break;
     138}
     139}}}
     140== Die Aufgabenstellung ==
     141 1. Schreibe ein Programm, das die Lichter in beliebiger Reihenfolge erst an und dann aus schaltet.
     142 1. Schreibe ein Programm, das die Lichter abhaengig von der Beleuchtung der Sensoren links oder rechts anschaltet.
     143 1. Fuege  zu diesem Programm die Fahrbefehle hinzu, so dass der Roboter einer  schwarzen Linie folgt. Bedenke dabei wie die Sensoren sehen,wenn sie von  der schwarzen Linie abkommen und wie man den Roboter lenken muss, um  wieder zurueck auf die schwarze Linie zu kommen (Tip: Steuerung eines  Holzschlittens).
     144
     145[https://svn.mpia.de/export/38/2010/dokumentation/Aufgabenblatt.pdf Aufgabenblatt zum Ausdrucken]
     146
     147== Das fertige Programm ==
     148{{{
     149#include <BristleBot.h>
     150
     151BristleBot robo;
     152
     153void setup()   
     154{               
     155  robo.init(180,20);
     156}
     157
     158void LOS()                     
     159{
     160
     161        SCHALTE (robo.leseSensor())
     162        {
     163            FALLS LINKS:
     164                robo.rechtesLicht(AN);
     165                robo.linkesLicht(AUS);
     166                robo.ruecklicht(AUS);
     167                robo.fahreRechts();
     168                break;
     169            FALLS RECHTS:
     170                robo.rechtesLicht(AUS);
     171                robo.linkesLicht(AN);
     172                robo.ruecklicht(AUS);
     173                robo.fahreLinks();
     174                break;
     175            FALLS BEIDE:
     176                robo.rechtesLicht(AUS);
     177                robo.linkesLicht(AUS);
     178                robo.ruecklicht(AN);
     179                robo.fahreGerade();
     180                break;
     181        };
     182}
     183}}}
     184Das Programm kann von unserer [https://svn.mpia.de/trac/gulli/girlsday/export/38/2011/software/Girlsday/Girlsday.pde Hompage] herunter geladen werden.
     185
     186== Justieren ==
     187== Pfad ==
     188Jetzt  hast du es geschafft. Du brauchst nur noch einen Pfad, den der Formel1 Wagen folgen kann. Entweder du malst dir einen eigenen Pfad mit einem  schwarzen Edding auf oder du druckst dir den Girlsdaypfad ([https://svn.mpia.de/trac/gulli/girlsday/export/38/2011/dokumentation/Notenschluessel_A4_10.pdf Rennstrecke mit 1cm Liniendicke], [https://svn.mpia.de/trac/gulli/girlsday/export/38/2011/dokumentation/Notenschluessel_A4_50.pdf Rennstrecke mit 5cm Liniendicke]) aus.
     189
     190Die Rennstrecke ist so geteilt, dass ihr sie auf einem normal A4 Drucker (einseitig!) ausdrucken koennt. Anschliessend koeennt ihr dann die Bahn zusammenkleben. Im folgenden Bild seht iht die Seitenaufteilung der Rennstrecke.
     191
     192[[Image(Notenschluessel_Seitenaufteilung.png, 40%)]] [[BR]]
     193
     194Viel Spass.