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][atmega32]Wyłącznik schodowy

dark_ghost 03 Wrz 2010 16:28 1454 10
REKLAMA
  • #1 8471851
    dark_ghost
    Poziom 10  
    Witam, czy mógł by mi ktoś pomoc w napisaniu wyłącznika schodowego? Chodzi o to abym mógł podłączyć dwa przełączniki pod atmege i kiedy dowolnie który przełączę zmieni się stan na nóżce z diodą.

    Próbowałem z poleceniem Toggle ale coś nie potrafię sobie poradzić.

    Pozdrawiam i proszę o pomoc.
  • REKLAMA
  • #2 8471907
    Freddy
    Poziom 43  
    No to zaprezentuj układ i swój program, a my pomożemy.
    Na gotowca nie licz.
  • #3 8471989
    dark_ghost
    Poziom 10  
    Układ prosty ma być. Do pinu A1 dioda a do pinów A2 i A3 przełączniki.
    Program który napisałem wygląda tak:
    
    $regfile = "m32def.dat"
    $crystal = 8000000
    
    Config Porta = &B00000001                                  
    Porta = &B11111110
    Dim Q As Byte
        Porta.0 = 0
    Do
    
      If Pina.3 = 0 Then
      Waitms 50                                          
       Toggle Porta.0
       Else
       End If
    
    
     If Pina.4 = 0 Then
       Waitms 50                                          
       Toggle Porta.0
       End If
    
    Loop
    End
    


    Program jak widać też prosty tylko że muszę tu stosować przełączniki które tylko na chwile stykają. A ja potrzebuje żeby móc zastosować zwykłe przełączniki do oświetlenia.
  • REKLAMA
  • REKLAMA
  • #5 8472051
    dark_ghost
    Poziom 10  
    Wiem wiem dioda jest podłączona pod A0 a nie A1.
  • #7 8473537
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #8 8473864
    gregoorr
    Poziom 17  
    W takiej postaci polecenie toogle nie sprawdzi się. Ja na szybko zrobiłbym tak:
    1.Zapamiętać stan portu.
    2.W razie zmiany toogle i zapamiętać .
    3.Gdy stan taki sam, to nic nie robić.
  • #9 8473881
    gaskoin
    Poziom 38  
    dark_ghost napisał:

    Program jak widać też prosty tylko że muszę tu stosować przełączniki które tylko na chwile stykają. A ja potrzebuje żeby móc zastosować zwykłe przełączniki do oświetlenia.


    wtedy musisz reagować jedynie na zbocze, a nie na poziom
  • #10 8473941
    dark_ghost
    Poziom 10  
    Działa :) Dzięki za pomoc.
    
    $regfile = "m32def.dat"
    $crystal = 8000000
    
    Config Porta = &B00000011
    Porta = &B11111100
    Dim P1 As Byte
    Dim P2 As Byte
    Dim P1a As Byte
    Dim P2a As Byte
        Porta.0 = 0
    Do
    
      P1 = Pina.3
      P2 = Pina.4
    
    
       Gosub Porownywanie
    
    Loop
    
    End
    
    Porownywanie:
       Waitms 50
       Toggle Porta.0
       Do
       P1a = Pina.3
       P2a = Pina.4
    
       If P1 = P1a Then
       Else
       Return
       End If
    
    
       If P2 = P2a Then
       'nie robi nic
       Else
       Return
       End If
    
      Loop
    
  • #11 8474030
    gregoorr
    Poziom 17  
    Jak nie ma migać, jak w pętli do-loop masz toogle.
    Ogólnie to twój program jest do kitu.
    W pętli do-loop sprawdź czy coś się zmieniło, jeśli tak, to skocz do podprogramu.
    Tam toogle, zapamiętanie nowych wartości, mała przerwa, aby nie migać i powrót.
    Napisałem w notatniku, ale chyba złapiesz o co chodzi.
    Spróbuj tak:
    
    $regfile = "m32def.dat"
    $crystal = 8000000
    
    Config Porta = &B00000001
    Porta = &B11111110
    Dim P1 As Byte
    Dim P2 As Byte
    Dim P1a As Byte
    Dim P2a As Byte
        Porta.0 = 1
    
    
    P1a = Pina.3                                                'zapamiętanie stanu portów
    P2a = Pina.4
    
        Do
      P1 = Pina.3
      P2 = Pina.4
      If P1 <> P1a Then
            Gosub A1
            End If
    
            If P2 <> P2a Then
            Gosub A1
            End If
    
            Waitms 200
    
    
    
    Loop
    End
    
    A1:
       Do
    
    P1a = Pina.3                                             'nowe zapamiętanie stanu portów
    P2a = Pina.4
       Toggle Porta.0                                           'zmiana stanu
       Wait 1                                                   'aby nie migać
    
    
      Loop
REKLAMA