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.
You are viewing an older revision! See the latest version
Blinky OOP
Siehe auch Handbook DigitalOut
class MyLed {
DigitalOut *led1;
// wissen noch nicht auf welchen pin verbunden wird, daher nur ein Zeiger -
// im Konstruktor wird Objekt erzeugt
MyLed();
// auf Standardkonstruktor kann von aussen nicht zugegriffen werden, da private
// Parametrisierter Konstruktor - selber Name wie Klasse –
// als Parameter übernimmt dieser einen pin Namen
public:
MyLed(PinName ld1)
{
// erzeuge neues DigitalOut Objekt led1 mit pin ld1 und Initialisierungswert 0
led1 = new DigitalOut(ld1, 0);
};
// Methoden zum Ein-/Ausschalten der LED
void LedOn()
{
// Aufruf der Methode write() in Klasse DigitalOut über den Zeiger led1
led1->write(1);
}
void LedOff()
{
led1->write(0);
}
};
int main()
{
// erzeugen einer Variablen myLed1 der Klasse MyLed mit pin Name als Parameter
MyLed myLed1(LED1);
while(1)
{
myLed1.LedOn(); // Aufruf der Memeberfunktion (Methode) LedOn()
wait(0.2);
myLed1.LedOff();
wait(0.2);
}
}
Anmerkung:
- in Zeile 16: kann new durch den Adressßoperator "&" ersetzt werden, da der Pin als Hardware vorhanden ist im Gegensatz zu Objekten in MSVC z.B.
led1 = &DigitalOut(ld1, 0);
Try it out: new- versus &-Operator
Initialisierungslisten¶
Konstruktoren können wie oben mit Parametern (parametrisierte Konstruktoren) versehen werden, sodass bei der Erzeugung des Objektes aktuelle Werte für die Initiallisierung der Instanzevariablen übergeben werden können. Dies ist über den Zuweisungsoperator (=) im Anweisungsteil des Konstruktors oder über Initialisierungslisten möglich, was eine wesentliche Vereinfachung ist.
public:
MyLed(PinName ld1) : led1(&DigitalOut(ld1)){
};
void LedOn() {
led1->write(1);
}
void LedOff(){
led1->write(0);
}
};