Workshop: ASURO-Programmieren in C

Ähnliche Dokumente
Workshop: ASURO-Programmieren in C

Programmierung Nibo 2 Teil 3 Display. * by nicaisystems

Wer möchte, kann sein Programm auch auf echter Hardware testen

Hex Datei mit Atmel Studio 6 erstellen

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

Another Small and Unique Robot from Oberpfaffenhofen

Produktinformationen. Basis Set Atmel Atmega8 & ISP Programmer. Lieferumfang :

Installation & Usage. Version 1.0. estickflashtool

Einführung in die C-Programmierung

1. Übung zu "Numerik partieller Differentialgleichungen"

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme

Praktikumstermin B-07: make & Makefiles

Erster Schritt Vom Herunterladen bis zum Programmieren

Dateien, die nicht in das Projekt eingebunden sind, werden ohne Syntax highlight dargestellt. MiCoWi und µvision Seite 1 Uwe Wittenfeld

Hello World in Java. Der Weg zum ersten Java-Programm

Einführung in wxwidgets & wxdev-c++

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet.

Softwarepraktikum: Einführung in gcc / g++

Programmierung Nibo 2 Teil 1 ATmel AVR Studio 6. * by nicaisystems. Programmierung Nibo 2 Teil 1 - AVR Studio 6 1

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

DLLs (dynamic loaded libraries) mit MingW erstellen

AVR UART. ELV Modul: ch=&marke=

Fallunterscheidung: if-statement

Einführung in das Programmieren in der Sekundarstufe 1. mit einem Arduino und der Physical-Computing-Plattform

CCS Compiler Tutorial mit Beispielen

Modulare Programmierung und Bibliotheken

Tag 2 Eingabe und Interrupts

Systemprogrammierung.: unter Linux :.

Heimautomation unter Linux mit pvbrowser und C-CONTROL Station

Computergrafik 1 Übung, Wintersemester Eclipse Hands-On. C++ Projektsetup mit OpenGL und GLUT unter Eclipse für Windows

Projekt 25 ASURO ARX-03

Inhalt. Aufgabe 4: LED-Modul Hinweise Testen des Moduls Sommersemester 2015

Roboterbausatz NIBObee Tutorial zur Programmierung

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Klasse, Name : Datum : Rad l/r Linienfolger l/r Laderaum ATMEGA 128

8.3 Taster am µcontroller

Einführung zum MS Visual Studio

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

Installation und Inbetriebnahme von Microsoft Visual C Express

Prinzipieller Grundaufbau eines einfachen C-Programmes

Parallel-IO. Ports am ATmega128

Can2Tool_de. Copyright 2014 by Nautibus electronic GmbH. All Rights Reserved.

Ihr erstes C#- Programm

Eprog Starthilfe. 5. Oktober Einleitung 2

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

Python SVN-Revision 12

Programmieren mit RoboLab Bauen mit Lego

Propädeutikum. Dipl.-Inf. Frank Güttler

Wie man eigene Programme erstellt

Steuern des GSR-Interface mit QBasic

Rechnerarchitektur, Einführung in die Laborübungen

Programmieren mit dem Java-Hamster-Modell. VP Orientierung Informatik WS 2008/09 H.Hagenauer

Objektorientierte Programmierung OOP Programmieren mit Java

Objektorientiertes Programmieren mit Suse Linux

Vertiefung Prozessdatenverarbeitung SS Steuerung eines Asuro-Roboters. von Patrick Deuster Nicole Meuser Alexander Piel

Aufgaben zur Attiny-Platine

Programmieren I. Administratives / Java Installation. Thomas Vetter, Brian Amberg, Andreas Forster. 21. September 2010 UNIVERSITÄT BASEL

Bei jedem Arduino-Projekt muss man ein Grundgerüst "bauen". Das sieht dann so aus:

Kurze Einführung in die Programmiersprache C++ und in Root

Informatik 1 Tutorial

1. Vom Sourcecode zum Programm

Der C++ Crashkurs v1.0

Nuetzlicher Kleinkram

System Design Projekt Einführung in NXC

Installation & Verwendung. Version 1.0. WinAVR

i2c-bus.de I2C-001 KURZBESCHREIBUNG I 2 C Modul mit PCF Bit I/O Port-Expander Dokument NR.: I2C-001-D-01

Programmentwicklung mit C++ (unter Unix/Linux)

Starterbundle: 4 x PAR-64 10mm LED LF-5 Foot-Controller

Was unterscheidet Microcontroller von einem PC ( Laptop ) oder einem Handy

Projektdokumentation für den Fußballroboter Jaqueline. Rene Peschmann und Ronny Gorzelitz

Grundlagen der C++ - Programmierung für das MiniBoard von qfix 1

Einführung in die Programmierung

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Zählen von Objekten einer bestimmten Klasse

Die Entwicklungsumgebung. Labor Technische Informatik. Prof. Dr.-Ing. F. Kesel Dipl.-Ing. (FH) A. Reber

Starten Sie die Arduino IDE und geben Sie den folgenden Programmcode ein:

Informatik I Tutorial

11: Echtzeitbetriebssystem ucos-ii

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

i2c-bus.de I2C-002 KURZBESCHREIBUNG I 2 C Modul mit PCA Bit I/O Port-Expander Dokument NR.: I2C-002-D-01

Einführung in die Arduino Programmierung am Beispiel eines Roboters.

Autonome Mobile Systeme. Dr. Stefan Enderle

Version 0.3. Installation von MinGW und Eclipse CDT

AVR-Programmierung unter Mac OSX

2010 Ing. Punzenberger COPA-DATA GmbH. Alle Rechte vorbehalten.

C++ mit Eclipse & GCC unter Windows

Laborprojekt ASURO - Vorbereitung

Einführung in die Programmierung mit Qt

C++ mit dem Arduino (Uno und Mega2560)

Raspberry Pi Basis-Workshop

Comtarsia SignOn Familie

Projekt: Ampelsteuerung für die Kinderverkehrserziehung der Stadtpolizei Dornbirn

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Felder und Schleifen. Themen heute. Felder Schleifen Heartbleed. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl

Modellgestütztes Software Engineering. Versuch 5. Wintersemester 2015

RN-Control ARDUINO Bibliothek ATMEL 32 Version 0.2

Lehrfach: Mikrorechentechnik Versuch: Zeitmessung

Transkript:

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Workshop: ASURO-Programmieren in C Teil 2: Praxis Markus Becker http://mbecker-tech.de Bürgernetz Ingolstadt e. V. / ByteWerk Stand: 24. April 2010 Copyright: Creative Commons by-nc-sa @ Markus Becker M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 1 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Inhalt Inhaltsverzeichnis 1 Toolkette 2 Erste Schritte LEDs ansteuern Auf Sensorik reagieren 3 ASURO fahren lassen Geradeaus und Kurven Linie folgen Mit Kollisionserkennung M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 2 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis 1 Toolkette 2 Erste Schritte LEDs ansteuern Auf Sensorik reagieren 3 ASURO fahren lassen Geradeaus und Kurven Linie folgen Mit Kollisionserkennung M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 3 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Editor Editor: Notepad++ (Windows) und Geany (Unix) Syntax-Highlighting Auto-Vervollständigung Integrierte Kommandozeile zum Kompilieren Windows: Programmer s Notepad von ASURO-CD auch möglich M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 4 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Compiler Compiler: avr-gcc Standard-Compiler für AVR-Micro-Controller, GPL Anpassung über makefile Installation mitsamt weiterer Tools über WinAVR Windows: PATH-Umgebungsvariable auf WinAVR/utils/bin Aufruf über Kommandozeile im Ordner der Quellcode-Dateien C:\Asuro> make all Erzeugt Maschinencode in Form einer hex-datei M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 5 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Flashen Flashen: Flash-Tool (Windows) und asurocon (Unix) Zum Übertragen der hex-datei auf den Micro-Controller Flash-Tool unter Windows asurocon-aufruf: asurocon /dev/ttys0 hexfile.hex Ablauf: erst ASURO einschalten, dann Flashen starten M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 6 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis LEDs ansteuern 1 Toolkette 2 Erste Schritte LEDs ansteuern Auf Sensorik reagieren 3 ASURO fahren lassen Geradeaus und Kurven Linie folgen Mit Kollisionserkennung M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 7 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis LEDs ansteuern Aufgabe Dauerlicht Front-LED einschalten Status-LED grün Linke Heck-LED an, rechte Heck-LED aus Hinweis Da die ASURO-Library über das makefile verlinkt wurde ist keine Pfadangabe zur asuro.h nötig, es reicht: #include <asuro.h> M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 8 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis LEDs ansteuern 1 # include <asuro.h> 2 3 void main ( void ) { 4 Init (); 5 FrontLED (ON); 6 StatusLED ( GREEN ); 7 BackLED (ON, OFF ); 8 9 while (1) ; // Endlosschleife 10 } Listing 1: Lösung zu Aufgabe Dauerlicht M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 9 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis LEDs ansteuern Aufgabe Lauflicht Nacheinander folgende LED s leuchten lassen, Zeitabstand 1s Front-LED Status-LED grün, rot, gelb Linke Heck-LED, rechte Heck-LED Hinweis Die Funktion Sleep () geht nur bis maximal ca. 3.5ms (originale Library) bzw. 7ms (erweiterte Library), Lösung: eigene Sleep-Funktion void sleep ms (int ms) M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 10 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis LEDs ansteuern 1 # include <asuro.h> 2 3 # define DELAY 1000 // 1000 ms = 1 s 4 5 void sleep_ ms ( int ms) { 6 while (ms > 0) { 7 Sleep (72) ; // 1ms 8 ms = ms - 1; 9 } 10 } 11... Listing 2: Lösung zu Aufgabe Lauflicht : ms sleep () M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 11 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis LEDs ansteuern 1 void main ( void ) { 2 Init (); 3 while (1) { 4 FrontLED (ON); 5 sleep_ms ( DELAY ); 6 FrontLED ( OFF ); 7 StatusLED ( GREEN ); 8 sleep_ms ( DELAY ); 9 StatusLED ( RED ); 10 sleep_ms ( DELAY ); 11 StatusLED ( YELLOW ); 12 sleep_ms ( DELAY ); 13 StatusLED ( OFF ); 14 BackLED (ON, OFF ); 15 sleep_ms ( DELAY ); 16 BackLED (OFF, ON); 17 sleep_ms ( DELAY ); 18 BackLED (OFF, OFF ); } } Listing 3: Lösung zu Aufgabe Lauflicht main () M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 12 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Auf Sensorik reagieren 1 Toolkette 2 Erste Schritte LEDs ansteuern Auf Sensorik reagieren 3 ASURO fahren lassen Geradeaus und Kurven Linie folgen Mit Kollisionserkennung M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 13 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Auf Sensorik reagieren Aufgabe Linienerkennung Front-LED einschalten ( Straßenbeleuchtung ) Auslesen der Werte der vorderen Photodioden Unterscheidung, ob links oder rechts neben Strich und Einschalten der Back-LED auf der selben Seite M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 14 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Auf Sensorik reagieren 1 # include <asuro.h> 2 # define OFFSET 5 3 void main ( void ) { 4 int data [2]; 5 Init (); 6 FrontLED (ON); 7 while (1) { 8 data = LineData (); 9 if ( data [0] > data [1] - OFFSET ) 10 BackLED (ON, OFF ); 11 else if ( data [0] < data [1] + OFFSET ) 12 BackLED (OFF, ON); 13 else 14 BackLED (OFF, OFF ); 15 } 16 } Listing 4: Lösung zu Aufgabe Linienerkennung M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 15 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Auf Sensorik reagieren Aufgabe Taster erkennen Zyklische Abfrage der vorderen Schalter Unterscheidung, ob links oder rechts gedrückt wurde und Einschalten der Back-LED auf der selben Seite M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 16 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Auf Sensorik reagieren 1 # include <asuro.h> 2 void main ( void ) { 3 unsigned int switch ; 4 Init (); 5 while (1) { 6 switch = PollSwitch (); 7 if ( switch!= 0) { // Schalter gedrueckt 8 if ( switch <= 7) // Tastsignal RECHTS 9 BackLED (OFF, ON); 10 else // Tastsignal LINKS 11 BackLED (ON, OFF ); 12 } 13 else 14 BackLED (OFF, OFF ); 15 } 16 } Listing 5: Lösung zu Aufgabe Taster erkennen M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 17 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Geradeaus und Kurven 1 Toolkette 2 Erste Schritte LEDs ansteuern Auf Sensorik reagieren 3 ASURO fahren lassen Geradeaus und Kurven Linie folgen Mit Kollisionserkennung M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 18 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Geradeaus und Kurven Aufgabe Indianapolis 2.5s geradeaus fahren (halbe Geschwindigkeit) 0.4s Linkskurve (innen Stopp, außen halbe Geschwindigkeit) 2.5s geradeaus fahren (halbe Geschwindigkeit) 0.4s Linkskurve (innen Stopp, außen halbe Geschwindigkeit)... Achtung Nicht auf dem Tisch einschalten bzw. nur wenn festgehalten, damit der ASURO nicht vom Tisch fährt / fällt. M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 19 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Geradeaus und Kurven 1 # include <asuro.h> 2 # define SPEED 127 3 # define GERADE 2500 4 # define KURVE 400 5 void main ( void ) { 6 Init (); 7 MotorDir (FWD, FWD ); 8 while (1) { 9 MotorSpeed ( SPEED, SPEED ); 10 sleep_ ms ( GERADE ); // Gerade 11 MotorSpeed (0, SPEED ); 12 sleep_ms ( KURVE ); // Kehre 13 } 14 } Listing 6: Lösung zu Aufgabe Indianapolis M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 20 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Linie folgen 1 Toolkette 2 Erste Schritte LEDs ansteuern Auf Sensorik reagieren 3 ASURO fahren lassen Geradeaus und Kurven Linie folgen Mit Kollisionserkennung M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 21 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Linie folgen Aufgabe Linie folgen Front-LED einschalten ( Straßenbeleuchtung ) Auslesen der Werte der vorderen Photodioden Wenn links oder rechts neben Strich: entsprechenden Kurve fahren (2-Punkt-Regler) Ansonsten: geradeaus fahren Achtung Nicht auf dem Tisch einschalten bzw. nur wenn festgehalten, damit der ASURO nicht vom Tisch fährt / fällt. M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 22 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Linie folgen 1 # include <asuro.h> 2 # define SPEED 127 3 # define OFFSET 5 4 void main ( void ) { 5 int data [2]; 6 Init (); 7 FrontLED (ON); 8 MotorDir (FWD, FWD ); 9 MotorSpeed ( SPEED, SPEED ); // losfahren 10 while (1) { 11 data = LineData (); 12 if ( data [0] > data [1] - OFFSET ) 13 MotorSpeed ( SPEED, 0); // Rechtskurve 14 else if ( data [0] < data [1] + OFFSET ) 15 MotorSpeed (0, SPEED ); // Linkskurve 16 else 17 MotorSpeed ( SPEED, SPEED ); // Geradeaus 18 } 19 } Listing 7: Lösung zu Aufgabe Linie folgen M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 23 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Linie folgen Verbesserung des simplen Reglers Schwachstellen: Nur beschränkte Geschwindigkeit möglich Keine engen Radien möglich (ASURO verlässt sonst die Linie) Keine Erkennung, ob noch auf der Linie Harte Regelung Verbesserungsmöglichkeiten: Zusätzliche Erkennung, ob noch auf der Linie Zustandsautomat zur Speicherung des letzten Zustands (auf der Linie, links oder rechts) Mehrere Regelstufen M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 24 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Mit Kollisionserkennung 1 Toolkette 2 Erste Schritte LEDs ansteuern Auf Sensorik reagieren 3 ASURO fahren lassen Geradeaus und Kurven Linie folgen Mit Kollisionserkennung M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 25 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Mit Kollisionserkennung Aufgabe Linie folgen und Hindernissen ausweichen Front-LED einschalten ( Straßenbeleuchtung ) Auslesen der Werte der vorderen Photodioden Wenn links oder rechts neben Strich: entsprechenden Kurve fahren (2-Punkt-Regler) Ansonsten: geradeaus fahren Taster zyklisch abfragen, um Kollision zu erkennen Bei Kollision entsprechend ausweichen und Linie wieder finden, bspw. bei Schalterkontakt rechts: nach hinten rechts fahren Achtung Nicht auf dem Tisch einschalten bzw. nur wenn festgehalten, damit der ASURO nicht vom Tisch fährt / fällt. M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 26 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Mit Kollisionserkennung Lösung zu Linie folgen und Hindernissen ausweichen Quellcode passt nicht mehr auf die Folie. M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 27 / 28

Workshop: ASURO-Programmieren in C / Teil 2: Praxis Vielen Dank Vielen Dank für die Aufmerksamkeit! M. Becker / Bürgernetz Ingolstadt e. V. / ByteWerk 24. April 2010 28 / 28