- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: Runden eine Stelle nach dem Komma

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    18.08.2005
    Ort
    Steiermark
    Alter
    52
    Beiträge
    12
    Anzeige

    E-Bike
    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

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    29.11.2006
    Beiträge
    27
    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ß

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    18.08.2005
    Ort
    Steiermark
    Alter
    52
    Beiträge
    12
    Hallo,

    so funktioniert es. Getestet mit Version 1.11.8.3 im Simulator.

    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
    Gruß
    Günter

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    29.11.2006
    Beiträge
    27
    =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

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests