Technische Informatik; Hardwarenahe Programmierung
Digital IO Grundlegend
- DigitalOut Class Reference Programm:
Wie liest man eine Klassenreferenz (class reference) und wie werden die Elemente der Klasse (member functions and operators) in einem Programm verwendet. - DigitalIn Program
Für das Abfragen ob ein Taster (Button, Joystick, Schalter) gedrückt wurde. Später werden damit Interrupts ausgelöst und ISR (Interrupt Service Routinen) definiert und abgearbeitet. - BusOut Programm
Um mehrere DigitalOut-Pins zu kombinieren und damit auch auf sie gleichzeitig zu schreiben - mehrere Pins als eine einzelne Schnittstelle, anstelle einzelner Pins gleichzeitig zu beschreiben.
Fragen¶
- Welche Bibliotheksfunktionen stehen für DigitalOut zur Verfügung?
- Definiere einen Output-Pin mit dem Namen myLed und initialisiere ihn mit digital „0“.
- Wie wird ein DigitalOut-Pin definiert? (C++ Beispiel für z.B. p5)
- Wie wird ein DigitalIn-Pin definiert? (C++ Beispiel für z.B. Joystick-Pins )
- Welche Spannungswerte am Pin werden wie interpretiert?
- Welche Bibliotheksfunktionen stehen für DigitalIn zur Verfügung?
- Welche Modi können an einem DigitalIn-Pin mit der Funktion „mode“ konfiguriert werden?
- Wo liegen die Unterschiede zwischen DigitalOut, DigitalIn und DigitalInOut?
- Welche Digital I/O Klassen stehen für eine flexible Möglichkeit mehrere digitale Pins anzusprechen?
- Wie wird ein BusOut definiert? (Beispiel mit 4 Leds)?
Aufgaben:¶
Information
Veröffentlichen Sie das jeweils fertige Programm aus dem mbed-Compiler mit dem Programm-Namen aus den [eckigen Klammern] nach der fortlaufenden Nummer
ODER
wenn Sie die Programme im mbed-Simulator schreiben erzeugen Sie eine entsprechende WIKI-Seite mit kurzer Programmbeschreibung und dem Code (siehe WIKI-Syntax mit Titel aus den [eckigen Klammern].
1. [DreiLed] Schreibe ein Programm in mbed C++, das die blaue LED1 mit 100Hz blinken lässt
- zusäztlich die LED2 mit 50Hz blinken lässt
- LED3 dann leuchtet, wenn LED1 und LED2 eingeschaltet sind.
2. [LedFunc] Schreibe folgende Funktion:
- allLedsOn(), die alle 4 blauen LEDs einschaltet
- allLedsOff(); die alle 4 blauen LEDs ausschaltet
- changeLed1(), die die Led LED1 toggelt (wenn sie ein (1) ist dann aus (0) und umgekehrt)
- changeLed(led), mit dem Parameter der Led, sodass verschiedene Leds getoggelt werden können
3. [SelLed] Definiere eine 4-Bit Konstante und gebe den Wert auf die vier blauen Leds aus (nur diejenigen Leds werden eingeschaltet, die im Wert gesetzt sind).
- 3a. schreibe obigen Code in die Funktion selectivLedsOn(wert).
4. [LaufDig] Erstelle mit Hilfe der DigitalOut ein Lauflicht mit den integrierten vier blauen LEDs.
5. [Knightrider] Erstelle mit Hilfe der DigitalOut ein Programm zur Erzeugung des LED-Sweep-Effekt „Knightrider“ mit den integrierten vier blauen LEDs.
6. [BtnLed1] Schreibe ein Programm in mbed C++, das die LED1 mit 100Hz blinken lässt. Nach drücken des Joysticks (BUTTON1 im Simulator) soll die LED1 mit 50Hz blinken und nach einem weiteren drücken wieder mit 100Hz.
7. [BtnLauflicht] Schreibe ein Lauflicht für die vier blauen Leds und schalte durch drücken des Joysticks (BUTTON1 im Simulator) die Laufrichtung um.
8. [BtnCnt] Zähle wie oft der Joystick (BUTTON1 im Simulator) gedrückt wurde und schalte für je 5 Mal drücken die nächste blaue Led ein.
9. [LaufBus] Erstelle mit Hilfe der BusOut ein Lauflicht mit den integrierten vier blauen LEDs.