Programme einspeisen

Startseite Foren LED-Basic Programme einspeisen

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 18)
  • Autor
    Beiträge
  • #1677
    Fred
    Teilnehmer

    Hallo 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
    end

    wie 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üsse

    #1679
    Vanessa
    Moderator

    Hallo Fred,
    welchen „Speicherslot“ meinst du denn ? LED-Basic besteht immer nur aus einem Programm. Für welches Device solls denn sein ?
    Gruß Vanessa

    #1680
    Fred
    Teilnehmer

    Hallo 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 beispielsweise

    100:
    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, 0x0000

    damit 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

    #1681
    Vanessa
    Moderator

    Ah, 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,7

    dann im Programm

    y = 0
    x = read 5,y

    usw…

    #1682
    Fred
    Teilnehmer

    Hallo 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 hier

    c = 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
    end

    in in diese „5: data …“ reinbekommen?

    Danke und viele Grüsse

    #1683
    Vanessa
    Moderator

    Hallo 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ß
    Vanessa

    #1684
    Fred
    Teilnehmer

    Hi 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üsse

    #1685
    Vanessa
    Moderator

    Hi 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ß
    Vanessa

    #1686
    Fred
    Teilnehmer

    Hallo 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

    #1687
    Vanessa
    Moderator

    Hi 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ß
    Vanessa

    #1688
    Fred
    Teilnehmer

    Hi 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 100

    150:
    if d >= 254 then goto 200
    LED.setled(15, 1) ‚led an
    ‚delay 50
    LED.bright(255-d)
    d = d + 1
    delay 10
    goto 150

    200:
    LED.bright(255)
    LED.setall(0)
    delay 5000
    c = 0
    d = 0
    delay 250
    goto 100

    end

    Ich hoffe du kannst mir weiterhelfen.

    Danke und viele Grüsse

    #1689
    Vanessa
    Moderator

    Hi 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ß
    Vanessa

    #1690
    Fred
    Teilnehmer

    Hallo 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,
    Patrick

    #1691
    Vanessa
    Moderator

    Hallo 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ß
    Vanessa

    #1692
    Fred
    Teilnehmer

    Hallo 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

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 18)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.