From a5ccba0e1cc4d4a84b556e10557eb2e97b3a5cfd Mon Sep 17 00:00:00 2001 From: Thammi Date: Wed, 11 Mar 2015 20:22:39 +0100 Subject: [PATCH 1/2] Add install guide --- firmware/Makefile | 4 +-- firmware/doc/install.md | 54 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 firmware/doc/install.md diff --git a/firmware/Makefile b/firmware/Makefile index e47cfcd..986b839 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -1,7 +1,7 @@ -PROJECT=pentabug - APPS = buggy jumpy mariotheme geiger ducklings wuerfel blinker +PROJECT=pentabug + OPTIMIZATION = -Os MCU = atmega88pa F_CPU = 8000000 diff --git a/firmware/doc/install.md b/firmware/doc/install.md new file mode 100644 index 0000000..261bbea --- /dev/null +++ b/firmware/doc/install.md @@ -0,0 +1,54 @@ +# Installation + +Diese Anleitung geht davon aus, dass du ein Ubuntu, Debian oder ein ähnliches +Linux vor dir hast. Es wird grundlegendes Wissen im Umgang mit der Kommandozeile +vorausgesetzt. + +Als erstes müssen die benötigten Programme installiert werden: + + sudo apt-get install avr-libc avrdude gcc-avr build-essential + +Danach kannst du dir den Quellcode für die Firmware des Bugs herunterladen. +Bewege dich dafür in das Verzeichnis in das du den Quellcode kopieren möchtest +und führe folgenden Befehl aus: + + git clone https://github.com/c3d2/pentabug.git + +Jetzt hast du einen neuen Ordner namens `pentabug` in dem sich die Firmware +befindet: + + cd pentabug/firmware/ + +Nun kannst du den menschenlesbaren Quellcode in maschinenlesbare Befehle +überführen. Diesen Vorgang nennt man Kompillieren. Dabei unterstützt dich das +sogenannte `Makefile`, dass automatisch überprüft welche Dateien nicht vorhanden +sind oder geändert wurden + + make + +Wenn der Befehl oben erfolgreich durchgelaufen ist kannst du die Firmware mit +folgendem Befehl auf deinen Pentabug laden: + + make flsmart + +Nun kannst du anfangen den Quellcode anpassen und deine eigenen Programme +entwerfen. Die einzelnen Programme befinden sich im Ordner + + pentabug/firmware/app/ + +Jedes mal wenn du eine Änderung ausprobieren willst musst die wieder das +Makefile ausführen mit folgenden Befehlen + + make + make flsmart + +Wenn du ein neues Programm anlegst oder ein existierendes Programm aus der +Firmware für deinen Pentabug entfernen musst du die erste Zeile folgender Datei +editieren: + + pentabug/firmware/Makefile + +Die einzelnen Einträge hier entsprechen den Dateinamen in + + pentabug/firmware/app/ + From 0339089da20f0f2c6123341608908861df488957 Mon Sep 17 00:00:00 2001 From: Thammi Date: Wed, 11 Mar 2015 21:36:52 +0100 Subject: [PATCH 2/2] Add examples and tasks --- firmware/apps/example_1.c | 19 +++++++++++++++++++ firmware/apps/example_2.c | 18 ++++++++++++++++++ firmware/apps/example_3.c | 24 ++++++++++++++++++++++++ firmware/apps/example_4.c | 39 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+) create mode 100644 firmware/apps/example_1.c create mode 100644 firmware/apps/example_2.c create mode 100644 firmware/apps/example_3.c create mode 100644 firmware/apps/example_4.c diff --git a/firmware/apps/example_1.c b/firmware/apps/example_1.c new file mode 100644 index 0000000..6b02ee7 --- /dev/null +++ b/firmware/apps/example_1.c @@ -0,0 +1,19 @@ +#include +#include + +// was bedeuten die einzelnen Worte? +// was passiert? +// geht das einfacher? + +static void example(void) { + if(!(PINB & 1)) { + PORTD &= ~(1 << 4); + } + + + if(!(PINB & 2)) { + PORTC &= ~(1 << 2); + } +} + +REG(example); diff --git a/firmware/apps/example_2.c b/firmware/apps/example_2.c new file mode 100644 index 0000000..3a5fabe --- /dev/null +++ b/firmware/apps/example_2.c @@ -0,0 +1,18 @@ +#include +#include + +// was erwartest du das passiert? +// wie kann man das Problem lösen? + +static void example(void) { + if(button_state(LEFT)) { + led_inv(LEFT); + } + + + if(button_state(RIGHT)) { + motor_inv(); + } +} + +REG(example); diff --git a/firmware/apps/example_3.c b/firmware/apps/example_3.c new file mode 100644 index 0000000..239a2f2 --- /dev/null +++ b/firmware/apps/example_3.c @@ -0,0 +1,24 @@ +#include +#include +#include + +static void example(void) { + if(button_clicked(LEFT)) { + set_note(NOTE_C, 4); + wait_ms(500); + set_note(NOTE_D, 4); + wait_ms(500); + stop_note(); + } + + + if(button_clicked(RIGHT)) { + set_note(NOTE_D, 4); + wait_ms(500); + set_note(NOTE_C, 4); + wait_ms(500); + stop_note(); + } +} + +REG(example); diff --git a/firmware/apps/example_4.c b/firmware/apps/example_4.c new file mode 100644 index 0000000..d43d2fc --- /dev/null +++ b/firmware/apps/example_4.c @@ -0,0 +1,39 @@ +#include +#include + +// was passiert? +// gibt es probleme? +// wie kann man das problem lösen? + +static void init(void) { + led_on(RIGHT); + led_on(LEFT); +} + +static void example(void) { + led_inv(LEFT); + led_inv(RIGHT); + + wait_ms(500); + + led_inv(LEFT); + + wait_ms(500); + + led_inv(RIGHT); + + wait_ms(500); + + if(button_clicked(LEFT)) { + motor_inv(); + wait_ms(500); + motor_inv(); + wait_ms(500); + motor_inv(); + wait_ms(500); + motor_inv(); + wait_ms(500); + } +} + +REGISTER(example, init, NULL);