Objektverschachtelung

Hallo zusammen,

ich habe zu folgende Problem in meinem ESP32-Arduinocode noch keine Idee:
Ein Auto hat Blinker.
Jetzt hatte ich in Python schonmal folgendes Programmiert (pysdo-Code):
main.ino:

include Auto.h

Auto myCar; // Instanz der Klasse Auto
Blinker blkLi(7); // Instanz der Klasse Blinker steuert Pin 7
bool Schalter = false;

myCar.defBlinkerlinks(blkLi);

myCar.blinkerLinks.On(Schalter);
myCar.blinkerLinks.Off(!Schalter);

Auto.h:

class Blinker{
 private:
  bool state;
 public
  Blinker(int _pin){
 gpio.attach(_pin);
 };
  on(bool _bef){
    if(bef){
  this->state = true;
      };
    };

  off(bool _bef){
    if(bef){
  this->state = false;
      };
    };
};

claas Auto{
 private:
  Blinker &blinkerLinks;
  Blinker &blinkerrechts;
 public:
  Auto(){};
  defBlinkerlinks(Blinker &blkRef){
    this->blLinks = blkRef;
  };

};
  1. Gibt es in der Arduinowelt Konstruktionen wie

myCar.blinkerLinks.On(Schalter);

->Wie müsste der Code dazu aufgebaut werden(Stichworte?)?

Vielen Dank.

Klassen Komposition.

Das Auto HAT zwei Blinker.

An deiner Stelle würde ich daher die Blinker nicht als separate Objekte anlegen sondern die Klasse Auto soll sich zwei Blinker anlegen.

damit du Zugriff auf das Blinker Objekt hast (myCar.blinkerLinks.On()) müsstest du dieses in der Auto Klasse public machen. Würde ich aber nicht machen und dem Auto eine member Funktion für links abbiegen geben, das eben (u.a.) das links Blinken auslöst.

Übrigens solltest du im Konstruktor keine HW Zugriffe machen (dein "attach", soll wohl ein pinMode sein) sonder dazu eine eigene .begin() Funktion nutzen.

PS: Ein ca 50 Jahre altes Auto hat nicht zwei separate Blinker sondern eine Blinkanlage (die auch Warnblinken kann und ihrerseits wieder die Lampen beidseitig nutzt)

Hi,
und danke für die Public Hinweis.
Ein LKW hat. ggf. noch Dachleuchten, dann noch Frontblitzer...
Das war auch nur als Verdeutlichung gedacht.
Neben den Autofunktionen hab ich im Aktuellen Projekt auch ein Controller, der hat 2 Sticks, die wiederum 2 Achse und ein Button haben, wo wiederum jede Achse 3 Methoden hat einen Rückgabewert zu liefern...

Und dann hätte ich im Programm gerne sowas stehen:

float Value = Contr.lStick.xAchse.Bereich0100() // Auswertung linker Stick X-Achse Bereich Mitte bis Rechts - Rückgabewert 0-1.0

Ich probiere das mit dem Public mal aus.

den LKW könnte man vom Auto ERBEN lassen und um Dachleuchten ergänzen.

Übrigens falls interesse besteht, "Blinker", Blitzer (z.B. nach ECE 2), Leuchten, habe ich mal zusammengefasst in einem LED Toolkit:
Noiasca Took Kit for LEDs - Arduino Effect Library for your LEDs

Vieleicht so als Idee.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.