Technische Informatik; Hardwarenahe Programmierung

Digital IO Grundlegend

Table of Contents

  1. Fragen
  2. Aufgaben:

Inhalt

  • 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

  1. Welche Bibliotheksfunktionen stehen für DigitalOut zur Verfügung?
  2. Definiere einen Output-Pin mit dem Namen myLed und initialisiere ihn mit digital „0“.
  3. Wie wird ein DigitalOut-Pin definiert? (C++ Beispiel für z.B. p5)
  4. Wie wird ein DigitalIn-Pin definiert? (C++ Beispiel für z.B. Joystick-Pins )
  5. Welche Spannungswerte am Pin werden wie interpretiert?
  6. Welche Bibliotheksfunktionen stehen für DigitalIn zur Verfügung?
  7. Welche Modi können an einem DigitalIn-Pin mit der Funktion „mode“ konfiguriert werden?
  8. Wo liegen die Unterschiede zwischen DigitalOut, DigitalIn und DigitalInOut?
  9. Welche Digital I/O Klassen stehen für eine flexible Möglichkeit mehrere digitale Pins anzusprechen?
  10. 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.


All wikipages