-         

Ergebnis 1 bis 10 von 10

Thema: Bascom-variable wird nicht richtig ausgegeben

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523

    Bascom-variable wird nicht richtig ausgegeben

    Anzeige

    Hallo,
    habe in Bascom folgendes programm:

    Code:
    $regfile = "m8def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 1000000
    
    
    Config Lcd = 16 * 1
    Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
    Config Lcdbus = 4
    
    Config Adc = Single , Prescaler = Auto
    Start Adc
    Dim W As Word
    Dim A As Single
    Dim B As Single
    Dim C As Single
    Dim D As Single
    Dim E As Single
    
    Do
       W = Getadc(1)
       A = 5 / 1024
       C = W * A
       D = C * 100
       D = Round(d)
       E = D / 100
       B = E
       Cursor Off
       Cls
       Locate 1 , 1
       Lcd B ; " V"
       Wait 1
    Loop
    
    End
    C sollte eigentlich 1,6 V ergeben.

    Leider gibt das Display immer nur 1,615559 aus. Kein Volt-zeichen oder sonst was. Nur wenn ich z.b. schreibe A=10/1024, dann gibt er was anderes aus, aber sonst nicht.

    mfg

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Schau dir mal die Fusing() Funktion zur formatierten Ausgabe von Singles an.

    Gruß

    Rolf

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Hallo,
    hab noch ein kleines problem. Ich hab einen Taster der active high geschaltet ist, leider schaffe ich es nicht in bascom, den Wert zu ändern, also er ist entweder immer 1 oder 0, je nachdem wie ich ihn setze. Kann mir jemand schnell sagen, wie ich was setzten muss, bin am verzweifeln.

    mfg

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Interne Widerstände sind ,wenn eingeschaltet nach Plus.

    Also musst Du den Schalter gegen GND schalten lassen.

    Wie man die Pullup's einschaltet , ich habe jetzt keine Lust , drum benutze oben SUCHEN.

    Gento

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    51
    Beiträge
    117
    Bei 16x1 Displays ist es oft so das man nur die ersten 8 Zeichen mit Locate 1,1 bis 1,8 anzeigen kann.Benutze mal Locate 2,1 wie bei einem 2 zeiligem Display.Oder Definiere es mal als ein 16x2 Display.

    Mike

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Hallo,
    das mit der ausgabe am lcd funktioniert jetzt, aber das mit dem taster nicht. Ich habe ihn jetzt auf active low, also wenn taster geschlossen, dann zieht er den port auf gnd, umgelötet. Aber es geht immer noch nicht.

    Code:
    $regfile = "m8def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 1000000
    
    
    Config Lcd = 16 * 1
    Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
    Config Lcdbus = 4
    
    Config Pinb.1 = Input
    Portb.1 = 1
    
    Do
       If Portb.1 = 1 Then
          Cls
          Lcd "1"
          Wait 1
       Else
          Cls
          Lcd "0"
       End If
       Wait 1
    Loop
    
    End
    mfg

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Wichtiger als die Richtung, in die der Taster schaltet, ist es, ihn mit
    Pinb.1 im Programm anzusprechen. Also
    If Pinb.1 = 1 Then

    Gruß

    Rolf

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Hallo,
    bei dem einfachen Programm funkts jetzt, wenn ich es aber in mein Hauptprogramm einbaue, wird nur Piep() ausgeführt. Langasam bin ich am verzweifeln.

    Code:
    $regfile = "m8def.dat"
    $framesize = 60
    $swstack = 60
    $hwstack = 60
    $crystal = 1000000
    
    
    Config Lcd = 16 * 1
    Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
    Config Lcdbus = 4
    
    Config Adc = Single , Prescaler = Auto
    Start Adc
    Dim W As Integer
    Dim A As Single
    Dim B As Single
    Dim C As Single
    Dim D As Single
    Dim E As Single
    Config Portc.5 = Output
    Config Portc.4 = Output
    Config Portc.3 = Output
    Config Portb.2 = Output
    Config Pinb.1 = Input
    Portb.1 = 1
    Declare Sub Piep()
    Declare Sub Spannung()
    
    
    Sub Piep()
       Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Up , Prescale = 1
       Pwm1b = 180
       Wait 1
       Pwm1b = 0
       Wait 1
    End Sub
    
    Sub Spannung()
       A = 5 / 1024
       C = W * A
       D = C * 100
       E = Round(d)
       E = E / 100
       B = E * 3
       Cursor Off
       Cls
       Locate 1 , 1
       Lcd Fusing(b , "#.##") ; "V"                             'Spannung
       Wait 1
    End Sub
    
    
    Do
       W = Getadc(1)
       If 390 < W Then
          Portc.3 = 1                                           'Grün
       End If
       If 340 < W And W < 390 Then
          Portc.4 = 1                                           'Gelb
       End If
       If W < 340 Then
          Portc.5 = 1                                           'Rot
       End If
       If Pinb.1 = 1 Then
          Call Piep
       Else
          Call Spannung
       End If
    Loop
    
    End
    mfg

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    die richtige Reihenfolge ist:
    Configs, Dims, Declares
    Befehle vor der Hauptschleife (z.B. Portb.1=1
    Do...Loop
    END
    Subs

    Gruß

    Rolf

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Hallo,

    perfekt!

    mfg

Berechtigungen

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