Hallo,
nach dem Restore Value_table musst du erst einmal die Werte in das X-Array einlesen. Am einfachsten in einer Schleife:
Dim I As Byte
...
Restore Value_table
For I = 1 to 10
Read X(I)
Next I
Hallo,
nach langer Bascom-Pause hab ich mal wieder ein bisschen Zeit zum Programmieren gefunden. Bin im Prinzip noch Anfänger. Nun hab ich ein Problem bei der Ausgabe des ADC-Wertes auf ein 7-Segment-Display.
Es ist einfach nur ein Verständisproblem. Ich hab mich schon Ausgibig mit dem ADC Beschäftig aber ich komm einfach nicht auf die Lösung...
Ich hab ein Potentiometer (10K) und möchte für den Anfang einfach nur die gemessene Spannung des ADC als einfache Zahlen von 1-9 auf die Anzeige bringen (mein Gedanke - jedem der Zahlen einen Wertebereich zuordnen...Bsp. 1023/10, also für 0=0-102; 1=103-204 usw.).
Nun weiss ich überhaupt nicht, wie ich das in Bascom umsetzen soll.
Mein Versuch bei dem immer nur "8" angezeigt wird und beim drehen nichts passiert:
Code:$regfile = "M8def.dat" $crystal = 1000000 Config Portd = Output Portd = 255 Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Dim Messung As Byte Dim I As Byte Dim X(10) As Byte Restore Value_table Do Messung = Getadc(0) If Messung < 100 Then Portb = X(1) Messung = Getadc(0) If Messung > 100 Then Portb = X(2) End If End If Loop End Value_table: ' 0 1 2 3 4 5 6 7 8 9 Data &H3F , &H6 , &H05B , &H04F , &H066 , &H06D , &H07D , &H7 , &H7F , &H6F
Hallo,
nach dem Restore Value_table musst du erst einmal die Werte in das X-Array einlesen. Am einfachsten in einer Schleife:
Dim I As Byte
...
Restore Value_table
For I = 1 to 10
Read X(I)
Next I
Hat leider nichts gebracht. Hatte vorher ein programm laufen wo die Ziffern von 0 bis 9 durchlaufen. Das hat super funktioniert also ist die Verdrahtung schonmal richtig.
Ist das denn richtig, dass du PortD als Output konfiguriert hast, aber PortB setzt?
Oh man. Natürlich. Vielleicht sollte ich erstmal ne Pause machen. Jetzt wechseln beim drehen schonmal die 2 zahlen... Super. Aber wie stell ich es nun an, das ich alle 10 zahlen "durchdrehe"? Ich hab es schon mit 10 "if-then" versucht aber da spinnt die Anzeige total.
Ich würde es ohne den ganzen If..Then Schnickschnack so machen:
Messung = Getadc(0) / 103 'dann kommen nur Zahlen von 0-9 raus
PortD = X(Messung + 1)
Super!! Jetzt klappt es... aber nur teilweise. Wenn ich mit "103" Teile wird komischerweise nur von null bis zwei angezeigt und das in einem spannngsbereich von ca. 1.2V, dann geht es wieder bei null los bis ich dann bei 5V hochgedreht habe. Hab mal ein bisschen mit dem Teiler rumprobiert- wenn ich z.B. 50 eingebe wird von null bis neun angezeigt aber der durchlauf erfolgt immer in 1.2V Abständen. So wie ich das jetzt verstanden habe wird doch eigentlich 1023/103 gerechnet, und somit hätte man 10 "Schritte" auf 5V???
Klingt, als hättest du Messung als Byte deklariert.Zitat von Malte0815
Bin mal wieder beeindruckt wie schnell man den Fehler anhand einer ungefähren Fehlerbeschreibung finden kann. Klasse! Kann es leider erst morgen testen.
Die Schaltung und die Programmierung hauen jetzt super hin. Vielen Dank erstmal für die Hilfe. Wiedermal jede Menge gelernt. Ich werd mich jetzt erstmal ans Muliplexen mit zwei Stellen und einer Kommastelle wagen...bis ich irgendwann mein Thermometer hinbekommen habe.
Lesezeichen