NeoPixel und Arduino mit Lazarus

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1423
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

NeoPixel und Arduino mit Lazarus

Beitrag von fliegermichl »

Hallo,

ich habe die Ansteuerung der Neopixel mit Arduino fertig.
Im wesentlichen hab ich die CPP Version der AdaFruit_Neopixel Klasse und das Beispielprojekt Strandtest.ino nach Lazarus portiert.
Ausserdem einige Hilfsroutinen in Arduino.pas und timer.pas.

Aktuell wird nur der Atmega328p mit 16MHz unterstützt.
Natürlich muß ein Crosscompiler zu embedded-avr installiert sein.
In dem Beispiel Strandtest werden zwei runde Neopixel mit jeweils 12 LED angesteuert.
Diese müssen an den Pins 5 und 6 des Arduino angeschlossen werden.
Es kann aber durch anpassen der Konstanten am Programmstart jeder andere Pin und Anzahl LED's definiert werden.

Michael
Dateianhänge
NeoPixel.zip
(17.71 KiB) 140-mal heruntergeladen

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: NeoPixel und Arduino mit Lazarus

Beitrag von Maik81SE »

Moin,

Danke schon mal für deine Vorarbeit :D :D genau das, was ich gesucht habe.
Zwar nicht für meinen AVR, aber das ist erst mal zweitrangig.

Bin gerade dabei diese so umzuschreiben, das Dein Atmega328p und meine ATtinyx5/ATMega16 unterstütz werden.
Eine frage habe ich aber gerade.
Wo hast du die beiden Functionen

Code: Alles auswählen

avr_save()
und

Code: Alles auswählen

avr_restore(SREG)
aufgetrieben.

Aktuell sind dies genau die Fehlermeldungen, welche ich noch auf dem Zettel habe.
Werden aber sicherlich nicht die Letzten gewesen sein.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

PascalDragon
Beiträge: 823
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: NeoPixel und Arduino mit Lazarus

Beitrag von PascalDragon »

Maik81SE hat geschrieben:
Sa 4. Sep 2021, 17:08
Wo hast du die beiden Functionen

Code: Alles auswählen

avr_save()
und

Code: Alles auswählen

avr_restore(SREG)
aufgetrieben.
Unit Intrinsics. Diese enthält noch ein paar weitere Intrinsics, die es vermeiden, dass man auf einen assembly Block für gängige Funktionalitäten zurückgreifen muss. ;)
FPC Compiler Entwickler

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: NeoPixel und Arduino mit Lazarus

Beitrag von Maik81SE »

PascalDragon hat geschrieben:
So 5. Sep 2021, 11:37
Unit Intrinsics. Diese enthält noch ein paar weitere Intrinsics, die es vermeiden, dass man auf einen assembly Block für gängige Funktionalitäten zurückgreifen muss. ;)
Da verwendest du sicherlich eine andere als ich...

Meine sieht wie folgt aus.

Code: Alles auswählen

{

    This file is part of the Free Pascal run time library.
    Copyright (c) 2016 by the Free Pascal development team.

    See the file COPYING.FPC, included in this distribution,
    for details about the copyright.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 **********************************************************************}
unit intrinsics;

  interface

    const
    {$i cpuinnr.inc}

    procedure avr_cli;[INTERNPROC: in_avr_cli];
    procedure avr_sei;[INTERNPROC: in_avr_sei];
    procedure avr_wdr;[INTERNPROC: in_avr_wdr];
    procedure avr_sleep;[INTERNPROC: in_avr_sleep];
    procedure avr_nop;[INTERNPROC: in_avr_nop];

  implementation

end.
Verwende Version 2.0.12 und fpc 3.0.4

Werd ich mal auf die suche nach alternativen Funktionen ausschau halten müßen.
Aber ich gehe mal davon aus, das es da nur darum geht das SREG-Register zu speichern und zurückzuschreiben.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
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: NeoPixel und Arduino mit Lazarus

Beitrag von af0815 »

Wenn du mit AVR arbeitest, so ist trunk oder zumindest der aktuelle fixes Zweig nötig. Keine alte Version. Und Lazarus 2.0.12 mit FPC 3.0.4 ist so gesehen steinalt :D
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
kupferstecher
Beiträge: 416
Registriert: Do 17. Nov 2016, 11:52

Re: NeoPixel und Arduino mit Lazarus

Beitrag von kupferstecher »

Maik81SE hat geschrieben:
So 5. Sep 2021, 18:37
Aber ich gehe mal davon aus, das es da nur darum geht das SREG-Register zu speichern und zurückzuschreiben.
Denke ich auch, der Variablenname lässt darauf schließen.

Um das SREG-Register kümmert sich aber schon der Kompiler, wäre also doppelt gemoppelt.

hum4n0id3
Beiträge: 301
Registriert: So 5. Mai 2019, 15:23

Re: NeoPixel und Arduino mit Lazarus

Beitrag von hum4n0id3 »

Ich fände es schön, wenn ihr eure Lazarus-Projekte die ihr hier vorstellt, als Git-Repo veröffentlichen könntet, statt als Dateianhang. So könnt ihr einfacher Unterstützer für eure Projekte finden. So wird es momentan min. 2 Versionen geben, eines von fliegermichi und eines von Maik81SE. Hätte der fliegermichi ein Git-Repo für das Projekt, könnte der Maik81SE es Forken und seine Verbesserungen per Pull-Request zurück an fliegermichi schicken. Falls es passt, wird der Code integriert und es gibt eine neuere Software mit Unterstützung für Atmega328p und ATinyx5 usw. Und viele andere hätten einen zentralen Zugriffsort, falls die Lizenz erlaubt, und nicht diesen Thread der irgendwann von der Hauptseite verschwindet und es niemand sonst weiter erfährt. Was echt Schade ist. Ich schaue mir gern euren Code an.

Aber ich nehme an ihr wisst wie Git funktioniert :)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
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: NeoPixel und Arduino mit Lazarus

Beitrag von af0815 »

hum4n0id3 hat geschrieben:
So 5. Sep 2021, 21:40
Aber ich nehme an ihr wisst wie Git funktioniert :)
Das würde ich hier NICHT voraussetzen. Sorry aber GIT ist nicht gerade das einfachste Tool. Und du verlangst das wer ein Repo betreibt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

hum4n0id3
Beiträge: 301
Registriert: So 5. Mai 2019, 15:23

Re: NeoPixel und Arduino mit Lazarus

Beitrag von hum4n0id3 »

Ich verlange gar nichts. Ich schrieb, das ich es schön fände das Leute ihre Projekte in ein Git-Repo einbringen würden, Gründe inbegriffen. Und ein Git-Repo zu betreiben, finde ich zumindest nicht schwer.

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: NeoPixel und Arduino mit Lazarus

Beitrag von Maik81SE »

af0815 hat geschrieben:
So 5. Sep 2021, 19:44
Wenn du mit AVR arbeitest, so ist trunk oder zumindest der aktuelle fixes Zweig nötig. Keine alte Version. Und Lazarus 2.0.12 mit FPC 3.0.4 ist so gesehen steinalt :D
Letztes Update am Freitag via FPCDeluxe., mache ich grundsätzlich, wenn ich den cross ändere
af0815 hat geschrieben:
So 5. Sep 2021, 21:57
Das würde ich hier NICHT voraussetzen. Sorry aber GIT ist nicht gerade das einfachste Tool. Und du verlangst das wer ein Repo betreibt.
Dem schließe ich mich an und solange ich es local im Netzwerk mit git nicht sauber hinbekomme was die Versionen und das foken angeht, fange ich auf Git-Hub damit erst garnicht an.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

PascalDragon
Beiträge: 823
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: NeoPixel und Arduino mit Lazarus

Beitrag von PascalDragon »

Maik81SE hat geschrieben:
So 5. Sep 2021, 18:37
PascalDragon hat geschrieben:
So 5. Sep 2021, 11:37
Unit Intrinsics. Diese enthält noch ein paar weitere Intrinsics, die es vermeiden, dass man auf einen assembly Block für gängige Funktionalitäten zurückgreifen muss. ;)
Da verwendest du sicherlich eine andere als ich...
Ist tatsächlich nur in 3.3.1 verfügbar. So oder so würde ich dir aber vorschlagen mindestens auf 3.2.2 hoch zu gehen, da sich zwischen 3.0.4 und 3.2.0 vieles im AVR Bereich getan hat.
FPC Compiler Entwickler

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1423
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: NeoPixel und Arduino mit Lazarus

Beitrag von fliegermichl »

Hmm, ich hab das in einem Git Repository aber auf meinem eigenen Server. Wie kann ich das zusätzlich noch mal auf github hochladen? (Ich hab da einen Account)

hum4n0id3
Beiträge: 301
Registriert: So 5. Mai 2019, 15:23

Re: NeoPixel und Arduino mit Lazarus

Beitrag von hum4n0id3 »

fliegermichl hat geschrieben:
Mo 6. Sep 2021, 11:49
Hmm, ich hab das in einem Git Repository aber auf meinem eigenen Server. Wie kann ich das zusätzlich noch mal auf github hochladen? (Ich hab da einen Account)
Hier kann ich leider nicht helfen, weil ich das (noch) nie machen musste :( Ich habe jetzt etwas gegoogelt und das hier gefunden:

https://withdave.com/2019/01/migrating- ... -with-git/
https://medium.com/collaborne-engineeri ... cddedd5d73
https://gist.github.com/niksumeiko/8972566

Was ich mal genannt habe, ist ein Repository umbenennen und lokal die Einstellungen an das neue Online-Repository anzupassen. War aber auch schnell gemacht. Ich musste eigentlich nur die Adresse anpassen, soweit ich das weiß.

Was mir noch als ein Argument für ein öffentliches Git-Repo (muss ja nicht GitHub sein, es gibt auch GitLab, Bitbucket etc.) noch eingefallen ist, sind "Programmiersprachen Rankings" :) Mehr öffentliche Lazarus-Projekte deutend auf ein Wachstum der Sprache und Lazarus als IDE hin. Ich denke das ist auch für euer Lazarus-Verein nützlich wie auch interessant.

Nur verlange ich hier NICHTS. Eher ein Vorschlag. Ich finde es nur halt schade, das der Code "verschwindet" wenn dieser Thread nicht mehr aktuell sein wird.

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

Re: NeoPixel und Arduino mit Lazarus

Beitrag von Mathias »

PascalDragon hat geschrieben:
So 5. Sep 2021, 11:37
Maik81SE hat geschrieben:
Sa 4. Sep 2021, 17:08
Wo hast du die beiden Functionen

Code: Alles auswählen

avr_save()
und

Code: Alles auswählen

avr_restore(SREG)
aufgetrieben.
Unit Intrinsics. Diese enthält noch ein paar weitere Intrinsics, die es vermeiden, dass man auf einen assembly Block für gängige Funktionalitäten zurückgreifen muss. ;)
Wann sind diese beiden Functionen dazu gekommen ?
Ich wollte die mit diesem Link überprüfen: https://svn.freepascal.org/cgi-bin/view ... view=roots
Nur ist er leider unterdessen tot.
Gibt es eine Alternative dazu ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: NeoPixel und Arduino mit Lazarus

Beitrag von Mathias »

af0815 hat geschrieben:
So 5. Sep 2021, 21:57
hum4n0id3 hat geschrieben:
So 5. Sep 2021, 21:40
Aber ich nehme an ihr wisst wie Git funktioniert :)
Das würde ich hier NICHT voraussetzen. Sorry aber GIT ist nicht gerade das einfachste Tool. Und du verlangst das wer ein Repo betreibt.
Und leider wurde in der Zwischenzeit etwas bei github geändert. Da ich sehr lange nichts mehr gemacht habe, habe ich dies erst kürzlich bemerkt. Mit dem Acount-Name und Password lässt sich nichts mehr hoch laden, man braucht da zwingend das SSH Zeugs. :roll:
Nut habe ich gerade keine Lust und Zeit, mich mit dem auseinander zu setzen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten