Arduino mit Lazarus: Nur für Nerds?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4370
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Arduino mit Lazarus: Nur für Nerds?

Beitrag von af0815 »

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.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 8535
Registriert: Mo 11. Sep 2006, 19:01

Re: Arduino mit Lazarus: Nur für Nerds?

Beitrag von theo »

af0815 hat geschrieben:
Mo 31. Aug 2020, 06:55
so hätte ich gerne die fertig kompiliereten libs eingebunden und nicht alles in Source von C(++) auf Pascal übersetzt.
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.

pluto
Lazarusforum e. V.
Beiträge: 7097
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?

Beitrag von pluto »

af0815 hat geschrieben:Ideen haben wir alle, meistens fehlt der Fokus über die Zeit.
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.
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

PascalDragon
Beiträge: 162
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?

Beitrag von PascalDragon »

theo hat geschrieben:
Mo 31. Aug 2020, 11:12
af0815 hat geschrieben:
Mo 31. Aug 2020, 06:55
so hätte ich gerne die fertig kompiliereten libs eingebunden und nicht alles in Source von C(++) auf Pascal übersetzt.
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.
Du musst halt ne passende Importunit erzeugen, dann geht das schon. Ein Beispiel gibt es im englischen Forum. ;)
FPC Compiler Entwickler

Warf
Beiträge: 1521
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Arduino mit Lazarus: Nur für Nerds?

Beitrag von Warf »

theo hat geschrieben:
Mo 31. Aug 2020, 11:12
Ja, das würde mich auch interessieren. Gibt es einen Weg, die Arduino Libs statisch zu linken? Ich kenne mich da zu wenig aus.
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

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4370
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Arduino mit Lazarus: Nur für Nerds?

Beitrag von af0815 »

Warf hat geschrieben:
Mo 31. Aug 2020, 15:43
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
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;
Damit sollte das flatten für einfache Sachen wie bei Arduino erschlagen sein. (Soweit ich den Thread verstanden habe)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Warf
Beiträge: 1521
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Arduino mit Lazarus: Nur für Nerds?

Beitrag von Warf »

af0815 hat geschrieben:
Mo 31. Aug 2020, 16:22
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;
Damit sollte das flatten für einfache Sachen wie bei Arduino erschlagen sein. (Soweit ich den Thread verstanden habe)
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.
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.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4370
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Arduino mit Lazarus: Nur für Nerds?

Beitrag von af0815 »

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).

Mathias
Beiträge: 5088
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Arduino mit Lazarus: Nur für Nerds?

Beitrag von Mathias »

Oben wird cppclass verwendet. AVR kennt keine Class, oder ist dies mit Object vergleichbar ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4370
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Arduino mit Lazarus: Nur für Nerds?

Beitrag von af0815 »

Mathias hat geschrieben:
Mo 31. Aug 2020, 20:05
Oben wird cppclass verwendet. AVR kennt keine Class, oder ist dies mit Object vergleichbar ?
Da musst du den Zusammenhang mit dem Sketch sehen und das ganze in diesen Kontext sehen

Code: Alles auswählen

class Com {
public:
....
da ist die class im C++ Programm gemeint, und das wird mit der Deklaration in den Pascal-Kontext gebracht. Ja, so gesehen ist das mit Object in erweiterter Form vergleichbar.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Timm Thaler
Beiträge: 1143
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?

Beitrag von Timm Thaler »

Aber ob das gut geht? Bisher hab ich keine guten Erfahrungen mit object und AVR gemacht. Es wird jede Menge Overhead produziert.

Mathias
Beiträge: 5088
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Arduino mit Lazarus: Nur für Nerds?

Beitrag von Mathias »

Timm Thaler hat geschrieben:
Mo 31. Aug 2020, 22:13
Aber ob das gut geht? Bisher hab ich keine guten Erfahrungen mit object und AVR gemacht. Es wird jede Menge Overhead produziert.
So wie ich mich errinern mag, braucht sogar ein Record mehr Platz als lose Variablen und Methode.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Timm Thaler
Beiträge: 1143
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?

Beitrag von Timm Thaler »

Mathias hat geschrieben:
Mo 31. Aug 2020, 22:23
So wie ich mich errinern mag, braucht sogar ein Record mehr Platz als lose Variablen und Methode.
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;
Der Compiler macht daraus direkte Speicherzugriffe - effizienter könnte ich das nicht, wenn ich es in pure ASM programmieren würde. Und es ist sehr übersichtlich und skalierbar - mehrere Sensoren gleichen Typs sind schnell erstellt.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4370
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Arduino mit Lazarus: Nur für Nerds?

Beitrag von af0815 »

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).

Mathias
Beiträge: 5088
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Arduino mit Lazarus: Nur für Nerds?

Beitrag von Mathias »

Vielleicht war es auch ein Advantced Record mit Methoden.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Antworten