Zitat Zitat von gpo
Hallo,

sagt mir mal wenigsten einer was ich falsch mach?
ja, Du postest nicht den ganzen Code, keiner weis was Du wie Dimensioniert hast, usw. 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...

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
Gruß