• Keine Ergebnisse gefunden

Gelb Rot Rot/GelbGrün

N/A
N/A
Protected

Academic year: 2021

Aktie "Gelb Rot Rot/GelbGrün"

Copied!
8
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Einleitung

Eine Verkehrsampel durchläuft verschiedene Zustände. Bestimmte Ereignisse – zum Beispiel ein Tastendruck oder der Ablauf einer Wartezeit – führen zum Wechsel des aktuellen Zustands. Ein vereinfachtes Beispiel:

Rot

Wenn: Tastendruck Aktion: Rot + Gelb an,

Grün aus

Rot/Gelb

Grün

Gelb

Wenn: 5 Sek. vergangen Aktion: Grün an,

Rot + Gelb aus

Wenn: 15 Sek. vergangen Aktion: Gelb an,

Rot + Grün aus Wenn: 5 Sek. vergangen

Aktion: Rot an,

Gelb + Grün aus

(2)

Einleitung

#define ZUSTAND_ROT 1

#define ZUSTAND_ROTGELB 2

#define ZUSTAND_GRUEN 3

#define ZUSTAND_GELB 4 uint32_t start = 0;

uint8_t state = ZUSTAND_ROT; rot(); // Startzustand: Rot einschalten

while(1) // Hinweis: Millis() ermittelt die Millisekunden seit Programmstart {

switch(state) {

case ZUSTAND_ROT:

if(tastendruck()) { rot_gelb(); start=Millis(); state=ZUSTAND_ROTGELB; } break;

case ZUSTAND_ROTGELB:

if(Millis()-start>5000) { gruen(); start=Millis(); state=ZUSTAND_GRUEN; } break;

case ZUSTAND_GRUEN:

if(Millis()-start>15000) { gelb(); start=Millis(); state=ZUSTAND_GELB; } break;

case ZUSTAND_GELB:

if(Millis()-start>5000) { rot(); state=ZUSTAND_ROT; } break;

} }

Ausschnitt aus der Implementierung des endlichen Automaten. Hinweis: Die Funktionen rot(), rot_gelb(), gruen() und gelb() schalten die

jeweiligen Lampen der Ampel ein…

(3)

Endlicher Automat

(engl. finite-state machine)

A finite-state machine (FSM) is a mathematical model of computation used to design both computer programs and sequential logic circuits.

It is conceived as an abstract machine that can be in one of a finite number of states. The machine is in only one state at a time; the state it is in at any given time is called the current state. It can change from one state to another when initiated by a triggering event or condition; this is called a transition.

Finite-state machines can model a large number of problems, among which are electronic design automation, communication protocol design, language parsing and other engineering applications.

Quelle: [1]

(4)

Treppenlicht mit Funktion zum „Nachdrücken“ (a)

Programmieren Sie nochmals ein automatisches Treppenlicht (vergl. letztes Praktikum, Ende von Teil F). Das Verhalten des Treppenlichts wird nun durch den folgenden endlichen Automat beschrieben:

Zusatzaufgabe: Kurz bevor das Treppenlicht ausgeht, blinkt es 5 Sekunden lang zur

„Warnung“. Auch während des Blinkens kann bei Bedarf „nachgedrückt“ werden.

AUS

Wenn: Tastendruck

Aktion: start = Millis(), Relais einschalten

EIN

Wenn: Millis() - start > 10.000 Aktion: Relais ausschalten

Wenn: Tastendruck Aktion: start = Millis()

Aufgabe G1

(5)

Treppenlicht mit Funktion zum „Nachdrücken“ (b)

volatile uint32_t _millis_intern = 0; // Millisekunden seit Programmstart uint32_t Millis(void) // Millisekunden seit Programmstart abfragen

{

uint32_t result = 0;

// Die folgende Zuweisung darf nicht unterbrochen werden!

cli(); result = _millis_intern; sei();

return result;

}

ISR(TIMER0_COMPA_vect) // Timer-Interrupt: Millisekunden zählen {

_millis_intern++;

}

void init_timer(void) // Timer initialisieren, Frequenz = 1 kHz {

TCCR0A = _BV(WGM01); // CTC-Modus (siehe Tab. 19-9, S. 140) TCCR0B = _BV(CS01) + _BV(CS00); // Prescaler = 64 (Tab. 19-10, S. 142) OCR0A = 249; // Vergleichswert für Timer

TIMSK0 = _BV(OCIE0A); // Compare Match Interrupt (siehe S. 143)

sei(); // Interruptsystem des Controllers ein

Aufgabe G1

(6)

Elektronisches Codeschloss

Programmieren Sie ein elektronisches Codeschloss mit drei Tasten „A“, „B“ und „C“.

Der Code zum Öffnen des Schlosses lautet „ABCBA“.

• Die Betätigung der Tasten „A“, „B“ und „C“ wird über die serielle Schnittstelle vom PC an den Mikrocontroller übermittelt.

• Nach Eingabe des korrekten Codes wird das Relais an PB2 umgeschaltet.

Aufgabe G2

0 1 2 3 4

Start

A B C B A

A A A

sonst

sonst

sonst sonst

Relais an PB2 umschalten

(7)

Kfz-Innenbeleuchtung

Programmieren Sie ein Steuergerät für die Innenbeleuchtung eines Autos.

Die Innenbeleuchtung reagiert auf die Stellung der Fahrzeugtür (regelbarer

Widerstand an ADC0/PC0) und auf einen Taster direkt an der Leuchte (Anschluss PD2). Die Stromversorgung der Lampe geschieht über ein Relais (Anschluss PB2).

Aus

Wenn: (manuell_ein == 1) oder Tür auf Aktion: Innenbeleuchtung einschalten

An

Wenn: (manuell_ein == 0) und Tür zu

Aktion: Innenbeleuchtung ausschalten Wenn:

Tastendruck Aktion:

manuell_ein = (1 - manuell_ein) Wenn:

Tastendruck Aktion:

manuell_ein = 1 Start: Lampe aus, manuell_ein = 0

Aufgabe G3

(8)

Quellenverzeichnis

[1] Engl. Wikipedia: „Finite-state machine“ (Stand: 05.04.2016)

Referenzen

ÄHNLICHE DOKUMENTE

In der ambulanten Versorgung durch Arztpraxen will die AfD die Übernahme einer Praxis für junge Ärzte attraktiver machen und das Abrechnen der Leistungen für die

[r]

Male die unten abgebildeten Kästchen mit passender Farbe an, schneide sie aus und klebe Sie passend in das

7140 - Übergangs- und Schwingrasenmoore 7210 - Kalkreiche Sümpfe mit Schneidried 7230 - Kalkreiche Niedermoore. 9110

Sie umfassen die Verbesserung des derzeitigen Erhaltungszustands (Ausnahme: Bestände, die bereits in hervorragendem Erhaltungszustand

Schaffung neuer Kleingewässer für die Gelbbauchunke (99) 1193 Verbesserung der Wasserqualität an der Rot (23.9) 3260 1163. Anlage Flachwasserzone

Schaffung neuer Kleingewässer für die Gelbbauchunke (99) 1193 Verbesserung der Wasserqualität an der Rot (23.9) 3260 1163. Anlage Flachwasserzone

Es wird keine Haftung übernommen für Schäden durch die Verwendung von Informationen aus diesem Online-Angebot oder durch das Fehlen von Informationen.. Dies gilt auch für