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;
}