BlinkyOOP mit BusOut auf oberen 8 Leds mit Pins bzw. Pin-Array (Resetproblem!!!)

Dependencies:   mbed

Inhalt HIM0Board

MyLedBus Aufgabe und Beschreibung

Committer:
fpucher
Date:
Tue Dec 01 07:30:18 2015 +0000
Revision:
0:482d523e2122
BlinkyOOP mit BusOut mit Pins bzw. Pin-Array (Reset-Problem!!!)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fpucher 0:482d523e2122 1 #include "mbed.h"
fpucher 0:482d523e2122 2 #include <inttypes.h>
fpucher 0:482d523e2122 3 // https://developer.mbed.org/handbook/DigitalOut
fpucher 0:482d523e2122 4 // https://developer.mbed.org/handbook/BusOut
fpucher 0:482d523e2122 5 class MyLed
fpucher 0:482d523e2122 6 {
fpucher 0:482d523e2122 7 private:
fpucher 0:482d523e2122 8 DigitalOut *led1; // Adresse des eigentlichen Zieles - auf eine Klasse DigitalOut - erzeugen
fpucher 0:482d523e2122 9 BusOut *led_bus;
fpucher 0:482d523e2122 10 MyLed(); // Standardkonstruktor, auf den von außen nicht zugegriffen werden kann
fpucher 0:482d523e2122 11
fpucher 0:482d523e2122 12 public:
fpucher 0:482d523e2122 13 // Parametrisierten Konstruktor - selber Name wie Klasse - mit einem Pin Namen als Parameter
fpucher 0:482d523e2122 14 MyLed(PinName ld1)
fpucher 0:482d523e2122 15 {
fpucher 0:482d523e2122 16 // erzeugt ein neues DigitalOut Objekt led1 mit Pin ld1 über Adresse von
fpucher 0:482d523e2122 17 // led1 = &DigitalOut(ld1);
fpucher 0:482d523e2122 18 led1 = new DigitalOut(ld1);
fpucher 0:482d523e2122 19 };
fpucher 0:482d523e2122 20 MyLed(PinName p1, PinName p2, PinName p3, PinName p4, PinName p5, PinName p6, PinName p7, PinName p8)
fpucher 0:482d523e2122 21 {
fpucher 0:482d523e2122 22 led_bus = new BusOut(p1, p2, p3, p4, p5, p6, p7, p8);
fpucher 0:482d523e2122 23 led_bus->write(0x0); // led_bus initialisieren
fpucher 0:482d523e2122 24 }
fpucher 0:482d523e2122 25 MyLed(PinName ld_bus[]) // Konstruktor mit Pin-Array
fpucher 0:482d523e2122 26 {
fpucher 0:482d523e2122 27 led_bus = new BusOut(ld_bus);
fpucher 0:482d523e2122 28 led_bus->write(0x0); // led_bus initialisieren
fpucher 0:482d523e2122 29 }
fpucher 0:482d523e2122 30 /*
fpucher 0:482d523e2122 31 MyLed(PinName ld_bus[]) : led_bus(&BusOut(ld_bus)) // mit Initialisierungsliste
fpucher 0:482d523e2122 32 {
fpucher 0:482d523e2122 33 led_bus->write(0x0); // led_bus initialisieren
fpucher 0:482d523e2122 34 }
fpucher 0:482d523e2122 35 */
fpucher 0:482d523e2122 36 // Methoden oder Memberfunktionen
fpucher 0:482d523e2122 37 void LedOn(uint8_t wert)
fpucher 0:482d523e2122 38 {
fpucher 0:482d523e2122 39 led_bus->write(wert);
fpucher 0:482d523e2122 40 }
fpucher 0:482d523e2122 41 void LedOn()
fpucher 0:482d523e2122 42 {
fpucher 0:482d523e2122 43 // Aufruf der Methode write() in der Klasse DigitalOut --> über den Zeiger led1
fpucher 0:482d523e2122 44 //(*led1).write(1);
fpucher 0:482d523e2122 45 led1->write(1);
fpucher 0:482d523e2122 46 }
fpucher 0:482d523e2122 47 void LedOff()
fpucher 0:482d523e2122 48 {
fpucher 0:482d523e2122 49 //(*led1).write(0);
fpucher 0:482d523e2122 50 led1->write(0);
fpucher 0:482d523e2122 51 }
fpucher 0:482d523e2122 52 };
fpucher 0:482d523e2122 53
fpucher 0:482d523e2122 54 int main() {
fpucher 0:482d523e2122 55 MyLed myLed1(LED1);
fpucher 0:482d523e2122 56 PinName pinarr[16] = {P1_13,P1_12,P1_7,P1_6,P1_4, P1_3, P1_1, P1_0}; // Array mit Pins setzen
fpucher 0:482d523e2122 57 // erzeugen einer Variablen myLedBus der Klasse MyLed mit 8 Pins als Parameter
fpucher 0:482d523e2122 58 MyLed myLedBus(P1_13, P1_12, P1_7, P1_6, P1_4, P1_3, P1_1, P1_0); // ODER ....
fpucher 0:482d523e2122 59 // erzeugen einer Variablen myLedBus der Klasse MyLed mit Pin-Array als Parameter
fpucher 0:482d523e2122 60 //MyLed myLedBus(pinarr); // Problem mit Reset!!!
fpucher 0:482d523e2122 61 uint8_t zaehler = 0;
fpucher 0:482d523e2122 62
fpucher 0:482d523e2122 63 while(1) {
fpucher 0:482d523e2122 64 myLedBus.LedOn(zaehler++); // Hochzählen auf oberen 8 Leds
fpucher 0:482d523e2122 65 myLed1.LedOn();
fpucher 0:482d523e2122 66 wait(0.2);
fpucher 0:482d523e2122 67 myLedBus.LedOn(0x0);
fpucher 0:482d523e2122 68 myLed1.LedOff();
fpucher 0:482d523e2122 69 wait(0.2);
fpucher 0:482d523e2122 70 }
fpucher 0:482d523e2122 71 }