Arduino mit Lazarus: Nur für Nerds?
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Arduino mit Lazarus: Nur für Nerds?
Es ist wie bei FPC/Lazarus. Wenn es eine Kerncommunity gibt die Beispiele und die Entwicklung liefert, so kann es etwas in die Masse gehen. Viel hängt von Beispielen und Kernkomponenten ab, so wie es pluto beschreibt. Bei Lazarus ist es halt die LCL, um die man herum mit der IDE baut. Da ist es auch das RAD was das weiterzieht, sonst könnte man ja glich beim FPC alleine bleiben.
Bei Arduino ist es auch so, man kann komfortabel Bibliotheken verwenden, die man nicht verstehen braucht, Hauptsache man begreift die Schnittstellen.
Was ich nur noch nicht gefunden habe, wie ich libs von Adruino in Pascal sinnvoll einbinden kann. Deswegen habe ich es mal hier https://github.com/afriess/Laz_AVR_Lib versucht, es so kompatibel wie möglich zu machen. Das geht für einfache Sachen, nur wenn ich da an einen Ethernet-Hat oder Servecontroller für den Arduino denke, so hätte ich gerne die fertig kompiliereten libs eingebunden und nicht alles in Source von C(++) auf Pascal übersetzt.
Klar würde es gehen, wenn man die Manpower bündelt und es weitertreibt, dazu müssten sich aber erst ein paar Leute finden, die so ein Projekt LÄNGER betreiben wollen und daran arbeiten wollen. Wobei ich arbeiten damit verstehe, das echt was am Projekt passiert. Weil meistens ist die Featuritis der Tod der Projekte -> Weil das nicht funktioniert, kündige ich ganz einfach was 'besseres' an und lass die aktuelle Sache sein. Ideen haben wir alle, meistens fehlt der Fokus über die Zeit.
Bei Arduino ist es auch so, man kann komfortabel Bibliotheken verwenden, die man nicht verstehen braucht, Hauptsache man begreift die Schnittstellen.
Was ich nur noch nicht gefunden habe, wie ich libs von Adruino in Pascal sinnvoll einbinden kann. Deswegen habe ich es mal hier https://github.com/afriess/Laz_AVR_Lib versucht, es so kompatibel wie möglich zu machen. Das geht für einfache Sachen, nur wenn ich da an einen Ethernet-Hat oder Servecontroller für den Arduino denke, so hätte ich gerne die fertig kompiliereten libs eingebunden und nicht alles in Source von C(++) auf Pascal übersetzt.
Klar würde es gehen, wenn man die Manpower bündelt und es weitertreibt, dazu müssten sich aber erst ein paar Leute finden, die so ein Projekt LÄNGER betreiben wollen und daran arbeiten wollen. Wobei ich arbeiten damit verstehe, das echt was am Projekt passiert. Weil meistens ist die Featuritis der Tod der Projekte -> Weil das nicht funktioniert, kündige ich ganz einfach was 'besseres' an und lass die aktuelle Sache sein. Ideen haben wir alle, meistens fehlt der Fokus über die Zeit.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Arduino mit Lazarus: Nur für Nerds?
Ja, das würde mich auch interessieren. Gibt es einen Weg, die Arduino Libs statisch zu linken? Ich kenne mich da zu wenig aus.
Das ist wahrscheinlich das Hauptproblem, dass man wohl immer wieder gegen eine Wand läuft mit Lazarus für Arduino (z.B. keine IR Libs) und auch nicht das Rad immer neu erfinden will und kann.
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Arduino mit Lazarus: Nur für Nerds?
Zeit wäre bei mir eher nicht das Problem. Mein Problem ist einfach, dass z.b. bei den 433 mhz Projekt, dass ich den Kern Code nicht nachvollziehen kann, weil mir das Verständnis dafür fällt.af0815 hat geschrieben:Ideen haben wir alle, meistens fehlt der Fokus über die Zeit.
Ich könnte höchsten die Arduino Libs nach und nach versuchen nach pascal zu Konvertieren vielleicht das eine oder andere anders machen.
Ich denke, wir sind hier ca 4 bis 5 Leute glaube ich. Jeder mit anderen Fähigkeiten. Wenn wir uns zusammen tun würden und pro Monat eine Lib oder zwei Libs machen, hätten wir schon mal ein Erfolg.
Z.B.
1. Infrarot. Die Arduino Lib unterstützt die Gängigen Protokolle. An den können wir uns Orientieren.
2. 433 mhz. Z.B. um Funk Steckdosen zu Bedienen(wobei das nicht immer einfach ist, ich habe einige, dazu musste ich lange im Internet
suchen, bis ich sie steuern konnte).
3. Um Daten per 433 mhz Auszutauschen z.b. wie VirtualWire(wird leider nicht mehr weiter Entwickelt) oder RadioHead(oder so ähnlich).
4. WS2812B
Dann natürlich einige Sensoren und LCD Libs. Klar das kostet alles seine Zeit. Wenn wir damit erst mal Anfangen, sehen wir auch ein Fortschritt.
Wenn jeder, der mitmacht sich in seinem Zeitlichen Rahmen bewegt, geht das.
Ich stelle mir das ganze so vor: Einer fängt an z.b. mit den "Kern" und ein andere programmiert das ganze weiter bzw. zu ende.
(Jedenfalls, da wo es möglich ist).
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 830
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Arduino mit Lazarus: Nur für Nerds?
Du musst halt ne passende Importunit erzeugen, dann geht das schon. Ein Beispiel gibt es im englischen Forum.theo hat geschrieben: ↑Mo 31. Aug 2020, 11:12Ja, das würde mich auch interessieren. Gibt es einen Weg, die Arduino Libs statisch zu linken? Ich kenne mich da zu wenig aus.
Das ist wahrscheinlich das Hauptproblem, dass man wohl immer wieder gegen eine Wand läuft mit Lazarus für Arduino (z.B. keine IR Libs) und auch nicht das Rad immer neu erfinden will und kann.
FPC Compiler Entwickler
-
- Beiträge: 1910
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Arduino mit Lazarus: Nur für Nerds?
Mit C wäre das kein problem, aber die viele arduino libs benutzen zumindest für das Interface zum restlichen arduino code C++, der muss natürlich erst geflatened werden
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Arduino mit Lazarus: Nur für Nerds?
Genau darum ging es dort im Thread, da gibt es paar features
Code: Alles auswählen
type
THardwareTimer = cppclass external name 'HardwareTimer'
public
procedure pause;
end;
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 1910
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Arduino mit Lazarus: Nur für Nerds?
Oha! das würde ich nicht benutzen. Das bedeutet das der FPC Annahmen über die Namensgebung und die calling convention des Compilers. Grade die namensgebung kann mit compilerswitches und gcc c++ language extensions verändert werden (z.b. kann man sagen das für eine bestimmte Funktion der Name nicht mit __ anfangen soll). Und die calling convention kann massiv abbhängig vom Optimierungslevel sein.af0815 hat geschrieben: ↑Mo 31. Aug 2020, 16:22Genau darum ging es dort im Thread, da gibt es paar featuresDamit sollte das flatten für einfache Sachen wie bei Arduino erschlagen sein. (Soweit ich den Thread verstanden habe)Code: Alles auswählen
type THardwareTimer = cppclass external name 'HardwareTimer' public procedure pause; end;
Es kommt also nicht mal nur auf den entsprechenden compiler an, sondern, wenn z.b. eine lib viel mit asembly arbeitet (was ich mir bei avr gut vorstellen kann), kann es gut sein das durch spezielle g++ switches die funktionen massiv von der gcc norm abweichen, um halt besser im assembly benutzt werden zu können
Mit sowas wäre ich immer sehr vorsichtig, da würde ich mir lieber einen C Wrapper dafür schreiben, etwas mehr aufwand, aber auf jeden fall stabiler als das.
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Arduino mit Lazarus: Nur für Nerds?
Hast du dir den Thread angesehen, also ich würde es bei Arduino uno schon mal probieren. Wenn wer lust hat und es mit der Methode nicht funktioniert, dann muss man sowieso auf das alt hergebrachte zurück.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Arduino mit Lazarus: Nur für Nerds?
Oben wird cppclass verwendet. AVR kennt keine Class, oder ist dies mit Object vergleichbar ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Arduino mit Lazarus: Nur für Nerds?
Da musst du den Zusammenhang mit dem Sketch sehen und das ganze in diesen Kontext sehen
Code: Alles auswählen
class Com {
public:
....
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: Arduino mit Lazarus: Nur für Nerds?
Aber ob das gut geht? Bisher hab ich keine guten Erfahrungen mit object und AVR gemacht. Es wird jede Menge Overhead produziert.
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Arduino mit Lazarus: Nur für Nerds?
So wie ich mich errinern mag, braucht sogar ein Record mehr Platz als lose Variablen und Methode.Timm Thaler hat geschrieben: ↑Mo 31. Aug 2020, 22:13Aber ob das gut geht? Bisher hab ich keine guten Erfahrungen mit object und AVR gemacht. Es wird jede Menge Overhead produziert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: Arduino mit Lazarus: Nur für Nerds?
Vielleicht war das mal so, aber aktuell werden Records auf dem AVR sehr effizient verwaltet. Ich verwende die gern und viel.
Hier die Records für einen BME280 Drucksensor, eines enthält die Kalibrierdaten die aus dem Sensor gelesen werden, eines die Messwerte und Rechenwerte.
Code: Alles auswählen
Tbme280cal = record
calT1 : uint16;
calT2 : int16;
calT3 : int16;
...
calH6 : int8;
end;
Tbme280val = record
run : boolean;
upress : uint32;
utemp, uhum : uint16;
tfine : int32;
temp, tmin, tmax : int16;
hum, hmin, hmax : int16;
press, pnull, pmin, pmax, dp3h : int16;
end;
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Arduino mit Lazarus: Nur für Nerds?
Die cppclass wird nur als Deklaration für Arduino libs Overwendet.Damit die richtigen Einsprungspunkte verwendet werden, nix codeerzeugung
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Arduino mit Lazarus: Nur für Nerds?
Vielleicht war es auch ein Advantced Record mit Methoden.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot