Franz Pucher
/
MyLedBus
BlinkyOOP mit BusOut auf oberen 8 Leds mit Pins bzw. Pin-Array (Resetproblem!!!)
Inhalt HIM0Board
MyLedBus Aufgabe und Beschreibung
main.cpp@0:482d523e2122, 2015-12-01 (annotated)
- 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?
User | Revision | Line number | New 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 | } |