Robert Buch / 1_Digitalio

You are viewing an older revision! See the latest version

Lekt1_Digital_io

Table of Contents

  1. Lektion: DreiLed

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.

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


All wikipages