BlinkyOOP mit BusOut auf oberen 8 Leds mit Pins bzw. Pin-Array (Resetproblem!!!)
Inhalt HIM0Board
MyLedBus Aufgabe und Beschreibung
main.cpp
- Committer:
- fpucher
- Date:
- 2015-12-01
- Revision:
- 0:482d523e2122
File content as of revision 0:482d523e2122:
#include "mbed.h"
#include <inttypes.h>
// https://developer.mbed.org/handbook/DigitalOut
// https://developer.mbed.org/handbook/BusOut
class MyLed
{
private:
DigitalOut *led1; // Adresse des eigentlichen Zieles - auf eine Klasse DigitalOut - erzeugen
BusOut *led_bus;
MyLed(); // Standardkonstruktor, auf den von außen nicht zugegriffen werden kann
public:
// Parametrisierten Konstruktor - selber Name wie Klasse - mit einem Pin Namen als Parameter
MyLed(PinName ld1)
{
// erzeugt ein neues DigitalOut Objekt led1 mit Pin ld1 über Adresse von
// led1 = &DigitalOut(ld1);
led1 = new DigitalOut(ld1);
};
MyLed(PinName p1, PinName p2, PinName p3, PinName p4, PinName p5, PinName p6, PinName p7, PinName p8)
{
led_bus = new BusOut(p1, p2, p3, p4, p5, p6, p7, p8);
led_bus->write(0x0); // led_bus initialisieren
}
MyLed(PinName ld_bus[]) // Konstruktor mit Pin-Array
{
led_bus = new BusOut(ld_bus);
led_bus->write(0x0); // led_bus initialisieren
}
/*
MyLed(PinName ld_bus[]) : led_bus(&BusOut(ld_bus)) // mit Initialisierungsliste
{
led_bus->write(0x0); // led_bus initialisieren
}
*/
// Methoden oder Memberfunktionen
void LedOn(uint8_t wert)
{
led_bus->write(wert);
}
void LedOn()
{
// Aufruf der Methode write() in der Klasse DigitalOut --> über den Zeiger led1
//(*led1).write(1);
led1->write(1);
}
void LedOff()
{
//(*led1).write(0);
led1->write(0);
}
};
int main() {
MyLed myLed1(LED1);
PinName pinarr[16] = {P1_13,P1_12,P1_7,P1_6,P1_4, P1_3, P1_1, P1_0}; // Array mit Pins setzen
// erzeugen einer Variablen myLedBus der Klasse MyLed mit 8 Pins als Parameter
MyLed myLedBus(P1_13, P1_12, P1_7, P1_6, P1_4, P1_3, P1_1, P1_0); // ODER ....
// erzeugen einer Variablen myLedBus der Klasse MyLed mit Pin-Array als Parameter
//MyLed myLedBus(pinarr); // Problem mit Reset!!!
uint8_t zaehler = 0;
while(1) {
myLedBus.LedOn(zaehler++); // Hochzählen auf oberen 8 Leds
myLed1.LedOn();
wait(0.2);
myLedBus.LedOn(0x0);
myLed1.LedOff();
wait(0.2);
}
}