Moin,
folgende Situation
320 * 480 Display auf einem Arduino Due.
es kommen regelmäßig Messwerte auf Pin 2 an.
diese liegen im Bereich von 4000 bis 12.000
in der Regel bewegen sich die Meswerter eher zwischen 4000 und 7000.
hier habe ich nicht das Problem.
Ich möchte gern diese Messwerte auf dem Display anzeigen.
Und das muss ich wohl erklären.
Das Dislay hat horizontal 480 Pixel. Links oben ist 0,0 und rechts unter eben 319x479.
Wird nun ein neuer Messwert eingelesen dann soll rechts die Grafikkurve erneuert werden während sich der ganze Bildschirm quasie nach links verschiebt und der älteste Wert quasie hinten rausfällt.
Das heißt ich muss mit einem Array arbeiten.
X = Messwerte, Y gleich Pointer.
2 Arrays mit jeweils 480 elementen.
Messwert kommt, wird in X[480] gespeichert. Y[480] = enthält ebenfals den Wert 480.
mit dem neuen Messwert wird aus dem Messwert X[480] nun X[479]
gleiches trifft auf Y[480] zu.
kann man das irgendwie clever in einer Art Scheife umsetzen.
Hab ich das Problem richtig formuliert?
Ich bin für jeden Tip dankbarich weis auch nicht on der Arduino praktisch Schnell genug ist.
Ich möchte auf jeden fall eine grafische Darstellung der Messabweichungen realisieren.
gibts hier jemand der soetwas evtl schonmal realisiert hat
ich bin für jede hilfe dankbar...
Gruß
Peter
Warum schreibst du nicht einen aussagekräftigen Titel ?
Dann weiß gleich jeder, worum es hier geht und der Beitrag ist besser zu finden.
Das du Hilfe brauchst, kann sich auch so jeder vorstellen.
kann man das irgendwie clever in einer Art Scheife umsetzen.
Sicherlich!
Vermutlich möchtest du einen Ringbuffer etablieren.
Und ja, das haben schon tausende von Leuten gemacht.
elch-rudi:
2 Arrays mit jeweils 480 elementen.
Nein. Ein Array mit 480 Elementen ist genug. Die Frage ist, ob Du wirklich alle 12.000 mögliche Messwerte speichern können musst - also ob Du ein Array von int-Werten benötigst oder ob byte-Werte genügen.
Probiere das Benötigte am besten mal mit einem kleinen Array mit z. B. 5 oder 10 Werten. Zum „Scrollen“ ist eine for-Schleife auf jeden Fall die beste Wahl.
Wenn Du Dir einen PAP aufzeichnest, kommst Du mit Sicherheit am schnellsten ans Ziel (vorausgesetzt, Du möchtest etwas lernen und nicht nur einfach kopieren [Ringpuffer wäre ein gutes Suchwort]).
Gruß
Gregor
Zum RAM sparen empfiehlt es sich, den Wertebereich auf 0-255 zu beschränken. Kann man drunter oder drüber noch andere Sachen schreiben.
Dann brauchst du nur 480 byte.
Ganz ohne diesen Speicher und mit weniger Aufwand kommst du aus, wenn die Kurve nicht wandert, sondern du an eine wandernde Position schreibst und eine Spalte oder einen schmalen Streifen davor komplett löschst ohne dir gemerkt zu haben, welcher Wert das war.
Er sprach vom Arduino Due:
elch-rudi:
320 * 480 Display auf einem Arduino Due.
Da dürfte das mit dem Ram nicht so ein Problem sein.
Moin,
a) ja, korrekt, ich hätte mir einen besseren Titel einfallen lasse sollen/müßen...
b) der Tip mit dem Ringbuffer war ein guter Ansatz, ich wußte nicht wie ich das formulieren sollen.
Was die darzustellenden Messwerte Betrifft.
Nun in der Theorie dürfte ich mit 250 Werten auskommen, ich muss also nicht so große Zahlen im Array vorhalten da ich keine Absolutwerte darstellen will, sondern abweichungen.
Letzendlich möchte ich ir ein Magnetometer bauen, das abweichungen von -100 ~ +100 auf dem LC-Display darstellt.
Da der Sensor sehr empfindlich ist, werde ich nicht drum herumkommen Ihn einmal am Tag zu kalibrieren da das was er da mißt einen gewissen Drift aufweiß und erschwerend auch noch rech Temperaturanfällig ist.
Probleme über Probleme...
Man gönnt sich ja auch sonst nix...
ALso, Sorry, für den irritierenden Titel...
Gruß
Peter
elch-rudi:
Probleme über Probleme...
Macht ja nichts. Langeweile ist schlimmer 
elch-rudi:
ALso, Sorry, für den irritierenden Titel...
Macht auch nichts, kannste nachträglich ändern.
Da Du mit dem Due üppig RAM hast, ist das Geizen mit Speicher nicht angesagt. Hübscher wäre wohl eine horizontal scrollende Anzeige, den Tipp von Michael finde ich aber einen Test wert.
Aber langweilig wird Dir vermutlich auch so nicht 
Gruß
Gregor
Hi
Theoretisch kannst Du den Titel anpassen - editiere dazu einfach Deinen Anfangs-Post.
Wenn Du die Anzeige später skalieren oder zoomen willst, würde ich die Original-Daten im Array speichern - Auflösung weg rechnen ist kein Problem, wieder drauf aber sehr wohl.
MfG
PS: Horizontal scrollen ist vom Display nicht vorgesehen, somit müsstest Du Das per Software machen und den ganzen Kram laufend neu zum Display feuern.
Da ist's vll. doch sinniger, einfach nur einen senkrechten Balken immer weiter nach Rechts zu schieben und dort, wo gerade eben noch der Balken war, bleibt jetzt nur der eine Pixel für den aktuellen Messwert - der Balken wird dabei einen Pixel rechts davon neu gezeichnet (oder ganz links, wenn wir ganz rechts waren).
So siehst Du den zeitlichen Verlauf und musst Dich nur ein zwei Spalten des Display kümmern, statt um Alle.
Wenn Du dann den Bereich auswählst, Den Du sehen willst, kannst Du Das ja beim Neuzeichnen so machen, daß der Anfang halt links ist und die Daten über die ganze Display-Breite ausgewickelt werden.
MfG
elch-rudi:
Moin,
a) ja, korrekt, ich hätte mir einen besseren Titel einfallen lasse sollen/müßen...
Dann solltest du das auch unbedingt machen.