Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
1_Lekt_Digitalio
Wiki-Seite
Gehe auf die Lehrerbox/PE/TINF und kopiere den Inhalt der Datei program-wiki.txt
auf IHRE EIGENE Wiki-Seite und ändere bzw. erweitere die entsprechenden Programme bzw. Textteile.
Diese Programme wurden im Mbed-Simulator geschrieben und getestet.
Lekt_1: Digital_io¶
Lektion: DreiLed
Programmbeschreibung:
Änderungen:
Datum:
A1_Lekt1_DreiLed_Digitalio.cpp
/* A1_[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. */ #include "mbed.h" DigitalOut led1(D0); DigitalOut led2(A1); void a1_dreiled(); int main() { while(1) { a2_ledfunc(); } } void a1_dreiled() { led1=!led1; wait(0.50); //besser erkennbar led2=!led2; wait(0.25); //besser erkennbar if(led1==1 &&led2==1) { led3=1; } else { led3=0; } }
Lektion: LedFunc
Programmbeschreibung:
Änderungen:
Datum:
A2_Lekt1_LedFunc_Digitalio.cpp
/* 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 */ #include "mbed.h" BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); void all_ledson(); void all_ledsoff(); void changeled1(); void changeled(); int main() { while(1) { all_ledson(); wait_ms(500); all_ledsoff(); wait_ms(500); } } void all_ledson() { leds=0xff; changeled(); } void all_ledsoff() { leds=0x00; changeled(); } void changeled() { int mask=0x01; //einfach gewünschte led einstellen. int value=mask; leds=leds^value; }
Lektion: SelLed
Programmbeschreibung:
Änderungen:
Datum:
A3_Lekt1_SelLed_Digitalio.cpp
/* 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). */ #include "mbed.h" BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); int selectivLedsOn(int wert); int main() { int value=0; while(1) { value=selectivLedsOn(value); leds=leds|value; wait(1); } } int selectivLedsOn(int wert) { wert=0b1101; return wert; }
Lektion: LaufDig
Programmbeschreibung:
Änderungen:
Datum:
A4_Lekt1_LaufDig_Digitalio.cpp
/* 4. [LaufDig] Erstelle mit Hilfe der DigitalOut ein Lauflicht mit den integrierten vier blauen LEDs. */ #include "mbed.h" //BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); BusOut leds(D0,D3,D6,D9); void laufdig(); int main() { while(1) { laufdig(); } } void laufdig() { leds=1; wait_ms(200); for(int i=0;i<5;i++) { leds=leds<<1; wait_ms(200); } }
Lektion: Knightrider
Programmbeschreibung:
Änderungen:
Datum:
A5_Lekt1_Knightrider_Digitalio.cpp
/* 5. [Knightrider] Erstelle mit Hilfe der DigitalOut ein Programm zur Erzeugung des LED-Sweep-Effekt „Knightrider“ mit den integrierten vier blauen LEDs. */ #include "mbed.h" BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); void knightrider(); int main() { while(1) { knightrider(); } } void knightrider() { leds=1; wait_ms(300); for(int i=0;i<3;i++) //4 lichter einschalten { leds=leds<<1|1; wait_ms(300); } for(int i=0;i<8;i++) //4 lichter verschieben { leds=leds<<1; wait_ms(300); } //retour leds=128; wait_ms(300); for(int i=0;i<3;i++) //4 lichter einschalten { leds=leds>>1|128; wait_ms(300); } for(int i=0;i<8;i++) //4 lichter verschieben { leds=leds>>1; wait_ms(300); } }
Lektion: BtnLed1
Programmbeschreibung:
Änderungen:
Datum:
A6_Lekt1_BtnLed1_Digitalio.cpp
/* 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. */ #include "mbed.h" BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); //DigitalIn button1(A0); InterruptIn button1(A0); int checkbutton=0; void btnled1(); void isr(); int main() { button1.rise(&isr); while(1) { if(checkbutton==1) { leds=!leds; wait_ms(150); } else if(checkbutton==2) { btnled1(); checkbutton=0; } else { btnled1(); } } } void isr() { checkbutton++; } void btnled1() { leds=!leds; wait_ms(350); //besser erkennbar }
Lektion: BtnLauflicht
Programmbeschreibung:
Änderungen:
Datum:
A7_Lekt1_BtnLauflicht_Digitalio.cpp
/* 7. [BtnLauflicht] Schreibe ein Lauflicht für die vier blauen Leds und schalte durch drücken des Joysticks (BUTTON1 im Simulator) die Laufrichtung um. */ #include "mbed.h" BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); InterruptIn button1(A0); void btnlauflichtR(); void btnlauflichtL(); void isr(); int checkbutton=1; int main() { button1.rise(&isr); while(1) { if(checkbutton%2==1) { btnlauflichtR(); printf("%d\n",checkbutton); } else if(checkbutton%2==0) { btnlauflichtL(); printf("%d\n",checkbutton); } } } void isr() { checkbutton++; } void btnlauflichtR() { if(leds==0x00) { leds=1; wait_ms(300); } for(int i=0; i<8; i++) { leds=leds<<1; wait_ms(300); } } void btnlauflichtL() { leds=128; wait_ms(300); for(int i=0; i<8; i++) { leds=leds>>1; wait_ms(300); } }
Lektion: BtnCnt
Programmbeschreibung:
Änderungen:
Datum:
A8_Lekt1_BtnCnt_Digitalio.cpp
/* 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. */ #include "mbed.h" BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); InterruptIn button1(A0); void btncnt(); int checkbutton=1; //für modulo unbedingt auf 1 stellen int main() { button1.rise(&btncnt); while(1) { printf("Test: %d\n",checkbutton); if(checkbutton%6==0) { printf("Test2: %d\n",checkbutton); leds=leds<<1|1; checkbutton=1; wait_ms(500); //taste etwas entprellen } } } void btncnt() { checkbutton++; }
Lektion: Laufbus
Programmbeschreibung:
Änderungen:
Datum:
A9_Lekt1_Laufbus_Digitalio.cpp
/* 9. [LaufBus] Erstelle mit Hilfe der BusOut ein Lauflicht mit den integrierten vier blauen LEDs. */ #include "mbed.h" BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); int main() { while(1) { leds=0x01; wait_ms(500); for(int i=1;i<=8;i++) { leds=leds<<1; wait_ms(500); } } }
Lektion: BusOut
Programmbeschreibung:
Änderungen:
Datum:
B1_Lekt1_BusOut_Digitalio.cpp
/* https://os.mbed.com/users/fpucher/code/TINF/wiki/BusOut-Programm 1.Ändern Sie das Programm, sodass der Joystick-Zustand als Ausgangsbasis für einen Count-Down im Sekundentakt dient und am Ende alle Leds wieder verloschen sind. */ #include "mbed.h" BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); AnalogIn x(A3); AnalogIn y(A4); DigitalIn sw(D10,PullUp); void countdown(); int main() { leds=0xff; while(1) { //printf("x: %f\n",x.read()); //printf("y: %f\n",y.read()); //printf("sw: %d\n",sw.read()); /* if(x.read()<=0.1) //rechts { } if(x.read()>=0.9) //links { } if(y.read()<=0.1) //up { } if(sw.read()==0) { printf("button fired\n"); } */ if(y.read()>=0.9) //down { countdown(); } } } void countdown() { for(int i=1;i<=8;i++) { leds=leds<<1; wait_ms(750); } }
Lektion: BusOut2
Programmbeschreibung:
Änderungen:
Datum:
B2_Lekt1_BusOut_Digitalio.cpp
/* https://os.mbed.com/users/fpucher/code/TINF/wiki/BusOut-Programm 2.Kodieren Sie den Joystick-Wert auf die jeweilige Pinnummer und geben diese auf die Leds binär aus (up = p15, alle Leds leuchten, usw. p16 wird zu 0001). */ #include "mbed.h" BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); AnalogIn x(A3); AnalogIn y(A4); DigitalIn sw(D10,PullUp); int main() { while(1) { if(sw.read()==0) { leds=0x0A; } if(x.read()<=0.1) //rechts { leds=0x03; } if(x.read()>=0.9) //links { leds=0x30; } if(y.read()<=0.1) //up { leds=0x04; } if(y.read()>=0.9) //down { leds=0x40; } } }
Lektion: Bus4Leds
Programmbeschreibung:
Änderungen:
Datum:
E1_Lekt1_Bus4Leds_Digitalio.cpp
/* 1. [Bus4Leds] Definiere eine 4-Bit Konstante und gebe den Wert auf die vier blauen Leds aus - die nur diejenigen Leds einschaltet, die im Wert gesetzt sind. Schreibe die Funktion selectivLedsOn(wert) und teste diese in der main() Funktion. ??? */ #include "mbed.h" BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); //const int lights 0b0000; int selectivLedsOn(int wert); int main() { while(1) { int value=selectivLedsOn(value); leds=value; } } int selectivLedsOn(int wert) { wert=0x22; return wert; }
Lektion: JoyLedMap
Programmbeschreibung:
Änderungen:
Datum:
E2_Lekt1_JoyLedMap_Digitalio.cpp
/* https://os.mbed.com/users/fpucher/code/TINF/wiki/Digital-IO-Erweitert 2. [JoyLedMap] Gebe für die jeweiligen Joystick Schalter die entsprechende blaue Led aus: right = LED1, left=LED2, up=LED3, down =LED4 */ #include "mbed.h" BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); AnalogIn x(A3); AnalogIn y(A4); DigitalIn sw(D10,PullUp); int main() { while(1) { if(sw.read()==0) { leds=0x0f; } if(x.read()<=0.1) //rechts { leds=0x01; } if(x.read()>=0.9) //links { leds=0x02; } if(y.read()<=0.1) //up { leds=0x04; } if(y.read()>=0.9) //down { leds=0x08; } } }
Lektion: TwoLedFunc
Programmbeschreibung:
Änderungen:
Datum:
E3_Lekt1_TwoLedFunc_Digitalio.cpp
/* 3. [TwoLedFunc] Erzeuge die in main() aufgerufenen Funktionen für zwei Leds: main() { ledOn(); // beide Leds einschalten ledOff(); // beide Leds ausschalten ledX(); // beide Leds gegengleich schalten printStatus(); // Anzeigen ob Leds ein oder aus } */ #include "mbed.h" BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); DigitalOut led1(D0); DigitalOut led2(D3); void ledon(); void ledoff(); void ledx(); void printstatus(); int main() { while(1) { ledon(); wait_ms(500); ledoff(); wait_ms(500); ledx(); printstatus(); } } void ledon() { leds=0x03; } void ledoff() { leds=0x00; } void ledx() { leds=0x01; wait_ms(750); leds=0x02; wait_ms(750); } void printstatus() { leds=0x01; //test if(leds==0x01) { printf("Led1 leuchtet\n"); } else { printf("led leuchtet nicht\n"); } }
Lektion: FourLeds
Programmbeschreibung:
Änderungen:
Datum:
E4_Lekt1_FourLeds_Digitalio.cpp
/* 4. [FourLeds] Erzeugefür vier Leds und folgenden Funktionen: main() { lauflicht(); ********************************* D1 D2 D3 D4 - - - - Ein Durchgang dauert 2 sec X - - - - X - - - - X - - - - X - - - - X=ON - = off ********************************* lauflichtbalken(); ********************************* D1 D2 D3 D4 - - - - Ein Durchgang dauert 2 sec X - - - X X - - X X X - X X X X - - - - X X X X X=ON - = off ********************************** */ #include "mbed.h" //BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); BusOut leds(D0,D3,D6,D9); void lauflicht(); void lauflichtbalken(); int main() { while(1) { //lauflicht(); lauflichtbalken(); } } void lauflicht() { leds=0x01; wait_ms(400); for(int i=1;i<5;i++) { leds=leds<<1; wait_ms(400); } } void lauflichtbalken() { for(int i=1;i<5;i++) { leds=leds<<1|1; wait_ms(333); } leds=0x00; wait_ms(333); leds=0xff; wait_ms(333); leds=0x00; wait_ms(333); }
Lektion: HexLeds
Programmbeschreibung:
Änderungen:
Datum:
E5_Lekt1_HexLeds_Digitalio.cpp
/* 5. [HexLeds] Erzeuge das folgende HexLeds Programm für vier Leds und folgenden Funktionen: main() { hexleds.eingabe() // einlesen eines Integer-Wertes von der Tastatur mit scanf("%d", &ein); hexleds.ausgabe() // ausgeben des Integer-Wertes der von der Tastatur eingegeben wurde hexleds.hexOut() // Ausgabe des Wertes in Hex-Darstellung an den 4 Leds hexleds.printStatus() // Anzeigen ob Leds ein oder aus */ #include "mbed.h" //BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5); BusOut leds(D0,D3,D6,D9); int hexleds_eingabe(int eingabe); int hexleds_ausgabe(int ausgabe); int hexleds_hexout(int hexout); int hexleds_printstatus(int value); int main() { int value=0; while(1) { value=hexleds_eingabe(value); hexleds_ausgabe(value); hexleds_hexout(value); hexleds_printstatus(value); } } int hexleds_printstatus(int kontrolle) { if(leds=kontrolle) { printf("alles leuchtet\n"); } else { printf("alles falsch\n"); } return kontrolle; } int hexleds_hexout(int hexout) { leds=hexout; return hexout; } int hexleds_ausgabe(int ausgabe) { printf("Wert: %d\n",ausgabe); return ausgabe; } int hexleds_eingabe(int eingabe) { eingabe=0xE; return eingabe; }