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

ATMEGA32 BASCOM – kod przełącznika bistabilnego na przekaźnik (portd.2, portd.4)

august_a 29 Lis 2004 22:08 1110 4
REKLAMA
  • #1 1023418
    august_a
    Poziom 21  
    Posty: 572
    Pomógł: 32
    Ocena: 4
    Witam,
    Mam pewne pytanie...
    Chcę zrobić przełącznik który będzie załączał przekaźnik w ten sposób:
    - pierwsze naciśnięcie np portd.2 wprowadza na portd.4 stan wysoki i załącza przekaźnik
    - drugie naciśnięcie portd.2 wprowadza na portd.4 stan niski i wyłącza przekaźnik

    Czy zrobił już to ktoś kiedyś?? Chodzi mi o kod w BASCOMIe.
    Jeśli potraficie to zrobić to proszę o pomoc.
  • REKLAMA
  • #2 1023663
    yarpen2
    Poziom 22  
    Posty: 549
    Pomógł: 39
    Ocena: 39
    nie wnikam w sens...
    ale to by było jakoś tak :
    
     Config Pind.4 = Output                                     
     reset Portd.4   
     Config Pind.2 = Input  
     reset Pind.4
    
    dim a as bit
    dim b as bit
    a=0
    portd.4=a
    do
    
    
    if pind.2=1 then  <-- sprawdza czy jest nacisniete
     waitms 100
      if pind.2=1 then <-- jeszcze raz sprawdza
       b=not a           <-- zmienia stan zmiennej przypisywanej do wyjscie przekaznikowego na przeciwny
       a=b
       portd.4=a
        do   <-- czeka aż puścisz klawisz
        loop until pind.2=0 <-- jak bedzie zero ma wyskoczyc z petli ( nie pamietam czy ma byc tak) 
      end if
    end if
    loop
    
    
  • REKLAMA
  • #3 1023666
    Anderian
    Poziom 18  
    Posty: 406
    Pomógł: 9
    Ocena: 3
    portd.4 =0
    if portd.2 = 0 toggle portd.4

    powinno dzialac
  • REKLAMA
  • #4 1037971
    august_a
    Poziom 21  
    Posty: 572
    Pomógł: 32
    Ocena: 4
    Ten przykład działa, ale tylko dla jednego "przełącznika" ale gdy robie np dwa kolejne to już coś jest źle.

    Buduje urządzonko, które będzie załączać 3 przekaźniki:
    - 3 przyciski (portd.4, portd.5, portd.6)
    - 3 przekaźniki (portd.1, portd.2, portd.3)
    Jak to można zrobić w BASCOMie??
  • Pomocny post
    #5 1038126
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    august_a napisał:
    Ten przykład działa, ale tylko dla jednego "przełącznika" ale gdy robie np dwa kolejne to już coś jest źle.

    Buduje urządzonko, które będzie załączać 3 przekaźniki:
    - 3 przyciski (portd.4, portd.5, portd.6)
    - 3 przekaźniki (portd.1, portd.2, portd.3)
    Jak to można zrobić w BASCOMie??


    Kod dla w/w konfiguracji:
    
    Config Debounce = 30
    Config Portd = Output
    Ddrd = Ddrd And &H0E
    Portd = Portd Or &H70
    Do
    Debounce Pind.4 , 0 , Przekaznik1 , Sub
    Debounce Pind.5 , 0 , Przekaznik2 , Sub
    Debounce Pind.6 , 0 , Przekaznik3 , Sub
    Loop
    
    Przekaznik1:
       Toggle Portd.1
    Return
    Przekaznik2:
       Toggle Portd.2
    Return
    Przekaznik3:
       Toggle Portd.3
    Return
    


    Funkcja "debounce" ma tę przewagę nad "if porx.x=0" ,że nie będzie powodować naprzemiennego zał/wył przekaźnika jeśli zbyt długo przytrzymasz wciśnięty przycisk.

    Pozdrawiam
    Piotrek Sz.
REKLAMA