Startseite › Foren › LED-Basic › Programme einspeisen
- Dieses Thema hat 19 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 4 Jahre, 2 Monaten von
Folker Stange.
-
AutorBeiträge
-
13. August 2020 um 12:44 #1677
Fred
TeilnehmerHallo zusammen,
kann mir jemand helfen wie ich ein spezifisches Programm in einen der Speicherslots eingeben kann? (Ich möchte dort mehrere Programme speichern)
Also speziell wenn ich zb so etwas habe:
100:
if c = 14 then goto 150 ‚ wenn bei letzter led gehe zu funktion 200
LED.setled(c, 1) ‚led an
delay 50 ’50ms leuchten
LED.setled(c, 0) ‚led aus
c = c + 1
‚delay 200
goto 100
150:
if d >= 254 then goto 200
LED.setled(15, 1) ‚led an
LED.setled(14, 1) ‚led an
‚delay 50
LED.bright(255-d)
d = d + 1
‚delay 500 ’50ms leuchten
‚LED.setled(15, 1) ‚led aus
delay 10 ’50ms leuchten
goto 150
200:
LED.bright(255)
LED.setall(0)
delay 500
c = 0
d = 0
delay 250
goto 100
endwie bekomme ich das nun in die Effektdaten rein, also dort wo steht „data 0x000…“
Also wie genau kann ich mein kleines Programm übersetzen sodass ich es als eines der 16 Programme speichern und abrufen kann?
Über Hilfe oder Beispiele würde ich mich sehr freuen!
Viele Grüsse14. August 2020 um 8:12 #1679Vanessa
ModeratorHallo Fred,
welchen „Speicherslot“ meinst du denn ? LED-Basic besteht immer nur aus einem Programm. Für welches Device solls denn sein ?
Gruß Vanessa14. August 2020 um 9:08 #1680Fred
TeilnehmerHallo Vanessa,
danke für deine Antwort.
Ich meine die Running Lights mit 16 LEDs.
Mit Speicherslot meinte ich in der Beispieldatei was nach den „Effektdaten“ kommt, da sind dann ja diese Tokens ‚1‘, ‚2‘,… in denen man die Programme reinschreiben kann soweit ich verstanden habe. Allerdings verstehe ich nicht wie ich nicht wie ich ein Programm von beispielsweise100:
delay 5
k = IO.keystate()
s = IO.getpoti(1)
‚ Setze PIN auf High
if p = 0 goto 110
p = p – 1
if p = 0 then IO.setport(1)umändern kann in
5:
data 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080
data 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000
data 0x0000, 0x0000damit ich diese mit i = read 5, c dann abrufen kann.
Also wie ich an die data Werte rankomme ist mir noch nicht klar.
Ich hoffe du kannst mir weiterhelfen.
Danke und viele Grüsse
14. August 2020 um 9:44 #1681Vanessa
ModeratorAh, ok…
„data“ bezieht sich nachfolgend auf eine Datenreihe. Schau dir mal die Anleitung seite 17 an. Das ist nicht das übersetzte Programm. Du kanns also eine Datenreihe machen und diese dann im Programm „auslesen“.
zB:5:
data 1,2,3,4,5,6,7dann im Programm
y = 0
x = read 5,yusw…
14. August 2020 um 9:58 #1682Fred
TeilnehmerHallo Vanessa,
genau, das habe ich verstanden.
Aber wie erstelle ich die Datenreihe, also wie komme ich auf die Werte hinter „data“?
Also wie kann ich zum Beispiel dies hierc = 0
100:
print „KEY:“,IO.getkey()
delay 100
110:
if c = 16 then goto 200
LED.setled(c, 1)
c = c + 1
d = IO.getpoti(1)
delay d * 10 + 10
goto 110
200:
delay 100
300:
c = c – 1
LED.setled(c, 0)
delay d * 10 + 10
if c = 0 then goto 100
goto 300
endin in diese „5: data …“ reinbekommen?
Danke und viele Grüsse
14. August 2020 um 10:43 #1683Vanessa
ModeratorHallo Fred,
das sind zwei paar Stiefel 🙂
Die Datenreihe hat nichts mit einem Programmcode zu tun.
Datenreihen kann man erstellen wie man sie braucht.
Und Programmcode ist Programmcode.
Also dein Programm kann nicht in eine Datenreihe umgewandelt werden.
Du kannst nur mit dem Programm eine Datenreihe auslesen.
Gruß
Vanessa14. August 2020 um 12:00 #1684Fred
TeilnehmerHi Vanessa,
ok danke.
Könntest du mir irgend ein Beispiel geben wie ich konkret eine Datenreihe erstellen kann?
Also wie komme ich zb auf „0x01FF“?
Danke und viele Grüsse14. August 2020 um 16:38 #1685Vanessa
ModeratorHi Fred,
kommt darauf an was du mit den Daten machen willst.
Also wenn es dir um Running Lights geht, kannst du dies direkt im dazugehörigen Programm sehen (lernen).
z.B
‚————————————————
12: ‚ 16 Werte
data 0x8001, 0x4002, 0x2004, 0x1008
data 0x0810, 0x0420, 0x0240, 0x0180
data 0xFFFF, 0x0000, 0xFFFF, 0x0000
data 0xFFFF, 0x0000, 0x0000, 0x0000
‚————————————————
Das ist die Datenreihe, welche in einer gewissen Form (siehe Anleitung Seite 47) die LED´s ansteuert.
Danach folgt im Programm die Abfrage:
‚ EFFEKT 12
‚================================================
3100:
i = read 12, c
LED.setled(i, 2)
c = c + 1
if c = 16 gosub 700
if c < 16 return
gosub 600
return
‚================================================
Du kannst einfach mit diesen Datenreihen experimentieren bis es deinen Wünschen enspricht.
Man brauch auch nicht unbeding eine Datenreihe um das Lauflicht anzusteuern.
Der Programmcode selbst macht das ja schon mit z.B.:
LED.setled(1, 1)
Das schaltet die LED1 an.
Gruß
Vanessa14. August 2020 um 18:13 #1686Fred
TeilnehmerHallo Vanessa,
danke für die Antwort.
Soweit verstehe ich das schon, also das read 12,c dann die Datenreihe 12 ansteuert ist mir klar, auch was in 3100 passiert.
Meine Frage ist, wie kann ich diese Datenreihe / gewisse Form wie beispielsweise „data 0x8001, 0x4002, 0x2004, 0x1008“ erstellen?
Also wie komme ich darauf, oder anders ausgedrückt, wie kann ich (nur als Beispiel) eingeben dass die Lichter nacheinander an-und ausgehen, und zwar dass es dann in dieser Form „data 0x8001 …“ dargestellt wird?Ich verstehe also nicht, wie ich zum Beispiel meine Sternschnuppenvariationen auf diese Form „0x8001“ bringen kann damit ich mehrere Programme ansteuern kann. Die 16 Programme in der Beispieldatei sind ganz gut, aber ich würde mich freuen wenn ich auch eigene Programme erstellen könnte und gleich auf dem Lauflicht anwählen kann.
Danke für deine Geduld und ich hoffe du kannst mir weiterhelfen.
Viele Grüsse
14. August 2020 um 19:05 #1687Vanessa
ModeratorHi Fred,
ok, du möchtest also wissen, wie die HEX Formate 0x0000 bis 0xffff zustande kommen – wenn ich das richtig verstanden hab. Und das zusätzlich noch in das vorhandene Programm einbauen.
Also die HEX Formate:
Verwende eichfach mal den Rechner von Windows un schalte ihn auf Programmiermodus um. Wenn du jetzt im HEX irgendwas zwischen 0000 und FFFF eingibst, siehst du das 0x000 gleichbedeutend mit 0000 0000 0000 0000 ist.
0xffff dann 1111 1111 1111 1111.
Somit für jede der 16 LED ein Zustand.
Das ganze dann in das Programm einbauen wird schon etwas fummeliger.
Evtl. einfach eine Auswahl im vorhandenen programm umstricken für erste.
Gruß
Vanessa15. August 2020 um 8:39 #1688Fred
TeilnehmerHi Vanessa,
danke nochmal.
Ok ich kann Zahlen in Hexwerte unwandeln und ungekehrt.
Aber wie kann ich damit meine LEDs programmieren?
Ich habe jetzt hier als Beispiel ein Programm, basierend auf der Diamex Demo, und habe es so umgeändert, dass am Ende noch die 16te LED ausbrennt.
Weisst du wie ich das in der Form „data 0xffff etc “ darstellen kann und kannst du es mir eklären sodass ich es auch hinbekomme, also konkret das folgende Beispiel?c = 0
d = 0 ‚variable für counter der helligkeit
100:
if c = 15 then goto 150
LED.setled(c, 1)
delay 50
LED.setled(c, 0)
c = c + 1
‚delay 200
goto 100150:
if d >= 254 then goto 200
LED.setled(15, 1) ‚led an
‚delay 50
LED.bright(255-d)
d = d + 1
delay 10
goto 150200:
LED.bright(255)
LED.setall(0)
delay 5000
c = 0
d = 0
delay 250
goto 100end
Ich hoffe du kannst mir weiterhelfen.
Danke und viele Grüsse
15. August 2020 um 9:28 #1689Vanessa
ModeratorHi Fred,
tja wo fange ich an…
deine Wünsche sind mannigfaltig 🙂
Das vorhandene DIAMEX Programm ist so aufgebaut, dass Helligkeitsänderungen NUR mit dem Poti gemacht werden können. Die Datenreihen beziehen sich ausschließlich auf das AUS und EIN schalten der LED´s.
Dein Programm beinhaltet beides.
Wenn du also das DIAMEX Programm erweitern willst, kannst du nur mit aufwändigen Umschreiben des Codes deinen Wunsch ins original Programm einfügen.
Das Beispiel von dir lässt also LED1 bis 16 nacheinander leuchten und dann die 16te LED ausglühen, bis es dann wieder von vorne anfängt.
Die Datenreihe für LED1-16 an/aus wäre:
data 0x8000, 0x4000, 0x2000, 0x1000, 0x0800, 0x0400, 0x0200, 0x0100
data 0x0080, 0x0040, 0x0020, 0x0010, 0x0008, 0x0004, 0x0002, 0x0001
Aber bei so einer Reihe ist es einfacher, es als Programm so wie du es schon gemacht hast, zu erzeugen.
Die grundsätzliche Frage ist : Wilst du das original DIAMEX Programm ändern oder dein eigenes machen.
beides brauch einiges an Arbeit.
Gruß
Vanessa15. August 2020 um 17:37 #1690Fred
TeilnehmerHallo Vanessa,
danke für die Antwort.
Ich möchte eigene DIAMEX Programme selbst machen.
Wie kann ich den Code schreiben?
Danke und viele Grüsse,
Patrick17. August 2020 um 16:16 #1691Vanessa
ModeratorHallo Patrick,
kommt drauf an welche Kenntnisse du in Basic (LED-Basic) hast.
Lade dir den Editor herunter und gehe Scvhritt für Schritt die Anleitung durch.
Dann ein paar kleine Anfangsprogramme in das Running Lights reinladen und testen.
Irgendwann kannst du dann das original Programm von DIAMEX nach deinen Wünschen ändern.Gruß
Vanessa18. August 2020 um 12:07 #1692Fred
TeilnehmerHallo Vanessa,
ich habe immer noch nicht verstanden wo ich herausfinden kann wie ich auf die gewisse Form „data 0x0800 etc“ kommen kann, auch nicht in eurem LED Basic Handbuch .
Ich hätte noch ein paar kleine Fragen und würde mich freuen wenn du diese beantworten kannst.
1.) Ich habe jetzt zwar selbst herausgefunden was die Zeichen in der Beispieldatei bedeuten, aber eine konkrete Anleitung wäre extrem hiflreich, auch um Neues herauszufinden. Wo genau finde ich die Anleitung um auf diese Form zu kommen?
2.) Könntest du bestätigen dass ich in der gewissen Form „data 0x0800 etc“ die Helligkeit nicht verändern kann? (Ich meine damit nicht den Wert 0x0800 sonder nur die allgemeine Form)
3.) Ob ich dort eine beliebig lange Pause einfügen kann weiss ich auch nicht. Ist das möglich?
4.) Ist es in der gewissen Form nur möglich, Licht an / Licht aus einzustellen und es ist nicht möglich, beispielsweise die anderen Beispieldateien im Editor in die Form umzuwandeln?
Ich hoffe du kannst mir weiterhelfen.
Viele Grüsse -
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.