Zamek sejfu z enkoderem

Pytania, kody i porady dotyczące nie tylko Bascom.
Dominex
Posty: 6
Rejestracja: 14 sty 2022, 9:39

Zamek sejfu z enkoderem

Post autor: Dominex » 14 sty 2022, 9:58

Witam, Znalazłem sobie takie zadanie, z którym się męcze. Kod znajduje się poniżej, który ja napisałem, ale coś jest nie tak. Proszę o pomoc


ZADANIE
Zamek sejfu z enkoderem umożliwiającym ustawianie cyfr 0-9 z zatwierdzaniem każdej cyfry przy pomocy przełącznika w osi enkodera .

Wyświetlacz LCD (16x2) – „Podaj kod:” .

Wprowadzenie kodu np. 1111 wyświetla na LCD – (środkowany tekst) „Otwarte”, włączona dioda LED dołączona do PORTC.0 Następnie zamek jest zamykany (dioda LED wyłączona) i napis na LCD (środkowany tekst wyświetlany przez 3 sekundy) „Zamknięte” (ę!). Powrót do początku programu (możliwość ponownego wprowadzenia kodu).

Możliwość zmiany kodu (proszę wymyślić sposób wejścia do trybu zmiany kodu).

Jak wyżej, dodatkowo zapisanie i odczytanie kodu w pamięci EEPROM mikrokontrolera.

KOD :
  1. $regfile = "m32def.dat"
  2. $Crystal=16000000
  3. $hwstack=40
  4. $swstack=16
  5. $framesize=32
  6.  
  7. Dim Klawiatura As Byte
  8. Dim Dlugosc As Byte
  9. Dim Wynik As Byte
  10. Dim Blokada As Byte
  11. Dim Alarm As Byte
  12.  
  13.  
  14.  
  15. Dim Gwiazdy As String * 4
  16. Dim Kod As String * 4
  17. Dim Znak As String * 1
  18. Dim Znaki As String * 4
  19.  
  20. Kod = "1234"
  21.  
  22. Config Lcd = 16 * 2
  23. Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.3
  24.  
  25. Config PortC = Output
  26. PORTC = 0
  27. Config PortA = Input
  28. Porta = 255
  29. Config Kbd = Porta , Debounce = 50 , Delay = 125
  30.  
  31.  
  32. Cursor Off
  33. Cursor Blink
  34.  
  35. Gosub Wys
  36.  
  37. 'podprogram'
  38. Do
  39.    Klawiatura = Getkbd()
  40.    If Klawiatura <> 16 Then Gosub Przyciski
  41. Loop
  42. End
  43.  
  44.  
  45. 'usuwanie znakow'
  46.  
  47. Przyciski:
  48. Cursor Noblink
  49.    If Klawiatura = 0 Then Znak = "1"
  50.    If Klawiatura = 1 Then Znak = "2"
  51.    If Klawiatura = 2 Then Znak = "3"
  52.    If Klawiatura = 4 Then Znak = "4"
  53.    If Klawiatura = 5 Then Znak = "5"
  54.    If Klawiatura = 6 Then Znak = "6"
  55.    If Klawiatura = 8 Then Znak = "7"
  56.    If Klawiatura = 9 Then Znak = "8"
  57.    If Klawiatura = 10 Then Znak = "9"
  58.    If Klawiatura = 12 Then Znak = "."
  59.    If Klawiatura = 13 Then Znak = "0"
  60.  
  61.  
  62. 'If Klawiatura = 14 Then Znak = "#" '
  63. 'If Klawiatura = 11 Then Znak = "C"'
  64.      '
  65.      'C kasowanie'
  66.  
  67.    If Klawiatura = 11 Then
  68.       Dlugosc = Len(znaki)
  69.       Dlugosc = Dlugosc - 1
  70.       Znaki = Left(znaki , Dlugosc)
  71.       If Dlugosc = 0 Then Znaki = ""
  72.    End If
  73.  
  74.  
  75.   '# zatwerdzenie'
  76.    If Klawiatura = 14 Then     '
  77.       Gosub Wys
  78.       Wait 2
  79.       Znaki = ""
  80.       Cursor Blink
  81.    Elseif Klawiatura <> 11 And Klawiatura <> 14 Then
  82.        Znaki = Znaki + Znak
  83.    End If
  84.  
  85.    Gosub Wys
  86. Return
  87.  
  88.  
  89.   'Wyswietlacz'
  90. Wys:
  91. Cls
  92. Lcd "Podaj kod:" ; Znaki
  93.  
  94. Dlugosc = Len(znaki)
  95. Locate 2 , 7
  96. If Dlugosc = 1 Then Gwiazdy = "*"
  97. If Dlugosc = 2 Then Gwiazdy = "**"
  98. If Dlugosc = 3 Then Gwiazdy = "***"
  99. If Dlugosc = 4 Then Gwiazdy  = "****"
  100.  
  101. If Dlugosc = 4 Then
  102.    Dlugosc = 1
  103.    Else
  104.    Incr Dlugosc
  105.  
  106. Lcd Gwiazdy
  107. End If
  108.  
  109.  
  110. If Dlugosc = 4 Then
  111. Waitms 500
  112. If Kod = Znaki Then
  113. Cls
  114. Lcd " Otwarte"
  115.   config Portc = 1
  116.   Wait 3
  117. 'miejsce na wpisanie zmiany kodu
  118.   config PORTC = 0
  119.   Do : Loop
  120.  
  121.  Cls
  122.  Lcd " Zamkniete"
  123.  Wait 1
  124.  
  125.  Cls
  126.  Lcd "Podaj kod:"
  127.  Znaki = ""
  128.  Alarm = 0
  129.  Dlugosc = 0
  130. Else
  131.    Cls
  132.    Lcd "Alarm"
  133.    Wait 1
  134.    Alarm = Alarm + 1
  135.    if Alarm =  3 Then
  136.      Cls
  137.       Lcd "Blokada"
  138.       Wait 3
  139.       Alarm =  0
  140.       Znaki = ""
  141.       Dlugosc = 0
  142.       End if
  143. End if
  144. End if
  145.  Return
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Zamek sejfu z enkoderem

Post autor: niveasoft » 14 sty 2022, 22:38

Ten krótki kod który według Ciebie jest Twoim autorstwem w ogóle nie uwzględnia użycia enkodera....
Nawet jak byśmy Tobie pomogli to nie wiadomo jak wytłumaczysz to co napiszemy.
Dominex
Posty: 6
Rejestracja: 14 sty 2022, 9:39

Re: Zamek sejfu z enkoderem

Post autor: Dominex » 15 sty 2022, 15:32

Skoro pytam o naprowadzenie to znaczy ,że nie wiem jak to zrobić . Po to chyba jest to forum nie ? żeby w razie czego naprowadzić. Ja sie dopiero tego ucze. Trochę wyrozumiałości.
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Zamek sejfu z enkoderem

Post autor: niveasoft » 15 sty 2022, 15:36

Wyrozumiałości to tu na pewno wszyscy maja dużo.
Pytanie jest czy chcesz tylko "zaliczyć" mhihi czy zrozumieć?
Dominex
Posty: 6
Rejestracja: 14 sty 2022, 9:39

Re: Zamek sejfu z enkoderem

Post autor: Dominex » 15 sty 2022, 16:03

chce wiedzieć o co chodzi
Pikczu
Posty: 389
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Zamek sejfu z enkoderem

Post autor: Pikczu » 16 sty 2022, 13:18

Dominex pisze:
14 sty 2022, 9:58
Możliwość zmiany kodu (proszę wymyślić sposób wejścia do trybu zmiany kodu).

Jak wyżej, dodatkowo zapisanie i odczytanie kodu w pamięci EEPROM mikrokontrolera.
Chłopcze ty nawet kłamać nie potrafisz, bo piszesz że wymyśliłeś sobie zadanie.
Dominex pisze:
15 sty 2022, 15:32
Skoro pytam o naprowadzenie to znaczy ,że nie wiem jak to zrobić . Po to chyba jest to forum nie ? żeby w razie czego naprowadzić. Ja sie dopiero tego ucze. Trochę wyrozumiałości.
Forum jest dla ludzi używających mózgu, szanujących siebie na wzajem a w szczególności szanujących czas i zaangażowanie innych.
Dominex
Posty: 6
Rejestracja: 14 sty 2022, 9:39

Re: Zamek sejfu z enkoderem

Post autor: Dominex » 17 sty 2022, 21:47

Człowieku. Napisane jest wyraźnie "znalazłem sobie zadanie" , czy znalazłem znaczy wymyśliłem ? chyba nie ... więc ktoś inny powinien zacząć używać mózgu.

A co do "Możliwość zmiany kodu (proszę wymyślić sposób wejścia do trybu zmiany kodu)."

Jedno wielkie XD ponieważ ja tego nie wymyśliłem tylko taka jest treść zadania, że trzeba wymyślić sposób wejścia do trybu zmiany kodu.

KŁANIA SIĘ CZYTANIE ZE ZROZUMIENIEM. Zanim zaczniesz oceniać przeczytaj kilka razy.
Ostatnio zmieniony 17 sty 2022, 21:51 przez Dominex, łącznie zmieniany 1 raz.
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Zamek sejfu z enkoderem

Post autor: niveasoft » 17 sty 2022, 21:50

Dobra nie nakręcajcie się :D

Te zadanie z sejfem się pojawia co roku. Często też na mojej skrzynce pocztowej ahahahahaha :D

Kod do enkodera leży tu na forum. Musisz się trochę enkoderem pobawić żeby finalnie napisać kod do sejfu :D
Dominex
Posty: 6
Rejestracja: 14 sty 2022, 9:39

Re: Zamek sejfu z enkoderem

Post autor: Dominex » 17 sty 2022, 21:52

Po prostu nie lubię jak mi ktoś coś narzuca a gościu definitywnie ma ze sobą problem, bo nigdzie nie jest napisane tak jak powiedział.
Ale dziękuję również Tobie za informację
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Zamek sejfu z enkoderem

Post autor: niveasoft » 17 sty 2022, 21:55

Spoko. Forum z założenia jest przyjazne :P
Tutaj było mnóstwo przykładów użycia enkodera do wpisywania. Chyba był taki zasilacz Michała w którym się enkoderem wpisywało cztery cyfry (tam napięcie, ale od kodu sejfu dużo się nie różni)

Chyba tutaj, ale głowy nie dam :P
viewtopic.php?f=3&t=397&start=10#p3283
ODPOWIEDZ