Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
You are viewing an older revision! See the latest version
Digital IO Erweitert
Neben DigitalOut und DigitalIn, die pro Pin arbeiten, gibt es beim mbed zur vereinfachten Bearbeitung von z.B. einem Datenbus die parallel data and communication (siehe Slides 1 bis 8) und hier speziell das BusOut Interface.
BusOut¶
Das BusOut-Interface kann an jedem Pin mit blauer Beschriftung sowie an den integrierten LEDs (LED1-LED4) verwendet werden. Über die BusOut-Schnittstelle kann der Status des Ausgangs-Pins eingestellt und der aktuelle Ausgangsstatus zurückgelesen werden. Setzen Sie den BusOut auf Null, um ihn auszuschalten, oder auf 1, um ihn einzuschalten.
Aufgabe: Schreiben Sie ein Lauflicht für die 4 On-board Leds.
Schreiben Sie ein Programm mit Funktionen, 4-Bit Werte auf die 4 Leds des M3Boards geschrieben werden können:
- Untersuchen der BusOut-Klasse der mbed-Bibliothek
- Globale BusOut-Variable erzeugen.
- Funktion LedBusOn(...) schreiben, die einen Integer/Hex-Wert auf den Led-Bus schreibt.
- Test der Funktion LedBusOn(i++);
Zusatzaufgabe 1:
- Funktion LedBusAscii(...), die das untere Nibble eines ASCII-Wertes am Led-Bus anzeigt.
Zusatzaufgabe 2:
- Globale Variable mit Array von Pins erzeugen.
- Anmerkung: Bei der Definition des PinName-Arrays muss als Arraygröße 16 angegeben werden obwohl nur 1 Byte (Nibble bei M3) benötigt wird, sonst stürtzt das Programm ab (siehe Konstruktor BusOut):
PinName pinBus[16] = {pin1, pin2, ..., pin8}; PinName pinBusM3[16] = {pin1, pin2, ..., pin3};
Vertiefung¶
Aufgaben:¶
1. [Bus4Leds] Definiere eine 4-Bit Konstante und gebe den Wert auf die vier blauen Leds aus - die nur diejenigen Leds einschaltet, die im Wert gesetzt sind. Schreibe die Funktion selectivLedsOn(wert) und teste diese in der main() Funktion.
2. [JoyLedMap] Gebe für die jeweiligen Joystick Schalter die entsprechende blaue Led aus: right = LED1, left=LED2, up=LED3, down =LED4
Aufgaben¶
Veröffentlichen Sie die Dateien/Bibliothek und schreiben Sie einen WIKI-Eintag mit kurzer Programmbeschreibung.
3. [TwoLedFunc] Erzeuge die in main() aufgerufenen Funktionen für zwei Leds:
main() { ledOn(); // beide Leds einschalten ledOff(); // beide Leds ausschalten ledX(); // beide Leds gegengleich schalten printStatus(); // Anzeigen ob Leds ein oder aus }
4. [FourLeds] Erzeugefür vier Leds und folgenden Funktionen:
main() { lauflicht(); /********************************* D1 D2 D3 D4 - - - - Ein Durchgang dauert 2 sec X - - - - X - - - - X - - - - X - - - - X=ON - = off *********************************/ lauflichtbalken(); /********************************* D1 D2 D3 D4 - - - - Ein Durchgang dauert 2 sec X - - - X X - - X X X - X X X X - - - - X X X X X=ON - = off **********************************/ }
5. [HexLeds] Erzeuge das folgende HexLeds Programm für vier Leds und folgenden Funktionen:
main() { hexleds.eingabe() // einlesen eines Integer-Wertes von der Tastatur mit scanf("%d", &ein); hexleds.ausgabe() // ausgeben des Integer-Wertes der von der Tastatur eingegeben wurde hexleds.hexOut() // Ausgabe des Wertes in Hex-Darstellung an den 4 Leds hexleds.printStatus() // Anzeigen ob Leds ein oder aus }
Anm.: Überprüfen Sie ob der eingebene Wert zwischen 0 und 15 liegt.
6. [Bankomat] Erzeuge eine Bankomat Nachahmung mit folgenden Funktionen:
random() // erzeugen eines zufälligen 4-stelligen Pins showPin() // zeigt den Pin-Code an den Leds an int checkPin() // Überprüft eine Eingabe mit dem Pin und gibt 1 zurück wenn gleich, sonst 0