Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Zapalanie diod - Pomoc przy kodzie bascom

paluch_gda 21 Maj 2012 12:40 1393 3
  • #1 21 Maj 2012 12:40
    paluch_gda
    Poziom 16  

    Potrzebuję pomocy przy pewnym kodzie.
    1. Chcę dopisać obsługę trzeciego przycisku do zapalania wszystkich diod (wciskam - zapala się, wciskam - gaśnie) ale z zachowaniem pozostałej części programu. Cały program zmodyfikowałem nieco na podstawie kodu jaki znalazłem na forum. Teraz jest tak, że po sprawdzeniu Pinc.2 jeżeli jest 1 to nie wykonuje mi zapalania diod po kolei tylko zapala jedną.

    2. Czy jest jakiś sposób aby zamienić waitms na inną funkcję nie blokującą programu ale z zachowaniem ADC z potencjometru? Jeżeli jest to poprosiłbym o wskazówkę.

    3. I na koniec ... jak do "Zapalkolejno" dodać płynne zapalanie diod. Wiem jak działa pwm ale gdzie to podpiąć to już nie.

    Kod: bascom
    Zaloguj się, aby zobaczyć kod
    [/code]

    0 3
  • #2 22 Maj 2012 21:29
    SylwekK
    Poziom 29  

    Znajomy kod :)
    Ad.1 Zrób po prostu podprogram, do którego się wskoczy po wciśnięciu przycisku gdzie wszystkie porty ustawiane są przez SET a gaszone przez RESET. To czy ma zgasić czy zapalić ustal w dodatkowej zmiennej bitowej "togglowanej" wspomnianym przyciskiem.

    Ad.2 Oczywiście - timer programowy...

    Ad.3 A czy przypadkiem w oryginalnym programie to się kolejno nie zapalało ;) ?

    0
  • #3 22 Maj 2012 23:54
    paluch_gda
    Poziom 16  

    Kod znajomy, prawda :)

    ad.1. zrobiłem bez podprogramu ale i tak nie do końca działa jak chcę. Jak zrobiłem podprogram to sypało mi się przy Do bo program wracał do jednej nadrzędnej pętli i się zapętlał. Chciałbym to zrobić jakoś poprawnie składniowo.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    ad.2. Zabrałem się za timery. Ogólnie działają ale nie wiem jak je podpiąć do głównego programu

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Ad.3. Oczywiście że się zapalało. Jedyna modyfikacja jakiej dokonałem, to zapalanie i gaszenie w tym samym kierunku. Ale chodzi o to by do tego zapalania dołożyć pwm do płynnego zapalania i gaszenia.

    [/syntax]

    0
  • #4 23 Maj 2012 08:36
    SylwekK
    Poziom 29  

    Ad.1 Coś w tym stylu robiłeś ?

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Ad.2 Przeglądnij program w tym temacie i będziesz już bardzo dużo wiedział o timerach programowych:
    https://www.elektroda.pl/rtvforum/viewtopic.php?t=2232417&highlight=

    Ad.3 To PWM umkło mojej uwadze jakoś :D
    Sprzętowych wyjść PWM jest za mało w uC. Dla wielu LED'ów najlepiej zrobić PWM programowy o ograniczonej ilości poziomów (jeśli ich praca ma być niezależna) - przy dobrych układach powinno się bez problemu przekroczyć 10szt. Natomiast jeśli kolejno się mają zapalać a PWM potrzebny jest tylko do rozjaśniania to wystarczy zrobić jeden programowy "biegnący", który będzie przypisywany do konkretnego aktualnie potrzebnego portu. Po płynnym zapaleniu/wygaszeniu diody LED na porcie pozostaje ostatni stan, a programowy PWM zajmuje się kolejnym portem. W tym przypadku to można oblecieć wszystkie porty nawet dużego procka.

    0