Hallo,
ja, Du postest nicht den ganzen Code, keiner weis was Du wie Dimensioniert hast, usw.sagt mir mal wenigsten einer was ich falsch mach?So kann halt keiner vernünftig helfen.
Gruß
Günter
Hallo,
ja, Du postest nicht den ganzen Code, keiner weis was Du wie Dimensioniert hast, usw.sagt mir mal wenigsten einer was ich falsch mach?So kann halt keiner vernünftig helfen.
Gruß
Günter
ÄHM, ich hab doch oben geschrieben, dass das wieder nur ein teilausschnittist :-/ alles klar, dann nochmal den code für dich...Zitat von gpo
GrußCode:'Winkelmessung mit dem Sensor MLX 90316 und Ausgabe der Gradanzeige 'über den Controler RN-MiniControl von Robotikhardware auf das Display 'Wintek 27 * 4 von Pollin '>>>Besondere Lernleistung von Felix König<<< $regfile = "m168def.dat" 'Controller definieren $crystal = 16000000 'Quarzfrequenz $baud = 9600 'Übertragungsrate in Baud $hwstack = 32 $framesize = 32 $swstack = 32 'Die üblichen Definitionen bei Standardprogrammen auf Miniboard 'Hier kommt die Ausgabe auf das Display Config Lcd = 40 * 4 'Bascom kennt keine Displays mit 27 * 4 Zeichen, 'daher 40 * 4 verwenden Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.0 , Db6 = Portd.7 , Db7 = Portd.6 , E = Portb.3 , E2 = Portc.3 , Rs = Portd.3 'man achte auf die Ergänzung E2 für den 2. Steuerkontroller des Displays Dim ___lcdno As Byte 'Systemvariable der LCD-Bibliothek ___lcdno = 0 'wählt den ersten Chip aus Initlcd 'die beiden oberen Zeilen initialisieren Cls 'die beiden oberen Zeilen löschen ___lcdno = 1 'auf Chip 2 schalten Initlcd 'die beiden unteren Zeilen initialisieren Cls 'die beiden unteren Zeilen löschen ___lcdno = 0 'wählt die obere Zeile aus Locate 1 , 1 'schreibt in die erste Zeile an Position 1 Lcd " Besondere Lernleistung "; 'den Text in Anführungszeichen Locate 2 , 1 'schreibt in die zweite Zeile an Position 1 Lcd " von Felix Koenig 13 BGD" 'den Text in Anführungszeichen Cursor Off 'unterdrückt den Cursor ___lcdno = 1 'wählt die beiden unteren Zeilen aus Locate 1 , 1 'Wiederholt die Displayausgabe auf den unteren Lcd "Windrichtung : "; '2 Zeilen Locate 2 , 1 Lcd "Grad : " Cursor Off 'unterdrückt den Cursor 'Hier kommt die Sensorwerterfassung Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Konfiguriert den AD Wandler Start Adc 'Startet den AD Wandler Config Pinc.2 = Input 'ADC 2 an Ctrl Dim Sensor As Long 'Deklariert "Sensor" als Long mit 4 Byte Zeichenvorrat Dim Grad As Single 'Deklariert die Gradvariable "Grad" als Single Dim A As Single Dim B As Single Do ' Beginnt die Abfrageschleife zur Werteerfassung Sensor = 0 'Initialisiert die Variablen Sensor, Grad, Grad2 Grad = 0 Sensor = Getadc(2) 'Der AD Wert wird am Pin C2 abgelesen und in die Variable "Sensor" geschrieben Grad = Sensor - 50 ' ((-50+Sensor)*360)/922 Grad = Grad * 360 Grad = Grad / 922 'Ergebnis als Gradwert mit Kommastellen Grad = Grad * 100 A = Int(grad) 'Grad = Grad / 10 'Grad = Round(grad) B = A / 100 'G = Fusing(grad , "#.#") Print "Grad: " ; B 'Print "Grad2: " ; G 'Hierhin kommt die Anzeige der Ausgesprochenen Windrichtung (NOSW) Select Case B ___lcdno = 1 Case Is > 337.5 : Print "Nord" ; Locate 1 , 16 Lcd "Nord" Case 292.5 To 337.4 : Print "Nord/West" ; Locate 1 , 16 Lcd "Nord/West" Case 247.5 To 292.4 : Print "West" ; Locate 1 , 16 Lcd "West" Case 202.5 To 247.4 : Print "Sued/West" ; Locate 1 , 16 Lcd "Sued/West" Case 157.5 To 202.4 : Print "Sued" ; Locate 1 , 16 Lcd "Sued" Case 112.5 To 157.4 : Print "Sued/Ost" ; Locate 1 , 16 Lcd "Sued/Ost" Case 67.5 To 112.4 : Print "Ost" ; Locate 1 , 16 Lcd "Ost" Case 22.5 To 67.4 : Print "Nord/Ost" ; Locate 1 , 16 Lcd "Nord/Ost" Case Is < 22.4 : Print "Nord" ; Locate 1 , 16 Lcd "Nord" Case Else : Print "Error" ; Locate 1 , 16 Lcd "Error" End Select Print " " ___lcdno = 1 'wählt die unteren 2 Zeilen aus Locate 2 , 8 Lcd B ; "^" Waitms 500 '500 ms Wartezeit zwischen der Abfragewiederholung ___lcdno = 1 'Löschen der vorherig angezeigten Werte auf dem Display Locate 1 , 16 Lcd " " Locate 2 , 8 Lcd " " Loop 'Ende der Ausführungsschleife 'und Sprung zum Anfang der Schleife End 'Programmende
Hallo,
so funktioniert es. Getestet mit Version 1.11.8.3 im Simulator.
GrußCode:'Winkelmessung mit dem Sensor MLX 90316 und Ausgabe der Gradanzeige 'über den Controler RN-MiniControl von Robotikhardware auf das Display 'Wintek 27 * 4 von Pollin '>>>Besondere Lernleistung von Felix König<<< $regfile = "m168def.dat" 'Controller definieren $crystal = 16000000 'Quarzfrequenz $baud = 9600 'Übertragungsrate in Baud $hwstack = 32 $framesize = 32 $swstack = 32 'Die üblichen Definitionen bei Standardprogrammen auf Miniboard 'Hier kommt die Ausgabe auf das Display Config Lcd = 40 * 4 'Bascom kennt keine Displays mit 27 * 4 Zeichen, 'daher 40 * 4 verwenden Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.0 , Db6 = Portd.7 , Db7 = Portd.6 , E = Portb.3 , E2 = Portc.3 , Rs = Portd.3 'man achte auf die Ergänzung E2 für den 2. Steuerkontroller des Displays Dim ___lcdno As Byte 'Systemvariable der LCD-Bibliothek ___lcdno = 0 'wählt den ersten Chip aus Initlcd 'die beiden oberen Zeilen initialisieren Cls 'die beiden oberen Zeilen löschen ___lcdno = 1 'auf Chip 2 schalten Initlcd 'die beiden unteren Zeilen initialisieren Cls 'die beiden unteren Zeilen löschen ___lcdno = 0 'wählt die obere Zeile aus Locate 1 , 1 'schreibt in die erste Zeile an Position 1 Lcd " Besondere Lernleistung "; 'den Text in Anführungszeichen Locate 2 , 1 'schreibt in die zweite Zeile an Position 1 Lcd " von Felix Koenig 13 BGD" 'den Text in Anführungszeichen Cursor Off 'unterdrückt den Cursor ___lcdno = 1 'wählt die beiden unteren Zeilen aus Locate 1 , 1 'Wiederholt die Displayausgabe auf den unteren Lcd "Windrichtung : "; '2 Zeilen Locate 2 , 1 Lcd "Grad : " Cursor Off 'unterdrückt den Cursor 'Hier kommt die Sensorwerterfassung Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Konfiguriert den AD Wandler Start Adc 'Startet den AD Wandler Config Pinc.2 = Input 'ADC 2 an Ctrl Dim Sensor As Long 'Deklariert "Sensor" als Long mit 4 Byte Zeichenvorrat Dim Grad As Single 'Deklariert die Gradvariable "Grad" als Single Dim Grad_mit_einer_kommastelle As String * 5 Do ' Beginnt die Abfrageschleife zur Werteerfassung Sensor = 0 'Initialisiert die Variablen Sensor, Grad, Grad2 Grad = 0 Sensor = Getadc(2) 'Der AD Wert wird am Pin C2 abgelesen und in die Variable "Sensor" geschrieben Grad = Sensor - 50 ' ((-50+Sensor)*360)/922 Grad = Grad * 360 Grad = Grad / 922 'Ergebnis als Gradwert mit Kommastellen Grad_mit_einer_kommastelle = Fusing(grad , "#.#") Print "Grad: " ; Grad_mit_einer_kommastelle 'Hierhin kommt die Anzeige der Ausgesprochenen Windrichtung (NOSW) Select Case Grad ___lcdno = 1 Case Is > 337.5 : Print "Nord" ; Locate 1 , 16 Lcd "Nord" Case 292.5 To 337.4 : Print "Nord/West" ; Locate 1 , 16 Lcd "Nord/West" Case 247.5 To 292.4 : Print "West" ; Locate 1 , 16 Lcd "West" Case 202.5 To 247.4 : Print "Sued/West" ; Locate 1 , 16 Lcd "Sued/West" Case 157.5 To 202.4 : Print "Sued" ; Locate 1 , 16 Lcd "Sued" Case 112.5 To 157.4 : Print "Sued/Ost" ; Locate 1 , 16 Lcd "Sued/Ost" Case 67.5 To 112.4 : Print "Ost" ; Locate 1 , 16 Lcd "Ost" Case 22.5 To 67.4 : Print "Nord/Ost" ; Locate 1 , 16 Lcd "Nord/Ost" Case Is < 22.4 : Print "Nord" ; Locate 1 , 16 Lcd "Nord" Case Else : Print "Error" ; Locate 1 , 16 Lcd "Error" End Select Print " " ___lcdno = 1 'wählt die unteren 2 Zeilen aus Locate 2 , 8 Lcd Grad_mit_einer_kommastelle ; "^" Waitms 500 '500 ms Wartezeit zwischen der Abfragewiederholung ___lcdno = 1 'Löschen der vorherig angezeigten Werte auf dem Display Locate 1 , 16 Lcd " " Locate 2 , 8 Lcd " " Loop 'Ende der Ausführungsschleife 'und Sprung zum Anfang der Schleife End 'Programmende
Günter
=D> =D> =D>
Vielen Vielen Dank
Also ich werde mir in Zukunft angewöhnen immer den kompletten Code hier reinzustellen, damit man mir gleich besser helfen kann
Also deine Lösung hatte ich als Ansatz zwar schonmal, aber ich wollte dann immer mit der Variablen "Grad_mit_einer_Kommastelle" in die Caseuntersuchung rein und das Wollte er nicht, da ja ein string nur ne Zeichenfolge ist und keine Zahl. Deswegen wollte ich das mit allenmöglichen anderen Funktionen versuchen, das wieder möglich zu machen, hat aber nie Funktioniert.
Dass man das natürlich nicht braucht, sondern gleich mit den ungerunderten Werten in die Fallunterscheidung rein gehen sollte, dadran hab ich nicht mehr gedacht.
Vielen Dank nocheinmal für deine Lösung!
\/
Gruß Felix
Lesezeichen