PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Barometer BMP085 als Balkenanzeige anzeigen



Woldeu
12.11.2013, 21:33
Hallo

Ich möchte den Luftdruck zusätzlich als Balken anzeigen um die Tendenz zu sehen.
Es läuft auf dem Arduino.Programmieren ist nicht meine Stärke.
Im Netz habe ich schon alles durchsucht.
Für Hilfe wäre ich Dankbar

Wolfgang

RoboHolIC
12.11.2013, 23:31
Welche Hardwareumgebung - speziell: Anzeigemöglichkeiten - ist vorhanden?
Ich tippe da mal auf ein LCD-Modul !?

Brauchst du die Tendenz als reines Vorzeichen, also "steigend" bzw. "sinkend" oder einen in der Länge veränderlichen Balken in positiver/negativer Richtung?

oberallgeier
12.11.2013, 23:58
... den Luftdruck zusätzlich als Balken anzeigen um die Tendenz zu sehen ...Wie schon Kollege RoboHolIC schreibt - etwas wenig Beschreibung zur Frage, da kann man nur raten was Du möchtest. LCD dürfte klar sein, aber Balken horizontal oder vertikal?

Horizontal wird im einfachsten Fall eine Zeile mit ganzen Blöcken geschrieben - je mehr Druck, desto mehr Blöcke. Sieht von nicht ganz nahe wie EIN Balken aus. Natürlich geht es auch in EINEM einzelnen "Zeichen", siehe dieses Video, (https://www.roboternetz.de/community/threads/62904-Servomesstester-(Servotester-und-–messaufbau)?p=585511&viewfull=1#post585511) im LCD nach Sekunde 7 bis Sekunde 8 (also sehr kurz) als Start-/Testsequenz. Dazu hatte ich mir eigene Sonderzeichen geschrieben - als jeweils fertige, schwarze Blöcke unterschiedlicher Höhe. Also eigentlich eine richtig simple Sache.


... läuft auf dem Arduino.Programmieren ist nicht meine Stärke ...Arduino als SCD (self coding device ???). Whow.

Woldeu
13.11.2013, 11:54
Hallo
Danke für die Antwort.Ich habe ein 20x4 LCD.Auf Reihe 3+4 möchte ich senkrechte Balken anzeigen.
Je Balken 1-2 Std durchschnitt

Wolfgang

RoboHolIC
13.11.2013, 14:29
Vermutlich ist dein Textdisplay ein HD44780-kompatibles Teil. Dann kannst du bis zu acht Zeichen selbst definieren. Grob gesagt kann man dazu in einen speziellen RAM-Bereich des LCD-Controllers je Zeichen 8 Bytes schreiben; jeweils 5 Bit rechtsbündig sind eine Zeile der Zeichenmatrix, die 8 Bytes (meines Wissens) von oben nach unten ergeben dann die Bitmatrix des Zeichens. Die Zeichen sind anwählbar als Character 0..7. Das nur als grobe Anleitung aus meinem Gedächtnis. Wie es im Detail genau geht, das steht im Datenblatt zum HD44780. Ich bin jetzt zu faul, das herauszusuchen.

Im PIC-Assembler sieht die Zeichendefinition bei mir so aus: (das 'retlw' ist PIC-spezifisch, b'nnnnnnn ' ist die Binärschreibweise von Konstanten)


retlw b'00000111' ; 4. Zeichen, 1. Pattern
retlw b'00000111'
retlw b'00000011'
retlw b'00000000'
retlw b'00000000'
retlw b'00000000'
retlw b'00000000'
retlw b'00000000' ; 4. Zeichen, 8. Pattern

Woldeu
14.11.2013, 10:49
Hallo
Ich habe einen Audio LCD Analyzer gefunden.Dieses Programm werde ich versuchen umzuschreiben.
Der Bereich sollte 982-1030 hPa sein zum Test.Dafür werde ich alle 4 Zeilen benutzen.
senkrecht sind das 32 Balken entspr. pro Balken 1,5 hPa
Das Problem ist jede Std den Wert einen rüber zu schieben.

Also basteln,basteln,basteln

Wolfgang

RoboHolIC
15.11.2013, 22:45
Das Problem ist jede Std den Wert einen rüber zu schieben.
Klingt nicht nach Engpass bei der Rechenzeit - wo hakt es denn?

Woldeu
16.11.2013, 09:41
Hallo Roboholic
Ich habe den Wert(Temperatur zum besseren ausprobieren)4 Zeilen Senkrecht auf die rechte Seite des LCDs gebracht.
Die Anzeige klappt.Jetzt möchte ich jede Stunde den Wert in das Eeprom(kann der letzte Wert sein)schreiben.
Dann sollte der Wert einen nach links geschoben werden.Die gespeicherten Werte dann jeweils jede Stunde einen weiter.
Am Ende des LCDs dann rausfallen.So habe ich eine ca 20Std Tendenz.
Ich habe kein Programmieren gelernt. Ich klaube mir immer Teile aus fertigen Programmen.
Ich habe schon eine Aquariumsteuerung mit PWM für LED Beleuchtung gebaut.
Ich bin Segler und so eine Tendenz kann bei schnell nahendem Unwetter warnen.

Wolfgang

oberallgeier
16.11.2013, 10:24
... Werte ... jede Stunde einen weiter ... Segler ... Tendenz kann bei schnell nahendem Unwetter warnen ...Oh Wolfgang. Fall1: ich segle (45er) die Kornaten südwärts vorm Wind runter, guter Segelwind, keine 3 Bft. Unten kommen acht Windstärken aus NNO (und pfundig wars hinter den Inseln nach NW, mit ner Viertel Genua ohne Groß satt über 7 kn) - der Umschwung dauerte keine Stunde. Fall2: Côte d`Azur, von Antibes/Île Sainte-Marguerite westwärts. Bestes Wetter in Cannes, Wind SW 2 Bft, Glattwasser. Wind frischt auf, keine Stunde bis wir 5+(+) Bft hatten und s..grobe Wellen aus Windrichtung. Schauderhafte vier Stunden auf der Kreuz über die Wellen reiten bis St. Tropez :-/. Beide Male hatten wirs auf nem ähnlichen Wetterboard wie Du es planst nicht gesehen. Fazit: eine Stunde und weniger seh ich ja schon auf der Kimm!

Woldeu
16.11.2013, 11:44
Hallo Oberallgeier
Es geht ja erst mal um das Programm für eine normale Wetterstation.
Wenn die fertig ist kann man es aufs Segeln abstimmen.
Die Zeiten kann man ja ändern.

Wolfgang

RoboHolIC
16.11.2013, 23:36
@Woldeu:
Geht es jetzt weiter bei dir oder klemmt es?
Das EEPROM kannst du sequentiell mit abertausenden (Stundenmittel-)Werten beschreiben. Für die Schreib-Lese-Organisation kann man z.B. mit Zeigern oder mit der Suche der ersten nicht beschriebenen Speicherzelle 0xFF (tatsächlich eingeschrieben werden m.W. die Nullen, Löschen macht lauter 0xFF-Einträge) arbeiten.
Brauchst du tatsächlich das EEPROM? Ist natürlich die sicherste Variante, steigert m.E. den Programmieraufwand der Speicherverwaltung merklich. Batteriepufferung des Messgeräts würde das erübrigen. Der LCD-Controller hält die Daten auch und kann den DDRAM (Data Display RAM)-Inhalt (das, was man sieht) horizontal scrollen; der µController hat die 20 Byte im Zweifel auch noch irgendwo frei.

@<alle>
Wie sieht's eigentlich mit der Druckmessung aus? Wie kriegt man den Drucksensor von den dynamischen Effekten des Windes gut entkoppelt? Man will ja keinen Staudruck, Wirbel oder Sog messen, sondern den statischen atmospärischen Luftdruck. Braucht man da einen "pneumatischen Tiefpass" aus hohem Strömungswiderstand und Puffervolumen, analog einem RC-Glied? Oder macht man das sauberer/besser durch geschickte Formgebung im Umfeld des Sensors?

Woldeu
17.11.2013, 16:12
Hallo Roboholic
Das Schreiben des Wertes nach Uhrzeit ins eeprom und Ausgabe aufs LCD ist kein Problem mehr.
Nur nach 20 Zeilen überschreibt er die alten Werte von vorne wieder.
Das weiterschieben ist mein Problem.

Der Druckmesser kommt in ein Gehäuse da bläst kein Wind.

Wolfgang

RoboHolIC
17.11.2013, 22:57
... nach 20 Zeilen überschreibt er die alten Werte von vorne wieder.
Das weiterschieben ist mein Problem. Jetzt mal doof gefragt: Im Display oder im EEPROM? Im EEPROM geht schieben nicht und braucht's auch nicht, das wird in beiden Fällen über einen Zeiger bzw. Offsetwert gelöst: Im LCD kann das der Controller in Hardware (Offset im DDRAM) für das linke/erste Zeichen der Anzeige, im EEPROM macht das eine zu erstellende Software.

Willst du eine Langzeiterfassung jenseits der 20 Messwerte haben, darin scrollen, weitere Auswertungen machen, z.B. verschiedene Zeitmaßstäbe (1Std. / 12Std./1 Tag/1 Woche)? Ich bin davon ausgegangen, dass für die Trendanzeige nur die jüngsten Werte von Bedeutung sind und dass eine Sturmtiefprognose nach 24 h überholt sein dürfte.

oberallgeier
18.11.2013, 09:55
Hi Wolfgang,

es gibt noch ne einfache Möglichkeit einer Bargraph-Anzeige - mit dem LM3914N und zehn LEDs oder einem Vielfachen davon. Anzeige als Bargraph/Leuchtband oder Punkt. Hab ich hier bei mir stehen, know how gibts a) im Datenblatt, b) z.B. hier (http://www.finger.de-web.cc/info/LED-Balkenanzeigen-mit-LM3914-16.pdf) oder mit 40 LEDs hier (http://www.knollep.de/Hobbyelektronik/projekte/27/index.htm) (ist aber dasselbe wie vorher nur hochgestockt).

RoboHolIC
18.11.2013, 11:28
Das passt nicht ganz zur Anforderung:

Je Balken 1-2 Std durchschnitt

Woldeu
18.11.2013, 14:48
Hallo
Noch mal zur Erklärung
Der Luftdruck wird angezeigt über 4 Zeilen senkrecht Platz 19 (8 wagerechte Balken pro Zeile x 4 Zeilen = 32 Balken) 982 hPa - 1030 hPa =1,5 hPa pro Balken. Funktioniert.
Zum Testen habe ich ein Thermometer angeschlossen um den Ausschlag besser zu sehen.

Jetzt Neu
Weiter mit einem Zeitstempel (alle 1,10,oder 30 min) Wert messen ins eeprom schreiben und 1 sec. später auf Platz 19 schreiben. Funktioniert.
Dann nächsten Wert auf Platz 19 schreiben vorher aber alten Wert einen nach links schieben. bis LCD voll. Dann Stelle 0 fallen lassen, nicht mehr speichern.
So habe ich immer 20 Werte angezeigt. (Trent) Dies klappt noch nicht.

Wolfgang

Woldeu
21.11.2013, 21:00
Hallo

Ich habe das Programm fertig,auch ohne eeprom,schiebe den Wert am LCD.

Ich habe schon einige Tips erwartet,aber das war wohl nix!!!!!

Im Arduino-Forum ist es noch schlimmer.

Tüss Roboholic

Wolfgang

RoboHolIC
21.11.2013, 22:41
@Woldeu


Ich habe schon einige Tips erwartet,aber das war wohl nix!!!!!

Im Arduino-Forum ist es noch schlimmer.

Nun bin ich aber doch vor den Kopf geschlagen (wenngleich nicht persönlich): Was erwartest du eigentlich von einem/diesem Forum???
Ich habe nochmals diesen Thread gefilzt auf 'ausbleibende Tips'.
Das Ergebnis war: Du hast nicht eine einzige konkrete Frage gestellt. Statt dessen hast du Allgemeinplätze und diffuse Wünsche vorgetragen. Meinst du ernsthaft, wir warten hier nur darauf, deine in die Runde geworfenen Idee aufzugreifen und dir dann fertigen Code zu liefern??? Da waren von unserer Seite reichlich Anhaltspunkte benannt und Stichwörter gefallen, die irgendwie verpufften.

Selbst RTFM (= Read The Fucking Manual)-reife Fragen finden hier zumeist geduldige Beantworter, aber: Ohne konkrete Fragen geht halt nichts. Was ich eingangs zitierte, finde ich da einfach voll daneben, da muss ich mich auch vor alle anderen Beteiligten hier stellen.

Es grüßt
RoboHolIC

Woldeu
21.11.2013, 23:10
Hallo Roboholic
Ich habe ja geschrieben das ich kein programmierer bin.Ich bin erst durch meine Aquariumsteuerung dazu gekommen.
Ich habe schon einige Bücher gelesen.

Mit Tips meinte ich zum Beispiel

for (uint8_t j = 0; j < 8; j++)
{
for (uint8_t i = 0; i < 8; i++)
{
if ( i <= j ) prs_bars[j][7-i] = B11111;
else prs_bars[j][7-i] = B00000;
}

Mehr wollte ich ja nicht.Fertige Sketche kann man ja nicht verlangen.

Bis bald

Wolfgang

oberallgeier
21.11.2013, 23:42
... einige Tips erwartet,aber das war wohl nix!!!!! Im Arduino-Forum ist es noch schlimmer ...
... Nun bin ich aber doch vor den Kopf geschlagen (wenngleich nicht persönlich) ...Hast Recht, RoboHolIC, wenn jemand so dringend "Bitte keine Antwortposts mehr an mich" wünscht, dann mach ich das auch. Da wird halt meine Liste um eine Position länger.