-         

Ergebnis 1 bis 9 von 9

Thema: Diagramm auf Grafik display anzeigen. Wie Werte speichern?

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2005
    Ort
    NRW
    Alter
    41
    Beiträge
    142

    Diagramm auf Grafik display anzeigen. Wie Werte speichern?

    Anzeige

    Ich steuere ein 128x64 touch Display an und möchte in ein Untermenu, wo mir ein Diagramm angezeigt wird
    alle 15 Minuten wird einen neuen Wert einlesen. Jeder Wert soll einen Pixel bekommen und der näxhse Wert wird daneben angezeigt.

    Sekundentimer programmiert

    if viertel = 900 then gosub Diagrammpixel ' 900= 15min.
    end if


    Diagrammpixel:
    pix =pix +1
    pset pix, amperepix,1

    if pix = 30 then
    pix =0
    end if
    return

    So kann ich alle Pixel anzeigen, aber werden nur im Display gespeichert. Wie kann ich alle 15 Minuten einen Wert speichern da dieses Menu nur nach Aufforderung angezeigt werden soll.

    Nach Aufruf des Menüs, sollen die gespeicherten Werte nacheinander eingelesen und zum Display gesendet werden.

    Eprom kann man vergessen, da zu viele Schreibzyklen.
    Es braucht auch nicht in den eprom.

    Benutze bald den Mega 168, da der jetzige Mega 8 Rand voll ist.
    Hat den Vorteil, das er pingleich ist und doppelt so viel Speicher hat.

    Ich bin mal gespannt auf eure Anregungen

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Wenn du meinst, dass du 128 Werte abspeichern willst und du noch 128 Byte Platz im SRAM hast, dann mach dir doch ein Array und halte die eingelesenen Werte dort. In einer Variable (einem Zeiger) hältst du dir die aktuelle Position im Array, wo du als nächstes Schreiben willst.

    Gruß

    Rolf

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2005
    Ort
    NRW
    Alter
    41
    Beiträge
    142
    Morgen Rolf,

    dein Vorschlag hört sich gut an. Habe aber noch nie mit einem Array gearbeitet. Ich werde mal die Suche bemühen.
    Wenn jemand ein gut kommentiertes Beispielprogramm zeigen könnte -wäre toll.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2005
    Ort
    NRW
    Alter
    41
    Beiträge
    142
    So, hab was gefunden.

    Messwerte Array Dimensionieren
    Dim Messwerte(100) as Long
    'Dieses Array hätte 100 Einzelwerte(1 bis 100) oder
    Dim Messwerte(5) as Long
    'mit 5 Einzelwerten


    In die Stellen Werte schreiben
    Messwerte(1) = 10
    ...
    Messwerte(100) = 1234

    ' und wieder auslesen

    print Messwerte(7


    Kann man auch variablen in die Klammern schreiben ?
    messwerte(zähler) = amperepix

    Eine Long Variable hat 10 Stellen 32 Bit
    Was muss ich beachten. Wieviele Stellen dürfen die Werte haben bei welcher Anzahl von verschiedenen Werten?

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    ne long variable wirds nicht brauchen,
    da er ja nur die pixelposition speichern braucht.
    da reichen bytes locker.

    ergo

    dim pixelpuffer(100) as byte
    dim pixelzeiger as byte
    dim tempbyte as byte

    if viertel = 900 then gosub Diagrammpixel ' 900= 15min.
    end if


    Diagrammpixel:
    incr pixelzeiger
    if pixelzeiger>30 then pixelzeiger=1
    pixelpuffer(pixelzeiger)=pixelposition
    return

    graph_zeigen:
    for tempbyte=pixelzeiger to 100
    zeichnepixel = pixelpuffer(tempbyte)
    next
    for tempbyte=1 to pixelzeiger
    zeichnepixel = pixelpuffer(tempbyte)
    next
    return
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2005
    Ort
    NRW
    Alter
    41
    Beiträge
    142
    Hi Vitis,
    mit deiner doppelten for next schleife komme ich noch nicht so klar.
    Die Pixelposition liest den Wert der gerade gelesen wurde
    in deiner For nextschleife muss dann ja noch der Pset befehl eingebaut werden?

    Müssen hier die Speiherstellen nicht auf 30 geändert werden?
    dim pixelpuffer(100) as byte
    for tempbyte=pixelzeiger to 100

    Sorry ich kapier heut wohl nicht so viel.
    Ich quäl mich gerade mit ner dicken Erkältung in der Firma rum.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von mirco99
    Müssen hier die Speiherstellen nicht auf 30 geändert werden?
    dim pixelpuffer(100) as byte
    for tempbyte=pixelzeiger to 100
    Die Werte müssen alle gleich sein, eben so viele, wie du Pixel darstellen willst. Bei der 30 hat sich Vitis bestimmt nur verschrieben.
    Evtl. willst du da links noch eine Y-Achse auftragen mit Bezeichnungen, dann entsprechend weniger als 128.
    Ich würde auch den Zeiger immer auf der Position stehen lassen, auf die als nächstes geschrieben werden soll und nicht auf der Position, die zuletzt geschrieben wurde. D.h. also, in Diagrammpixel erst speichern und dann erhöhen und überprüfen.
    Dann kannst du die erste Schleife so machen, wie Vitis geschrieben hat. Die zweite Schleife darf aber nicht mehr bis Pixelzeiger gehen, sonst hast du den Wert ja doppelt ausgegeben, als ersten und als letzten. Dann hast du ganz rechts den neuesten Wert stehen. Daneben den vorletzten usw.
    Nicht vergessen, wenn viertel = 900 ist, viertel wieder auf 0 bzw. 1 zu setzen.

    Gruß

    Rolf

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    stimmt, wenns 30 sein sollen dann halt nur 30 deklarieren
    beim zweiten for kannste n

    decr pixelzeiger davor
    und n
    incr pixelzeiger dahinter bauen, könnt schöner werden

    zeichnepixel hab ich Platzhalter für Deine Zeichenfunktion
    verwendet
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2005
    Ort
    NRW
    Alter
    41
    Beiträge
    142
    Ich danke euch,
    ich denke ich habe es verstanden. Werde mich am Wochenende ransetzen.
    Jetzt muss ich erstmal gegen meine Erkältung kämpfen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •