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

BASCOM - Układ czasowy. Pomoc w pisaniu programu.

MrDoimer 18 Mar 2014 20:20 2508 27
REKLAMA
  • #1 13418555
    MrDoimer
    Poziom 38  
    Witam,

    Wczoraj otrzymałem paczkę z Atmegą8 i programatorem itd.

    Układy typu "migajace diody" itp. wykonałem.

    Chciałbym a raczej potrzebuje układ który bedzie sterował wentylatorem.
    Program chciałbym napisać w BASCOM-ie bo tego języka się ucze.
    Ma to działać na zasadzie :
    1.Włączenie zasilania
    2. uC czeka na polecenie
    - Wciskam "Button1" - napięcie podawane jest na wyjście pinu przez 10 minut.
    - Jeżeli kliknę "Button1" w czasie kiedy wentylator się kręci (pin ma stan wysoki) to wentylator się wyłącza.
    - Jeżeli wentylator jest wyłączony, klikam szybko 2 razy "Button1" - napięcie podawane jest przez 20 min.

    Teraz wytłumaczę w słowach :D
    Wentylator zamontowany w łazience, więc uC będzie 24/7 działał.
    Wchodze do łazienki klikam 1 raz przycisk. Wentylator włącza się (na czas 10 min., potem wyłącza się). Po 2,4 albo 6 minutach klikam jeden raz przycisk (ten sam) - wentylator się wyłącza.
    Kiedy wentylator jest wyłączony, klikam szybko 2 razy przycisk, wtedy wentylator załącza się na 20 min.

    Wiem że układy czasowe w uC są nie dokładne ale mi nie potrzebna dokładoność co do 1 sek :). Jeżeli zamiast 10 min będzie 9 albo 11 to się nic nie stanie.

    Z racji tego że ledwo zaczynam to taki zarys programu.
    Bardzo prosiłbym o pomoc w napisaniu kodu, potem przeanalizuje kod co pomoże mi zrozumieć ten język.

    Kod: text
    Zaloguj się, aby zobaczyć kod

    Tylko tyle umiem :)
    Jeżeli komuś nie chciałoby się mi pomagać to chociaż prosiłbym o wskazówkę jak zrealizować :
    Cytat:
    - Wciskam "Button1" - napięcie podawane jest na wyjście pinu przez 10 minut.
    - Jeżeli kliknę "Button1" w czasie kiedy wentylator się kręci (pin ma stan wysoki) to wentylator się wyłącza.
  • REKLAMA
  • #2 13423642
    seba_x
    Poziom 31  
    Na początek poczytaj o DEBOUNCE .
  • REKLAMA
  • #3 13427918
    SylwekK
    Poziom 32  
    Program jest banalny. Warunkiem prawidłowej realizacji zadania jest użycie timerów (najlepiej i najwygodniej programowych). Wiąże się to z poznaniem przerwań, które po prostu musisz poznać wcześniej czy później. Podejrzewam że nikt tu za Ciebie programu nie napisze, ale jak już coś stworzysz to pomożemy iść dalej :) Aha, na "Wait" nic tu nie zrobisz.
    W tym temacie podałem źródło w bascomie. Zapoznaj się z nim, a trochę Ci się rozjaśnią przerwania, przyciski, itd...
  • #4 13432366
    kaka0204
    Poziom 28  
    Taka mała poprawka

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Układ nie będzie czekał 62 sekundy a 6 sekund i 2 dziesiąte sekundy. Poza tym tak jak koledzy wyżej napisali, na wait tego nie zrobisz.
    Pozdrawiam.
  • REKLAMA
  • #5 13432504
    landy13
    Poziom 31  
    kaka0204 napisał:
    Układ nie będzie czekał 62 sekundy a 6 sekund i 2 dziesiąte sekundy.
    Czy aby na pewno? Policz jeszcze raz.
  • #6 13432921
    kaka0204
    Poziom 28  
    landy13 napisał:
    kaka0204 napisał:
    Układ nie będzie czekał 62 sekundy a 6 sekund i 2 dziesiąte sekundy.
    Czy aby na pewno? Policz jeszcze raz.


    Faktycznie mój błąd. Przepraszam za zamieszanie. 62 sekundy to prawidłowy wynik.
  • #7 13435100
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #8 15379071
    MrDoimer
    Poziom 38  
    Witam,

    Potrzebuje zrobić następujący układ działający w taki sposób :
    1.Włączenie zasilania 
    2. uC czeka na polecenie 
    - Wciskam "Button1" - napięcie podawane jest na wyjście pinu przez 10 minut. 
    - Jeżeli kliknę "Button1" w czasie kiedy wentylator się kręci (pin ma stan wysoki) to wentylator się wyłącza. 
    - Jeżeli wentylator jest wyłączony, klikam szybko 2 razy "Button1" - napięcie podawane jest przez 20 min. 

    Prosiłbym o podanie chociażby podobnych programów tak abym mógł je przerobić ponieważ bardzo mało umiem w BASCOM, a bardzo potrzebuje zrobić taki układ. Pozdrawiam

    Moderowany przez dondu:

    Temat połączyłem z poprzednim

  • #9 15379084
    ryszard1955
    Poziom 20  
    Zeby napisac program, musisz wiedziec jaki procesor chcesz uzyc.
  • #10 15379224
    MrDoimer
    Poziom 38  
    Atmega8a nie dopisałem.
  • #11 15379582
    BlueDraco
    Specjalista - Mikrokontrolery
    Zacznij od przerwania timera - w nim sprawdzaj stan przycisku, odliczaj czas, włączaj i wyłączaj odbiornik.
  • #12 15379587
    Konto nie istnieje
    Konto nie istnieje  
  • #14 15379796
    DJ ANNUS
    Poziom 31  
    Możesz to zrobić na funkcji Wait ale musisz inkrementować jakąś zmienną a w między czasie sprawdzać przyciski .
  • #15 15380891
    MrDoimer
    Poziom 38  
    @niveasoft czyli tam gdzie "Portc.5" podłączam plus od wentylatora zgadza się?
    Ogólnie wielkie dzięki za kod jutro przetestuje czy działa

    Dodano po 16 [minuty]:

    Wyrzuca mi takie błędy ;/
    BASCOM - Układ czasowy. Pomoc w pisaniu programu.
  • Pomocny post
    #16 15381603
    Konto nie istnieje
    Konto nie istnieje  
  • #17 15384865
    MrDoimer
    Poziom 38  
    Właśnie problem w tym, że wrzucam program beż żadnych zmian i wyskakują mi błędy dot. linijek :
    Call Konfiguruj_timer(odliczaj_1min) 


    I jeszcze do linkiji "Return" :/
    Błędy o takie :
    BASCOM - Układ czasowy. Pomoc w pisaniu programu.
  • Pomocny post
    #18 15385837
    Konto nie istnieje
    Konto nie istnieje  
  • #19 15386240
    MrDoimer
    Poziom 38  
    Ok po pobraniu innej wersji BASCOM`a wszystko skompilowało się i wgrało.
    Teraz problem z działaniem :/

    Zmieniłem tylko na :
    
     Pin_wyjsciowy Alias Portb.0
     Przycisk Alias Pind.1 : Set Portd.1


    Efekt jest taki, że na pinie PD1 jest napięcie 5V, ale ma za małe natężenie żeby zasilić diodę LED, a na PB0 żadnego napięcia i żadnej reakcji po zwieraniu przycisku do masy/VCC.
  • #20 15386596
    Konto nie istnieje
    Konto nie istnieje  
  • #21 15400014
    MrDoimer
    Poziom 38  
    Problemem muszą być zakłócenia.
    Zasilanie wyprówane w dwóch wersjach i dwóch sztukach Atmegi :
    1. Bezpośrednio z gniazda USB w ładowarce sieciowej
    2. Zasilacz od routera 9V do stabilizatora
    Oczywiście wszystkie kondensatory itp. itd. założone.
    Jak wgram program który pod 1 przyciskiem gasi diodę, a 2 zapala to rekacja jest taka, że dioda świeci od początku. Potem wystarczy, że zbliżę lub dotkę do pinu przycisku 2 i gaśnie. Tak samo jest z zapalaniem - bezprzewodowo :D
    Co może być problemem?

    Twój program reakcję ma taką, że dioda świeci od razu po podaniu zasilania.
  • #22 15400038
    Konto nie istnieje
    Konto nie istnieje  
  • #23 15400320
    MrDoimer
    Poziom 38  
    BASCOM - Układ czasowy. Pomoc w pisaniu programu.

    Dokładnie o tak (bez złącza KANDA) kilkukrotnie podłączałem od nowa. Wszystko robione na płytce stykowej.

    Problem występuje również przy zasilaniu z akumulatora 4.2V :/

    Fuse bity:
    BASCOM - Układ czasowy. Pomoc w pisaniu programu.
  • #24 15402121
    Konto nie istnieje
    Konto nie istnieje  
  • #25 15402393
    MrDoimer
    Poziom 38  
    niveasoft napisał:

    Dioda powinna świecić tylko kiedy naciśniesz przycisk.

    Podłączyłem tak jak na schemacie - dioda świeci tylko kiedy naciskam przycisk tj. wszystko działa.

    Jak wgram taki program to efekt taki sam jak opisywałem w poście wyżej.
    Kod: text
    Zaloguj się, aby zobaczyć kod
    [/code]
  • #26 15402401
    Konto nie istnieje
    Konto nie istnieje  
  • #27 15403094
    MrDoimer
    Poziom 38  
    niveasoft napisał:
    poważne braki w zrozumieniu działania mikrokontrolerów

    Masz na myśli sam kod?
    Wziąłem go z poradnika z forum forbot.

    Popróbuje jeszcze.
  • #28 15403690
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA