Hallo Leuts! Ich bin hier mal wieder am Verzweifeln ... Ich beschäftige mich noch nicht lange mit Bascom. Ich möchte eine kleine U-Meßschaltung realisieren. 2 ADC Ports auslesen, umrechnen und auf gLCD ausgeben, Spannung bis 5 Volt, Uref = 5 V. Also, das Auslesen und Umrechnen klappt schon, aber ich möchte den Wert auf dem LCD formatieren. Unter 1 Volt soll in Millivolt angezeigt werden, und zwar (absichtlich) so: ###.# mV ... ab 1 V dann ##.## V Ich verwende den Befehl "format", aber irgendwie zeigt der ständig lange Zahlen an. Mit "Fusing" fängt die Anzeige links an und wandert -je mehr Stellen vorm Komma- nach rechts, das will ich verhindern. Für einen ADC paste ich mal meinen (besch....) code, nicht lachen :) ------------------------------------- Dim Adc0 As Word Dim Vpre As Single Dim V0 As Single Dim C0index As String * 2 Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Vpre = 48876 / 10000000 Adc0 = Getadc(3) V0 = Adc0 * Vpre Dim V0test As String * 5 If V0 < 1 Then V0 = V0 * 1000 C0index = "mV" V0test = Str(v0) V0test = Format(v0test , " ") Else V0index = " V" V0test = Str(v0) V0test = Format(v0test , " ") End If Locate 5 , 2 Lcd C0test Locate 5 , 7 Lcd C0index ------------------------------------- Ich hab mittlerweile schon Stunden gesucht und probiert ... (die doppelte Ausführung von format im IF-Abschnitt ist noch vom Probieren drin) Wenn Lcd Fusing(...) von rechts nach links schreiben würde, wäre es glaube ich kein Problem. Für einen Rat bin ich sehr dankbar! Grüße, Robert
Hallo Robert, schau Dir mal das Programm im Anhang an. Ich weis aber nicht ob es auch mit einem gLCD funktioniert. Jürgen
Hallo Robert, 1000mV = 1V; Das Programm im Anhang solte richtig Anzeigen. Jürgen
Hallo Jürgen, vielen Dank, das hat funktioniert :) Allerdings, sobald ich Vpre "genauer" machen will, also 489 oder 4887, dann auch die < 10000 und < 100 um die extra-Stellen vergrößere, klappt das irgendwie nicht mehr, ich hab schon etliche Kombinationen ausprobiert ... :) Hmm, gleich noch eine Anfängerfrage (an alle) hinterher: Ich habe noch einen DS18B20 hinzugefügt und lasse auch die Temperatur anzeigen. Ich hab beide Abläufe in je ein Sub gepackt und rufe diese nacheinander auf. Das hat allerdings den Nachteil, daß erst wieder gemessen wird, wenn die Temperatur ausgewertet wurde. Ist es möglich, 2 oder mehrere Subs/Programmteile gleichzeitig aufzurufen? Also zum Beispiel: Aktualisieren der Temp alle 30 sec, Messen am ADC0 alle 2 sec, am ADC1 alle 10 sec, Anzeige-Aktualisierung der Uhrzeit alle 60 sec, usw. Grund: Ich möchte noch ein paar andere Dinge hinzufügen, die alle unterschiedlich oft aufgerufen werden sollen. Ich habe leider noch keine Hinweise im Netz gefunden. Ich möchte später eine Art Menü erstellen, welches alle Programmteile gleichzeitig anzeigt, aber halt zu unterschiedlichen Zeitpunkten aktualisiert. (Ich bin mir sicher, daß dies möglich ist, da ich so etwas schon funktionieren gesehen habe :D) Danke und Grüße, Robert
Für zeitgesteuerte Sub-Aufrufe kann man die Timer gut verwenden ;o) Schau mal in der Hilfe unter Config Timer
@Jürgen: Danke :) @Marko: an Timer dachte ich auch schon, habe dann aber erst mal nur etwas von Ports gelesen und nicht weiter geforscht. Werde mich gleich mal da durchlesen :D So als Anfänger hat man's schon nicht leicht ... Hab das ganze Wochenende nur experimentiert, macht aber auch ne Menge Spaß :D Grüße, Robert
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.