This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| de:exercises:digi [2010/11/09 23:55] – Wember | 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; | + | |
| - | | + | |
| - | - ... 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) | + | |
| - | - ... ein elektronisches Türschloss simuliert. Werden die Knöpfe in der Reihenfolge S3 – S2 - S1 betätigt, leuchtet die grüne LED. Alle anderen Kombinationen lassen die rote LED leuchten. Jeder Kopfdruck wird durch das Aufleuchten der gelben LED signalisiert. | + | |
| - | - ... ein Memory-Spiel simuliert. Jede LED gehört zu einem Knopf (LED1⇒S1, usw.). Die LEDs leuchten in zufälliger Reihenfolge auf und der Spieler muss diese Reihenfolge wiederholen. In jedem Durchgang verlängert sich die Sequenz um einen Schritt. Nach jeder Eingabe überprüft der Controller das Resultat. Eine falsche Eingabe führt zum GAME OVER (wird angezeigt auf der Siebensegmentanzeige oder dem LCD) | + | |
| - | - ... die Reaktionszeit ermittelt. Das Programm startet bei beliebigem Knopfdruck. Eine LED geht an und der Benutzer muss den Knopf unter der LED drücken. Sequenz und Zeitintervall der leuchtenden LEDs ist zufällig. Das beste Resultat wird dem Benutzer in Millisekunden angezeigt (auf der Siebensegmentanzeige oder dem 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 |
| - | Schreibe | + | |
| - | - ... mithilfe eines Timers | + | - 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. |
| - | - ... mithilfe eines Timers die LEDs mit verschiedenen Frequenzen aufleuchten lässt. S1 erhöht | + | - 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 | ||
| + | - 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 | ||
| + | - 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, die Spannung beträgt 5 V, die Durchlassspannung der LED beträgt 2,7 V und die Stromstärke 30 mA. | ||
| - | ===== Siebensegmentanzeige ===== | ||
| - | Schreibe ein Programm das... | ||
| - | - ... Zahlen auf der Siebensegmentanzeige von 1 bis 9 hoch zählt. S1 lässt das Zählen rückwärts laufen; S3 wieder vorwärts. Die Zählfrequenz soll eine Sekunde betragen. | ||