Hallo,
schau mal unter Lookup(value,label)
Gruß
Rolf
Hallo,
ich möchte jeweils 3 Werte aus einer Tabelle im Programm auslesen und in 3 Variablen schreiben.
Zum testen hab ich in jede Zeile 3 Werte geschrieben, die in 3 Variablen sollen. Per Timer soll dann in die nachste Zeile in der Tabelle gesprungen werden und wieder 3 neue Werte in die 3 Variablen geschrieben werden, so das sich die Verte zb. alle 2 sekunden ändern.
Wie hole ich nun die Werte aus der Tabelle? Position angeben?
Alles was ich gefunden habe war ein RN-Wissen Artikel, den ich aber nicht richtig verstehe.
Code:'Konfiguration µC: $regfile = "m8def.dat" 'AT-Mega8 $crystal = 3686400 'Quarz: 3.6864 MHz $baud = 9600 'Baudrate der UART: 9600 Baud '------------------------------------------------------------------------------- 'Variablen Dim Wert1 As Byte Dim Wert2 As Byte Dim Wert3 As Byte Dim Wert4 As Byte Dim Wert5 As Byte Dim Wert6 As Byte Dim Tabelle(90) As Byte '------------------------------------------------------------------------------- Tabelle: ' W1 , W2 , W3 , W4 , W5 , W6 Data 0 , 120 , 255 Data 20 , 140 , 240 Data 40 , 160 , 220 Data 60 , 180 , 200 Data 80 , 200 , 180 Data 100 , 220 , 160 Data 120 , 240 , 140 Data 140 , 255 , 120 Data 160 , 0 , 100 Data 180 , 20 , 80 Data 200 , 40 , 60 Data 220 , 60 , 40 Data 240 , 80 , 20 Data 255 , 100 , 0
...
Hallo,
schau mal unter Lookup(value,label)
Gruß
Rolf
hmmm
also bisher hab ich nur unter diesem Begriff gefunden wie ich die Werte einer Zeile nacheinander auslese.
Wie kann ich aber in Variable 1 immer den 1.Wert der jeweiligen Zeile schreiben und in Variable 2 den 2. Wert jeder Zeile usw. ?
...
Ich dachte an sowas:
Kompiliert ok, aber ist nicht getestet.Code:Dim Count As Byte 'oder word, falls nötig Dim Next_led As Byte 'oder word, falls nötig Dim Led_flag As Byte Dim W1 As Byte , W2 As Byte , W3 As Byte Dim Zeile As Byte , Position As Byte 'position evtl as word, falls die tabelle größer wird On Timer0 Timer0_isr Do If Led_flag = 1 Then Reset Led_flag Incr Zeile If Zeile = 14 Then Zeile = 0 'Annahme: wenn die 14 Zeilen durch sind geht's von vorne los Position = Zeile * 3 W1 = Lookup(position , Tabelle) 'Dies liest die Werte 0,3,6,9 .. aus der Tabelle Incr Position W2 = Lookup(position , Tabelle) 'Dies liest die Werte 1,4,7,10 .. aus der Tabelle Incr Position W3 = Lookup(position , Tabelle) 'Dies liest die Werte 2,5,8,11 .. aus der Tabelle End If Loop Timer0_isr: Incr Count If Count = Next_led Then 'dies so einstellen, dass alle 2 Sekunden das flag gesetzt wird Set Led_flag Count = 0 End If Return Tabelle: ' W1 , W2 , W3 , W4 , W5 , W6 Data 0 , 120 , 255 Data 20 , 140 , 240 Data 40 , 160 , 220 Data 60 , 180 , 200 Data 80 , 200 , 180 Data 100 , 220 , 160 Data 120 , 240 , 140 Data 140 , 255 , 120 Data 160 , 0 , 100 Data 180 , 20 , 80 Data 200 , 40 , 60 Data 220 , 60 , 40 Data 240 , 80 , 20 Data 255 , 100 , 0
Gruß
Rolf
Super es funktioniert!
vielen Dank!
Das hatte ich aus dem RN-Wissenartikel nicht so heraus gelesen. Was mir unter anderem fehlte war die durchnummerierung. Hätte gadacht das man die Zeile angibt und dann Wert 1-3 und die nächste Zeile fängt wieder bei 1 an - ist ja aber nicht so.
Wenn ich es richtig verstanden habe muss ich wohl bei 6 Werten pro Zeile
->Position = Zeile * 6
rechnen
Also noch mal vielen Dank (auch für die guten Kommentare im Code!)
Tobias
...
Lesezeichen