logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATmega8 Bascom - Jak wyświetlić PWM jako liczbę całkowitą bez miejsc po przecinku?

ziguś 27 Wrz 2013 16:34 3774 17
  • #1 12783737
    ziguś
    Poziom 23  
    Witam
    Mam problem z wyświetleniem wartości PWM w %. Użyłem instrukcji fusing ale ona wyświetla mi wartość w ten sposób XX.X %.

    ATmega8 Bascom - Jak wyświetlić PWM jako liczbę całkowitą bez miejsc po przecinku?

    Jak to zrobić żeby wyświetliła XX % czyli jako liczbę całkowitą, bez kropki i miejsca po przecinku

    W załączniku plik.bas

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #2 12783887
    yokoon
    Poziom 29  
    W miejsce instrukcji Fusing użyj Format.
  • #3 12783893
    ziguś
    Poziom 23  
    Chyba jednak nie ta instrukcja. Dzięki formatowi mogę uzyskać to że nie będzie przesuwało napisu

    Cool1 = Cool * 0.1953125
    Cool2 = Fusing(cool1 , "#.#")
    Cool2 = Format(cool2 , " ")
  • #4 12783929
    tronics
    Poziom 38  
    @ziguś - masz zmienną float (dobra, single, ważne że zmiennoprzecinkowa). Fusing jedynie określa ile ma mieć miejsc po przecinku. Chcesz nie mieć ich wcale to musisz przepisać wartość zmiennoprzecinkową do stałoliczbowej jak pokazano w language fundamentals:
    http://avrhelp.mcselec.com/index.html?language_fundamentals.htm
    Na samym końcu ;)
  • #6 12783944
    ziguś
    Poziom 23  
    jak zmienną cool2 dam na byte to kompilator wywala błąd i drze się o stringi :D
  • #8 12783998
    ziguś
    Poziom 23  
    deksta84 napisał:
    A po co formatujesz Byte? Ustawiasz wyświetlanie, przy pomocy komendy locate x,y.

    cool2=cool1

    sic

    czy chodziło o to ?

    Cool1 = Cool * 0.1953125
    Cool2 = Fusing(cool1 , "#.#")
    Cool2 = Format(cool2 , " ")

    Cls
    Upperline
    Lcd "Obroty " ; Cool ; " PWM"
    Lowerline
    Lcd "Obroty " ; Cool2 ;
    Locate 2 , 11
    Lcd " %"
  • #10 12784047
    ziguś
    Poziom 23  
    tronics napisał:
    Byte nie trzeba formatować wcale. Masz np. dim pwm_percentage as byte (...) pwm_percentage=cool1 (...) lcd str(pwm_percentage) gdzie (...) oznaczyłem pominięte fragmenty kodu.


    mam problem żeby cię zrozumieć

    to jest dopiero mój drugi program

    a tak jak proponuje deksta84, żeby komendą locate "przykryć" kropke i miejsce dziesiętne ... no niby tak ale ta kropka i cyfra po niej zdążają mrugnąć ( bynajmniej w symulatorze nie wiem jak będzie w realu - muszę to złożyć na płytce stykowej)
  • #12 12784080
    ziguś
    Poziom 23  
    niestety przy wpisie cool2 = cool1 wyskakuje błąd " brak zgodności zmiennych "
    cholera niby prosta rzecz a tyle problemu.
  • Pomocny post
    #15 12784163
    yokoon
    Poziom 29  
    ziguś napisał:
    Chyba jednak nie ta instrukcja. Dzięki formatowi mogę uzyskać to że nie będzie przesuwało napisu

    Cool1 = Cool * 0.1953125
    Cool2 = Fusing(cool1 , "#.#")
    Cool2 = Format(cool2 , " ")


    Tak masz rację, na symulatorze nie działa.

    Przy aliasach chyba jest błąd, dwa razy przypisy do tych samych pinów.

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #16 12784205
    ziguś
    Poziom 23  
    Dziekuję koledze tronics za rozwiązanie problemu a także koledze yokoon za wykrycie błędów w aliasach. Oczywiście kliknąłem "pomógł" :D :angel:
  • #17 12850933
    WOBI
    Poziom 19  
    Prościej jest użyć takiego obliczenia, zajmuje mało pamieci po kompilacji, ja używam w swoim programie takiego podprogramu (używam 10bitowego PWM)

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #18 13201714
    ziguś
    Poziom 23  
    Też dobre rozwiązanie.
REKLAMA