GPIO
Einführung¶
Allzweckeingabe/-ausgabe (engl. GPIO - General Purpose Input/Output) ist ein allgemeiner Kontaktstift (Pin) an einem Mikrokontroller, dessen Verhalten, unabhängig, ob als Eingabe- oder Ausgabekontakt, durch logische Programmierung frei bestimmbar ist. GPIO-Kontakten ist kein Zweck vorgegeben, sie sind daher standardmäßig unbelegt.
Das K64F Board hat einen Vielzahl von GPIO Pins. Aus Kompatibiliätsgründen zu den anderen Boards (und dem Shield) verwenden wird aber nur die mit D0 - D15 und A0 - A5 bezeichneten Pins.
GPIO Klassen¶
Mittels folgender Grundklassen kann den GPIO Pins ein Zweck vorgegeben werden:
- DigitalOut - Ausgabe einer Positiven Spannung
- DigitalIn - Lesen des Status eines Pins
- AnalogIn - Auslesen der Spannung an einem Pin
- PwmOut - Erzeugen einer Spannung, mittels Pulsweitenmodulation (PWM)
Programme¶
DigitalOut¶
DigitalOut - Ausgabe einer Positiven Spannung
#include "mbed.h" DigitalOut led( D10 ); int main() { while(1) { led.write( 0 ); wait(0.8); led.write( 1 ); wait(1.0); } }
Import programDigitalOut
Mittels DigitalOut kann eine Positive Spannung an einem Pin erzeugt werden.
DigitalIn¶
DigitalIn - Lesen des Status eines Pins
#include "mbed.h" DigitalIn button1( A0, PullUp ); DigitalOut led1( D10 ); int main() { while ( 1 ) { led1 = 0; if ( button1 == 0 ) { led1 = 1; wait( 1.0 ); } } }
Import programDigitalIn
DigitalIn liest den Status eines Pins aus.
AnalogIn¶
AnalogIn - Auslesen der Spannung an einem Pin
#include "mbed.h" AnalogIn poti( A0 ); DigitalOut led1 ( D10 ); int main() { while ( 1 ) { if ( poti.read() < 0.5f ) // in Prozent led1 = 1; else led1 = 0; wait ( 1.0 ); //if ( licht.read_u16() > 32767 ) // als short Ganzzahl // ....; } }
Import programAnalogIn
Liest die Spannung an einem Pin.
PwmOut¶
PwmOut - Erzeugen einer Spannung, mittels Pulsweitenmodulation (PWM)
#include "mbed.h" PwmOut led( D13 ); int main() { for ( float i = 0.0; i < 1.0f; i += 0.01f ) { led = i; wait ( 0.1 ); } }
Import programPwmOut
Pulsweitenmodulation
Übungen¶
DigitalIn, DigitalOut, if, wait¶
Schreibt ein Programm welches eine der vier LED's bei Druck einer Taste 3 lang Sekunden aufleuchten lässt.
Anwendung: Licht Treppenhaus.
Import program0-04-01-Uebung
4.1 LED x Sekunden aufleuchten bei Tastendruck (if, wait)
DigitalOut, for Verschachtelt, wait, Array's¶
Erstellt eine Array welche die 4 LED anhand einer Pseudo Melodie aufleuchten lässt.
Anwendung: Fernseher Simulation um Einbrecher abzuschrecken.
Import program0-04-04-Uebung
4.4 Melodie visualisieren (for Verschachtelt, wait, Array's)
if/else, AnalogIn, PwmOut¶
Schaltet eine LED mittels Tastendruck ein- und aus. Zusätzlich soll der Wert des Poti zur Helligkeitssteuerung verwendet werden.
Anwendung: Lichtschalter mit Dimmer.
Import program0-04-07-Uebung
4.7 LED mittels Tastendruck ein- und ausschalten. (if/else, AnalogIn) mit Berücksichtigung Poti (PWM)
Zusammenfassung¶
Allzweckeingabe/-ausgabe (engl. GPIO - General Purpose Input/Output) ist ein allgemeiner Kontaktstift (Pin) an einem Mikrocontroller, dessen Verhalten, unabhängig, ob als Eingabe- oder Ausgabekontakt, durch logische Programmierung frei bestimmbar ist. GPIO-Kontakten ist kein Zweck vorgegeben, sie sind daher standardmäßig unbelegt.
Mittels folgender Grundklassen kann den GPIO Pins ein Zweck vorgegeben werden:
- DigitalOut - Ausgabe einer Positiven Spannung
- DigitalIn - Lesen des Status eines Pins
- AnalogIn - Auslesen der Spannung an einem Pin
- PwmOut - Erzeugen einer Spannung, mittels Pulsweitenmodulation (PWM)
Weitere Informationen: Using mbed libraries