-         

Ergebnis 1 bis 6 von 6

Thema: Werter kleiner 0,51 addieren?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    03.02.2007
    Ort
    Bayern
    Beiträge
    85

    Werter kleiner 0,51 addieren?

    Anzeige

    Hallo allerseits,

    ich habe eine Frage/ein Problem beim programmieren in Bascom - vorweg, ich bin Anfänger

    Ich möchte mit folgendem, zugegeben sehr primitivem Code

    Code:
    $regfile = "m8def.dat"
    $crystal = 8000000
    
    Config Pind.5 = Output
    Config Pind.6 = Output
    
    Led1 Alias Portd.5
    Led2 Alias Portd.6
    
    
    Dim Laenge As Byte
    Laenge = 1
    
    
    Do
    
    Led1 = 1
    Waitms 1
    Led1 = 0
    Waitms Laenge
    
    
    Laenge = Laenge + ?
    
    If Laenge > 30 Then Laenge = 1
    
    Loop
    End
    (vorerst) eine LED aus"faden" und anschliesend wieder aufblitzen usw. lassen.

    Wenn ich nun an der Stelle des Fragezeichens eine Zahl größer als 0,5 (.5) eingebe funktioniert das ganze, nur leider zu schnell. Gebe ich allerdings eine Zahl gleich oder kleiner 0,5 ein, so passiert im Endeffekt überhaupt nichts mehr, die LED leuchtet nur noch.

    Warum ist das so? Und wie kann ich das ändern?

    MfG,
    maxxtro

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    Du kannst hier nur mit ganzen Zahlen rechnen, Werte grösser 0.5 werden deshalb zu 1, kleinere zu 0.

    Wenn Du genauere Wartezeiten haben möchtest, kannst Du es evtl. mit waitus für microsekunden probieren, die Werte aber dann entsprechend umrechnen.

    PS:
    Man kann aber nur Kostanten verwenden,
    deswegen geht das mit waitus garnicht !

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Maxxtro,

    der Befehl Waitms funktioniert nicht mit Variablen (also mit deiner Variable "Laenge"), sondern nur mit festen Werten (Konstanten).

    Gruß Dirk

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    03.02.2007
    Ort
    Bayern
    Beiträge
    85
    Ah, vielen danke für euere Antworten!

    Aber wie kann ich das Problem jetzt am geschicktesten umgehen?

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    @Dirk
    ich denke, du meintest den Befehl Waitus, der nicht mit Variablen funktioniert.
    Waitms geht, aber der dauert ihm zu lange.

    @Linux_80
    Waitus würde z.B. in einer Schleife funktionieren, nur muss man dann noch den Overhead der Schleifenbefehle bedenken.
    Do
    Waitus 100
    Incr Zaehler
    Loop Until Zaehler = Laenge

    @Maxxtro
    schau mal in der Hilfe unter Config Timer = PWM oder in der Suche nach PWM. Langsames Ausgehen kannst du über Puls-Weiten-Modulation hinbekommen. Dies geht hardware unterstützt, aber auch durch software. Bei beiden benutzt du einen Timer für die genauen, veränderlichen Schaltzeiten.

    Gruß

    Rolf

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    03.02.2007
    Ort
    Bayern
    Beiträge
    85
    So, nun gibts ein neues Problem, das eigentlich wieder das gleiche ist...
    Ich bin am Temperatur messen - mit einem NTC... usw.
    Um jetzt den Wert des ADC in eine Temperaturangabe umzuwandeln, muss der Wert des ADC in folgende Formel eingesetzt werden
    f(x) = -0,0000499459x² - 0,0272477731x + 42,7370953761
    Nur gehe ich (ohne es probiert zu haben) davon aus, dass sich so wieder nicht damit rechnen lässt, da die Parameter ja keine ganzen Zahlen mehr sind.

    Nun, gibt es eine Lösung für das Problem?

    MfG,
    Maxxtro

Berechtigungen

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