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

[attiny2313][bascom] zamek szyfrowy

dezmontnikus 31 Maj 2009 17:10 4831 14
REKLAMA
  • #1 6599202
    dezmontnikus
    Poziom 21  
    Witam...
    Niedawno udało mi się zbudować sterownik do bramy przesuwnej ale teraz mam problem z otwieraniem jej z miejsca. Przy bramie mogłem zastosować zwykły przełącznik ale każdy by się nim bawił :) Chcę zbudować zamek szyfrowy który po wprowadzeniu odpowiedniego kodu poda sygnał przez jakąś 1s na wyjście. Kod miałby się wyświetlać na wyświetlaczu siedmiosegmentowym. Chciałem użyć do tego Attiny2313 bo mam kilka na składzie. Trochę będzie z tym zamieszania żeby odpalić 4 cyfrowy wyświetlacz na tym procku. Może użyć jakiś transkoderów i odpowiednio z procka przełączać je. Kod najlepiej jakby był napisany w bascom. Jeżeli by wystarczyło miejsca można dodać opcję że po trzech błędnych kodach układ blokuje się na 1minute (ale to już opcja). z góry dzięki wszystkim za pomoc
    Pozdrawiam.
  • REKLAMA
  • #2 6599266
    wader_669
    Poziom 28  
    Ja moge cos takiego napisac, ale napewno nie attiny2313 i napewno nie za darmo. Mozliwe ze kodu calego bym nie zmiescil w attiny i pinow tez moze nie starczyc, dlatego odrazu najlepiej uzyc atmegi8.
    Jak chcesz za darmo moge ci opisac pokolei jak wszystko zrobic.
  • REKLAMA
  • #3 6600317
    elektronik999
    Poziom 26  
    A moze jeden segment i enekoder? na wyświetlaczu wyswietlana aktualna liczba i enekoderm ją wybiera
  • #4 6600847
    psooya
    Poziom 38  
    Może rejestr SIPO jakiś może (ls164 czy jakie tam są popularne) i multiplex na 4 segmenty? Do tego klawiatura 4x4 albo 3x3 chodzącą w tym samym przerwaniu co wyświetlacz i używającą tych samych pinów to sterowania multuiplexem co zmniejszy ilość pinów o 4 tylko trzeba diody dodać ? Pinów starczy ale pamięci w baskomie to raczej wątpię choć kto wie ja tego nie używam więc musisz spróbować.
    Pozdrawiam
  • REKLAMA
  • Pomocny post
    #5 6600995
    Konto nie istnieje
    Poziom 1  
  • #6 6602659
    dezmontnikus
    Poziom 21  
    emarcus jak by miała wyglądać ta przeróbka na Attiny2313.. właśnie chodzi mi o coś takiego jak napisałeś. Ok można zrezygnować z tego siedmiosegmętowego i dać LCD. Klawiatura zostanie taka jak jest tam w projekcie. Będzie trzeba przerobić kod, nie wiem czy sobie z tym poradzę.
  • #7 6602869
    wicy
    Poziom 22  
    Może zamiast dużej klawiatury rozważ wprowadzanie kodu tylko dwoma przyciskami na zasadzie sekwencji lewo-prawo.
  • #8 6602921
    dezmontnikus
    Poziom 21  
    Ale po co... z całą klawiaturą i wyświetlaczem będzie to bardziej profesjonalnie wyglądać wbudowane w słupek. Można użyć tych dwóch klawiszy ale nie widzę sensu jeżeli miejsca w procku jest wystarczająco dużo.
  • #9 6603672
    Konto nie istnieje
    Poziom 1  
  • #10 6611392
    dezmontnikus
    Poziom 21  
    NIe no poddaje się... jak wspominalem wcześniej na bascom jestem początkujący i nie mogę sobie poradzić z symulacją tego kodu.

    '-------------------------------------
    '    !  D E M O  P R O G R A M  !
    '
    '      FOR Bascom AVR Simulator
    '-------------------------------------
    ' Code is consisted of 4 digits.
    ' 1 user code is entered in program.
    '-------------------------------------
    'Project:     CodeLockAVR - LCD
    '           File:codelcd-D1SIM.bas
    'Copyright:    Rudi Slejkovec
    'WWW:          www.avr.4mg.com
    'Device:        Atmel AVR uC
    'Date:           15.11.2005
    '-------------------------------------
    
    $sim
    'Instructs the compiler to generate empty wait loops for the WAIT and WAITMS statements.
    'Instruction allows faster simulation.
    '
    '! In AVR Simulator run the simulation with the command:
    '! Step into code (F8)
    '
    '! SET LCD PIN CONNECTIONS in menu:
    'Options => Compiler => Output => LCD
    '
    '     Lcd type = 16 * 2
    '     DB4 = Portb.0 , DB5 = Portb.1 , DB6 = Portb.2 , DB7 = Portb.3
    '     RS = Portd.5, Enable = Portd.6
    
    $regfile = "2313def.dat"
    $crystal = 4000000
    
    Dim Keyread As Byte
    Dim Key As Byte
    Dim Code As Word
    Dim Mycode As Word
    Dim Digits As Byte
    Dim Point As Byte
    
    Ddrd = 255
    Portd = 0
    
    Relay Alias Portd.4
    Beep Alias Portd.3
    
    Config Kbd = Portb , Debounce = 40
    
    Config Lcd = 16 * 2
    
    
    
    '-------------------------------------
    Mycode = 5060
    '-------------------------------------
    
    
    
    Do
          Cls
          Cursor Off Noblink
          Lcd "WWW.AVR.4MG.COM"
          Wait 2
          Lowerline
          Lcd "CodeLockAVRdemo"
          Wait 4
          Cls
    
          Set Beep
          Waitms 100
          Reset Beep
          Waitms 100
    
    Begin:
          Code = 0
          Digits = 0
          Point = 0
    
    Scan:
          Cls
          Lcd "   Enter code"
    
       Do
          Keyread = Getkbd()
          If Keyread <> 16 Then Gosub Gotkey
          Waitms 100
    
          If Digits = 4 Then
    
             If Code = Mycode Then
                Goto Opendoor
             Else
                Goto Error
             End If
    
          End If
       Loop
    
    Loop
    
    
    
    Gotkey:
          Ddrb = 255
          Set Beep
          Waitms 100
          Reset Beep
          Waitms 100
    
          Key = Lookup(keyread , Dta)
    
          Incr Digits
          Point = Digits + 6
          Locate 2 , Point
          Lcd Key
          Code = Code * 10
          Code = Code + Key
    Return
    
    Dta:
    Data 1 , 2 , 3 , 13 , 4 , 5 , 6 , 14 , 7 , 8 , 9 , 15 , 11 , 0 , 12 , 16
    
    Error:
          Cls
          Lcd "   Code wrong"
          Waitms 100
          Set Beep
          Wait 3
          Reset Beep
          Wait 20
    Goto Begin
    
    Ok:
          Waitms 100
          Set Beep
          Waitms 200
          Reset Beep
          Waitms 200
          Set Beep
          Waitms 200
          Reset Beep
    Return
    
    Opendoor:
          Cls
          Lcd " Code accepted"
          Gosub Ok
          Lowerline
          Lcd "    Unlocked"
          Waitms 300
          Set Relay
          Wait 1
          Reset Relay
          Wait 1
    Goto Begin


    Ustawiłem piny wyświetlacza i skompilowałem ten kod. PO właczeniu symulatora i LCD wyświetla mi jakieś krzaki. Pomóżcie
  • REKLAMA
  • #11 6611843
    wicy
    Poziom 22  
    Już na wstępie masz złą deklarację procesora $regfile. Na początku pisałeś o ATtiny2313, więc $regfile = "ATtiny2313.DAT"
  • #12 6611894
    dezmontnikus
    Poziom 21  
    Dobra poprawione lecz nadal nie działa tak jak powinno. Teraz chociaż wyświetla cyfry po wciskaniu klawiszy. Znaczy to wpisywanie to nie jest tak prawidłowe bo np: wciskając 2 wyskakuje 223 i tak na innych cyfrach
  • #13 6613425
    Konto nie istnieje
    Poziom 1  
  • #14 6614019
    Press
    Poziom 24  
    A możne zamiast klawiatury zrobić na pastylkę DS1990?
    Nie trzeba się bawić z wpisywaniem kodu i pinów w procesorze trzeba mniej, bo tylko na magistrale 1wire i ze dwie diody lub jedna dwukolorową :)
  • #15 6644320
    dezmontnikus
    Poziom 21  
    Pastylka odpada :) nie każda osoba będzie miała taką przy sobie... Mam jeszcze pytanie jak ustawić fuse bity do Attiny2313 żeby działał z tym programem
REKLAMA