Arduino - Programmierung

  • Seite 9 von 9
22.07.2023 22:45
avatar  Montre
#121
avatar

Ja danke. Arduino unterstützt nur C-Konstrukte, kein C++.


 Antworten

 Beitrag melden
22.07.2023 22:54
avatar  Montre
#122
avatar

Ich habe Graham meinen kompakteren Code gepostet.


 Antworten

 Beitrag melden
25.07.2023 21:25 (zuletzt bearbeitet: 25.07.2023 21:36)
avatar  Montre
#123
avatar

Zitat von Montre im Beitrag #121
Ja danke. Arduino unterstützt nur C-Konstrukte, kein C++.

Die Arduino-Doku ist diesbezgl. etwas sparsam ausgelegt. Tatsächlich werden Klassen unterstützt. Jede Lib ist prinzipiell eine Klasse.
Im Libaries-Verzeichnis muss man ein Verzeichnis mit dem Namen der Klasse erzeugen und dort seine Klasse (.cpp und .h) reinkopieren.

Die Startdatei mit setup() und loop() suggeriert, dass der Code nur Code ohne Objekte unterstützt. Aber es geht doch mehr.
Die Erkenntnis stammt aus dieser Datei.

Das eröffnet nämlich ganz neue Möglichkeiten, weil man eine plattformunabhängige Klasse erstellen kann, die dann mit einem RaspPi- und Arduino-Layer ergänzt wird. Zumindest sollte man das mal untersuchen. Das wird sich für den normalen User rätselhaft anhören, aber die Entwickler verstehen, was ich meine.


 Antworten

 Beitrag melden
25.07.2023 22:30
#124
avatar

Meinst di Objektorientierte Programmierung? Das geht mit den Arduino c. Schau mal hier für ein Beispiel https://werner.rothschopf.net/202003_ard...frelais_oop.htm

Ich selbst habe es noch nicht genutzt. Wobei die Vorteile schon praktisch sein könnten. Beispiel ich nutze in vielen Projekten ein Display, dann wäre ein Display Objekt welches ich ohne viel Aufwand in jedem Programm nutzen könnte ganz praktisch. Dann muss ich die Grundlagen nur einmal schreiben.

Auch bei einem Midi Projekt könnte ja jede Taste ein Objekt Taste() sein, welches dann alle Informationen wie Midicode, Zustände und so weiter enthält. Der Nachteil wäre dann aber vermutlich beim ersten mal sehr viel Mehrarbeit und wie es sich auf die Geschwindigkeit auswirkt müsste man testen.


 Antworten

 Beitrag melden
26.07.2023 00:21 (zuletzt bearbeitet: 26.07.2023 00:25)
avatar  Montre
#125
avatar

Zitat von Christian_Hofmann im Beitrag #124
Meinst di Objektorientierte Programmierung? Das geht mit den Arduino c. Schau mal hier für ein Beispiel https://werner.rothschopf.net/202003_ard...frelais_oop.htm

Genau. Das ist doch ne saubere Sache.

Zitat von Christian_Hofmann im Beitrag #124
Beispiel ich nutze in vielen Projekten ein Display, dann wäre ein Display Objekt welches ich ohne viel Aufwand in jedem Programm nutzen könnte ganz praktisch. Dann muss ich die Grundlagen nur einmal schreiben.

So ist es. Man versteht es auch leichter, wenn die Komplexität zu nimmt. Das merken die Leute auch selber, wenn sie für den nächsten Schritt immer länger überlegen müssen.

Zitat von Christian_Hofmann im Beitrag #124
Der Nachteil wäre dann aber vermutlich beim ersten mal sehr viel Mehrarbeit und wie es sich auf die Geschwindigkeit auswirkt müsste man testen.

Der Vorteil kann so immens größer sein, dass es dann im Ganzen dann doch lohnend ist, übersichtlich zu arbeiten. Wir reden hier aber nicht um 100-Zeilen-Progrämmchen. Da braucht man keine Objektorientierung.

Aber dem erwähnten 5000-Zeilen-Programm hätte das sicher gut getan. Schleifen ist das eine, was eigentlich jeder geübte Coder automatisch anwendet (aber nicht die allumfassende Lösung darstellt), aber auch ggf. die Hardware mit ihren Pins zu abstrahieren, oder auch ein Manual als Objekt zu benutzen, hätte der Verständlichkeit des Codes gut getan, weil es sich wiederholenden Code vermeidet. Aber wem erzähl ich das - du weißt es ja. Und die, die wenig Ahnung haben, die können es nicht und wollen es auch nicht. Da hackt man lieber 5000 Zeilen rein, ohne wenn und aber. Das der Code funktioniert, kann gut sein und will ich nicht in Frage stellen, aber das Fehler drin sind, ist nicht so leicht auszuschließen. Da muss dann jeder Anwender selbst 5000 Zeilen prüfen, ob das alles richtig umgesetzt ist ist. Und das ist dann schon nicht mehr so dolle.

Und wenn du die Performance in Frage stellst, dann dürftest du keine einzige Lib verwenden. Das sind nämlich alles Klassen


 Antworten

 Beitrag melden
26.07.2023 09:55
avatar  Montre
#126
avatar

...und Python solltest du auch nicht verwenden


 Antworten

 Beitrag melden
26.07.2023 12:33 (zuletzt bearbeitet: 26.07.2023 12:35)
#127
avatar

Nach im Vergleich DUE und Pico sollte das dann unterm Strich egal sein. Sofern man Python auf dem Pico nimmt, dann macht die CPU mit 133 Mhz im Vergleich zu 84 Mhz das ganze wohl wieder gut. Aber Spaß beiseite. Arduino c auf dem Pico ist recht gefährlich, man muss die Geschwindigkeit manuell teilweise reduzieren (Pausen oder runtertakten). Sonst laufen die Programme zu schnell was Probleme bei z.B Takt auf den Pins führt.

Wozu ich allerdings nichts finden konnte ist diese Frage:
Der Arduino DUE und Pico haben ja einen Prozessor mit zwei Kernen. Python selbst kann seine Aufgaben auf mehrere Kerne verteilen. Da muss man selbst nicht viel machen, kann es jedoch mit Threads (schweres Thema) noch optimieren.

Aber wie sieht es beim Arduino aus? Das erstellte Programm müsste doch bestimmt auch entsprechend auf Multithreading ausgelegt sein? Ein gewöhnliches Programm ohne manuelle Anpassung dürfte doch nur einen Kern nutzen. Weiß da jemand etwas genaueres?


 Antworten

 Beitrag melden
26.07.2023 14:32
#128
Br

Dafür brauchst du Arduino Cracks, die sich meines Wissens nur um Arduino Forum tummeln.


 Antworten

 Beitrag melden
26.07.2023 15:04
#129
avatar

Also ist im Grunde die Erwähnung der zwei Kerne ein Marketing Gag, der den meisten nicht viel nutzen wird :)

Ich frage mich inwieweit der Compiler überhaupt support bietet. Es wird dann vermutlich auf Assembler hinauslaufen. Da sind wir Anfänger aber wohl raus :)


 Antworten

 Beitrag melden
26.07.2023 15:30
avatar  Montre
#130
avatar

Die Frage ist nicht Multithreading sondern Multicore. Ich denke mal, dass das genauso easy ist, wie beim Pico.
Schau mal hier.


 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!