This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| de:exercises:digi [2009/04/08 11:00] – angelegt nierhoff | de:exercises:digi [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Digital i/o ====== | + | ===== Aufgaben: Digitale I/O ===== |
| - | ===== Digital i/o ===== | + | Ziel ist es, ein Programm zu schreiben, welches die unten beschriebenen Aufgaben ausführt. |
| - | Schreibe ein Programm das... | + | ===== Aufwärm-Übung ===== |
| - | - ... bei dem Drücken von Schalter 1 (S1), LED 2 einschaltet; | + | |
| - | - ... eine Ampel mithilfe von LEDs simuliert (Gelb blinkt beim Wechsel Grün zu Rot, usw.) | + | |
| - | - ... Tastendrücke zählt und den Wert binär codiert auf den LEDs anzeigt. Max 7. (Ein Tastendruck wird beim Loslassen des Knopfes gezählt) | + | |
| - | - ... | + | |
| - | - ... simulates memory game. Every LED corresponds a button (LED1=>S1, etc.) Controller flashed LEDs in random order and user have to repeat this order. Every next step the sequens goes longer. After every insertion controller test the result. If wrong insertion is detected the game is over and result is presented to the user (on the 7-seg display or LCD). | + | |
| - | - ... measures reaction time. Program start when one button is pressed, then a LED goes on and user have to press a button under the LED. Sequence and time when LED goes on is random. Best result in milliseconds is presented to the user (on the 7-seg display or LCD). | + | |
| + | * Durch Drücken von S1 leuchtet eine LED auf, drückt man S2 leuchten zwei und bei S3 drei LEDs. | ||
| - | ===== Timers | + | ===== Für Anfänger |
| - | Write the program that ... | + | |
| - | - ... flashes | + | - Es wird eine von Hand betriebene Ampel an einer Fußgängerkreuzung simuliert. Solange kein Schalter gedrückt wird, leuchtet eine grüne LED für die Autos. Nach Betätigung eines zufälligen Schalters beginnt die grüne LED für drei Sekunden zu blinken, daraufhin leuchtet die gelbe LED für 3 Sekunden und die rote für 10 Sekunden. Nach dieser Sequenz leuchtet erneut die grüne LED. |
| - | - ... flashes | + | - Es soll gezählt werden, wie oft ein Schalter betätigt wurde. Nur durch ein vollständiges Lösen des Schalters wird das Herunterdrücken vollendet. Das Ergebnis wird als Binärcode auf den LEDs angezeigt. Das maximale Ergebnis bei drei LEDs ist 7 (23-1). Die grüne markiert das erste, die gelbe das zweite und die rote das dritte Bit. |
| + | - Durch Drücken von Schalter 1 leuchten LED 1 und LED 3. Drückt man S2 leuchtet die gelbe LED, Schalter 3 sorgt dafür, dass keine LED leuchtet. Diese Operation muss unter direkter Verwendung von Registerwerten (also ohne Nutzung der HomeLab Bibliothek) durchgeführt werden. | ||
| + | - Es soll gezählt werden, wie oft ein Schalter gedrückt wurde. Das Ergebnis wird durch Blinken der LEDs dargestellt. Nach jeder Betätigung des Schalters wird die Anzahl der blinkenden LEDs um eins erhöht. Der Schalter kann zufällig ausgewählt werden. Damit die LED blinkt muss eine Unterfunktion genutzt werden, deren Parameter die blinkenden LEDs zählt. | ||
| + | - Wird S1 betätigt, sendet die rote LED durch Blinken " | ||
| + | |||
| + | ===== Für Fortgeschrittene ===== | ||
| + | |||
| + | - Zu jedem der drei Schalter gehört eine LED, welche aufleuchtet wenn der Schalter betätigt wird. Zum an- oder ausschalten sollen Register und nur eine zuordnende Operation genutzt werden (Hinweis: Nutzen Sie Bitverschiebungen). | ||
| + | - Für jede LED gibt es einen Schalter. Der Controller bringt die LEDs in zufälliger Reihenfolge zum Blinken und der Nutzer muss diese Sequenz wiederholen. Die Blinksequenz verlängert sich, nach jeder Runde kommt eine LED hinzu. Bei einem falschen Eintrag blinken alle LEDs dreimal (Die Anzahl korrekter Einträge des Nutzers muss auf einem LCD-Display angezeigt werden). | ||
| + | - Das Programm misst die Zeit für eine Reaktion. Eine zufällige LED leuchtet auf und der Nutzer muss den zugehörigen Schalter so schnell wie möglich betätigen. Die Zeit bis zum Aufleuchten der LED ist zufällig, aber nicht kleiner als 100 ms. Das Ergebnis wird auf einem LCD-Display in Millisekunden dargestellt. Der Wert der Schalter kann nicht mit einer Filterfunktion für das Flackern gelesen werden, da diese eine weitere Verzögerung verursacht. | ||
| + | |||
| + | ===== Fragen ===== | ||
| + | |||
| + | - Was ist der Unterschied zwischen den Operationen ”=” und ”==”? Nennen Sie zwei Beispiele um Ihre Antwort zu verifizieren. | ||
| + | - Was ist der Unterschied zwischen den Operationen “|” und “||”? Nennen Sie zwei Beispiele um Ihre Antwort zu verifizieren. | ||
| + | - Schreiben Sie einen Ausdruck, welcher die Gleichung “x = x + 1” zwölfmal verwendet. | ||
| + | - Wie wird eine Endlosschleife in C geschrieben? | ||
| + | - Welcher Variablentyp wird in C verwendet um positive Werte zwischen 7 und 154 dazustellen? | ||
| + | - Welches Register legt die Richtung eines Anschlusses fest? Nennen Sie ein Beispiel zur Konfiguration von Input und Output eines Anschlusses. | ||
| + | - Welche Methoden gibt es um das Zurückspringen von Kontakten zu sowie der durch Flimmern hervorgerufenen falschen Verbindungen zu verhindern? Geben Sie Lösungsbeispiele unter der Nutzung von Hard- und Software. | ||
| + | - Was versteht man unter einer Bitverschiebung? | ||
| + | - Warum werden pull-up Widerstände in Schalter verwendet? Wie ist deren Widerstand festgelegt? | ||
| + | - Errechnen Sie den Widerstand für die regulierende LED Stromstärke, | ||
| - | ===== 7-seg number inicator ===== | ||
| - | Kirjutada programm, mis ... | ||
| - | - ... counts numbers on 7-seg display from 1 to 9. If button S1 is pressed the counting starts to go backward. If S3 is pressed the counting resumes to go forward. Digit change frequency is 1 second. | ||