INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Library Fehler
19.01.2021, 21:19
Beitrag #9
RE: Library Fehler
(19.01.2021 17:14)Tommy56 schrieb:  ...
Ein Tutorial zu den Grundlagen von C++
...
Gruß Tommy

Hast Du da mal reingeguckt? Hatte irgendwie falsche Erwartungen...
Gruß Jan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2021, 21:21
Beitrag #10
RE: Library Fehler
Nein, habe ich nicht. Das war der erste Link, den die Suchmaschine ausgespuckt hat.
Ich empfehle weiterhin das Buch.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.01.2021, 12:38
Beitrag #11
RE: Library Fehler
Ich habe die "Syntax-Übung" jetzt weiter verbessert. Später kommen noch weitere Funktionen zu der Library; dann macht sie auch Sinn.
Hier die Verbesserungen in der Header-Datei:
Code:
/*
  Dies ist eine Library .h
*/
#ifndef Ledsteuerung_h
#define Ledsteuerung_h

#include <Arduino.h>

class Ledsteuerung {
  public:
    Ledsteuerung();
    void setBit(byte nr, byte* feld);
    void clearBit(byte nr, byte* feld);
    byte readBit(byte nr, byte* feld);
    
  private:
    byte _feldIndex;
    byte _feldNr;
};

#endif
Interne Variablen sind jetzt private deklariert und haben den führenden Unterstrich.

Und hier die Verbesserungen in der cpp-Datei:
Code:
/*
  Dies ist eine Library .cpp
*/
#include <Arduino.h>
#include "Ledsteuerung.h"

//------------------------------------ Konstruktor ----------------------------------
Ledsteuerung::Ledsteuerung() {
// jetzt noch leer
};

//------------------------- Bit für "LED einschalten"  setzen -----------------------
void Ledsteuerung::setBit(byte nr, byte* feld) {
  _feldIndex = nr / 8;                                      // Berechnung des Bytes
  _feldNr = nr % 8;                                         // Berechnung des Bits im Byte
  bitSet(feld[_feldIndex], _feldNr);                        // hier wird das Bit feldNr im Byte feldIndex gesetzt
}

//------------------------- Bit für "LED ausschalten"  löschen ----------------------
void Ledsteuerung::clearBit(byte nr, byte* feld) {
  _feldIndex = nr / 8;                                      // Berechnung des Bytes
  _feldNr = nr % 8;                                         // Berechnung des Bits im Byte
  bitClear(feld[_feldIndex], _feldNr);                      // hier wird das Bit feldNr im Byte feldIndex gelöscht
}


//-------------------------------- Bit für LED nr lesen -----------------------------
byte Ledsteuerung::readBit(byte nr, byte* feld) {
  _feldIndex = nr / 8;                                      // Berechnung des Bytes
  _feldNr = nr % 8;                                         // Berechnung des Bits im Byte
  return bitRead(feld[_feldIndex], _feldNr);                // Bit feldNr im Byte feldIndex wird zurückgegeben
}
Mit Einsatz von Modulo kann man sich den vorher vorhandenen Code sparen.

Als nächstes will ich Daten auf SD-Karte speichern, lesen und verändern. Als Funktionen habe ich das alles, aber jetzt sollen diese Funktionen in der Library sein; ich werde dort die sdFat aufrufen müssen und ich werde wohl den Konstruktor mit Dateinamen füttern.

Bitte schaut mal, ob mein bisheriges Werk den Richtlinien für guten Programmierstil folgt.

LG Karl

Karl Stanger
www.stangerweb.de
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.01.2021, 14:44
Beitrag #12
RE: Library Fehler
(20.01.2021 12:38)Karl Stanger schrieb:  Bitte schaut mal, ob mein bisheriges Werk den Richtlinien für guten Programmierstil folgt.
In meinen Augen nicht, weil Du immer noch das globale Array bearbeitest. Deine privaten Variablen machen gegenüber der Vorversion für mich keinen Sinn, da sie vorher lokal in den Methoden waren.
Es macht aber keinen Sinn hier weiter Grundlagen der OOP zu besprechen, wenn Du Dir die verlinkten Sachen nicht anschaust.
Was soll in einer LED-Lib eine SD-Karte für einen Sinn machen?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.01.2021, 17:18
Beitrag #13
RE: Library Fehler
So schnell kann ich die Dinge nicht anschauen:
- Das Buch kommt am Freitag (hoffentlich)
- Ich habe auch noch ein Real Life, das immer vorgeht

Zum Thema globales Feld: ich will Speicherplatz sparen, daher werde ich ein Feld, das ich nun einmal brauche, nicht in eine Funktion kopieren. Oder gibt es da eine Möglichkeit?
Zum Thema SD-Karte:
Auf der SD-Karte stehen: das Timing, wann LEDs ein- oder ausgeschaltet werden, die Ereignisse, welche LEDs ein- oder Ausgeschaltet werden, und die Farbinformationen zu jeder LED. Das sind 3 Dateien, die ich aus Platzgründen nicht im Speicher haben kann.

Karl Stanger
www.stangerweb.de
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.01.2021, 17:29
Beitrag #14
RE: Library Fehler
Hat jemand davon gesprochen, das Feld in eine Funktion zu kopieren? Meinst Du, ein globales Feld braucht weniger Speicher?
Du willst 3 Dateien von SD offen halten - das sind 1536 Bytes für 3 Sektorrpuffer. Viel Spaß.

Wieviele LED willst Du denn steuern? Welche LED willst Du verwenden?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Library von GitHub ? Steinspiel 18 508 12.04.2021 19:20
Letzter Beitrag: Steinspiel
  PCM Sound Library für RC PKW RC_Trucker_WN 4 271 22.03.2021 21:22
Letzter Beitrag: RC_Trucker_WN
  Fehler durch zwei I2C Busse ? sgol 32 1.810 28.02.2021 18:11
Letzter Beitrag: Tommy56
  Library Ethernet: Nicht zu compilieren GuaAck 5 463 22.02.2021 17:31
Letzter Beitrag: Tommy56
  MAX 30105 Fehler Ansis2021 0 282 20.02.2021 03:26
Letzter Beitrag: Ansis2021
  Fehler lcd does not name a type Yannic.t 3 435 22.12.2020 14:36
Letzter Beitrag: Tommy56
  OneButton Library > erkennen, dass keine Taste gedrückt ist Foto-Ralf 9 915 05.12.2020 17:07
Letzter Beitrag: RolandF
  Mouse.h library Leonardo Schrittmotor 10 999 26.10.2020 21:35
Letzter Beitrag: Chopp
  Nextion Fehler king_MJ 3 1.140 27.06.2020 17:36
Letzter Beitrag: Tommy56
  Eigene Library erstellen Groomit 7 1.229 23.05.2020 22:03
Letzter Beitrag: MicroBahner

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste