klonyyy Napisano Sierpień 7, 2011 Udostępnij Napisano Sierpień 7, 2011 Witam ! Od kilku dni bawię się wyświetlaczem na płytce testowej z atmegą8 z elbota. I w końcu napotkałem pewien problem. Gdy chcę żeby wyświetlacz wyświetlił mi słowo OK po tym jak wcisnę przycisk na wyświetlaczy "jeździ" tylko napis OK (bez naciśnięcia przycisku ) na przycisk nie reaguje ( oprócz tego że gdy przycisnę przycisk wyświetlacz robi się czarniejszy). przycisk podłączony do procka potem do vcc. Zamieszcam program: $regfile = "M8def.DAT" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Pind.2 = Input Do If Pind.2 = 1 Then Lcd ; "OK" End If Loop
piotreks-89 Sierpień 7, 2011 Udostępnij Sierpień 7, 2011 $regfile = "M8def.DAT" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Pind.2 = Input Pind.2 = 0 'wyłączone Cls 'czyścisz ekran Do If Pind.2 = 1 Then Cls 'czyścisz ekran Lcd "OK" End If Loop End Powinno być ok. Jeżeli nie to pisz Polecam dorobić licznik przyciśnięć tego µSwitch-a. Ogólnie zapomniałeś czyszczenia ekranu, dlatego masz takie "dziwactwa". W temacie jet błąd powinno być 16x2 1
Armir Sierpień 7, 2011 Udostępnij Sierpień 7, 2011 Źle masz podpięty uswitch. Podepnij go do masy i włącz wewnętrzny pull up (stan wysoki na wejście).
klonyyy Sierpień 7, 2011 Autor tematu Udostępnij Sierpień 7, 2011 Niestety program nie działa:( Dalej to samo (w temacie nie ma błędu po prostu popsuł mi się LCD 16*2 i użyłem 14*2 ) [ Dodano: 07-08-2011, 18:56 ] Dałem taki program $regfile = "M8def.DAT" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Pind.2 = Input Set Pind.2 Cls 'czyścisz ekran Do If Pind.2 = 1 Then Cls 'czyścisz ekran Lcd ; "OK" End If End Loop [ Dodano: 07-08-2011, 18:57 ] i nic tylko podczas włączania wyświetla się OK
piotreks-89 Sierpień 7, 2011 Udostępnij Sierpień 7, 2011 Armir, wydaje mi się, że to nie ma znaczenia czy jest podpięty do masy, czy do zasilania. Stan wysoki to stan wysoki,stan niski to stan niski. klonyyy, dla pewności spróbuj tego co zaproponował Armir. Poprawiony program: $regfile = "M8def.DAT" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Pind.2 = Input Set Pind.2 Cls 'czyścisz ekran Do Debounce Pind.2 , 1 , OK , Sub 'odkłócanie styków Loop OK: Cls Lcd "OK" End [ Dodano: 07-08-2011, 19:10 ] Program jest bez sensu, bo napis po jednym kliknięciu będzie wyświetlał się cały czas, do ponownego naciśnięcia przycisku. Z racji tego proponuję ci coś takiego: $regfile = "M8def.DAT" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Pind.2 = Input Set Pind.2 Cls 'czyścisz ekran Do Debounce Pind.2 , 1 , OK , Sub 'odkłócanie styków Loop OK: Cls Lcd "OK" Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie Cls End
klonyyy Sierpień 7, 2011 Autor tematu Udostępnij Sierpień 7, 2011 W Twoim programie piotreks-89 po podłączeniu zasilania LCD wyświetla OK bez przyciskania switcha po czym znika one po 250 ms jak jest to napisane w programie.
piotreks-89 Sierpień 7, 2011 Udostępnij Sierpień 7, 2011 W takim razie podłącz µSwitcha pod GND i zastosuj ten program: $regfile = "M8def.DAT" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Pind.2 = Input Pind.2 = 1 Cls 'czyścisz ekran Do Debounce Pind.2 , 0 , OK , Sub 'odkłócanie styków Loop OK: Cls Lcd "OK" Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie Cls End Jeżeli to nie działa to wymień µSwitch-a. 1
klonyyy Sierpień 7, 2011 Autor tematu Udostępnij Sierpień 7, 2011 Dzięki bardzo to była wina (chyba) switcha teraz już wszystko działa programy też się przydadzą.
Armir Sierpień 7, 2011 Udostępnij Sierpień 7, 2011 Jest i to wielka różnica. Przy switchu do zasilania masz na pinie stan nieustalony kiedy przycisk jest nie wciśnięty. Przy masie i podciągnięciu tego problemu nie ma.
klonyyy Sierpień 8, 2011 Autor tematu Udostępnij Sierpień 8, 2011 Sorry że znowy zawracam Wam głowę ale nie chce mi działać ten program: $regfile = "M8def.DAT" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Pind.2 = Input Config Pind.3 = Input Pind.2 = 1 Pind.3 = 1 Cls 'czyścisz ekran Do Debounce Pind.2 , 0 , Yes , Sub ' Loop Yes: Cls Lcd "yes" Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie Cls Do Debounce Pind.3 , 0 , No , Sub ' Loop No: Cls Lcd "no" Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie Cls Ma on po kliknięciu pierwszym przyciskiem wyświetlić yes, po drugim no. I tu się zaczyna kłopot gdy po wciśnięiu przycisku 2 wyświetli się no wciskając przycisk 1 nic się nie dzieje. Macie może jakies pomysły jak to zrobić żeby można było wcisnąć po koleji przyciski 1,2,1 itd ?
klonyyy Sierpień 8, 2011 Autor tematu Udostępnij Sierpień 8, 2011 Mógłbyś trochę dokładniej? Próbowałem to zrobić ale wtedy niezależnie od wciśniętego przycisku pokazuje się yes Jak można to poproszę o kawałek kodu
madik Sierpień 8, 2011 Udostępnij Sierpień 8, 2011 Spróbuj tak(nie wiem czy dobrze będzie): $regfile = "M8def.DAT" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Pind.2 = Input Config Pind.3 = Input Pind.2 = 1 Pind.3 = 1 Cls 'czyścisz ekran Do Debounce Pind.2 , 0 , Yes , Sub ' Debounce Pind.3 , 0 , No , Sub Loop Yes: Cls Lcd "yes" Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie Cls No: Cls Lcd "no" Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie Cls
klonyyy Sierpień 8, 2011 Autor tematu Udostępnij Sierpień 8, 2011 Już tak próbowałem Niestety wtedy po wciśnięciu przycisku 1 wyświetla się yes a następnie no (bez przyciskania 2 przycisku) 2 działa dobrze.
Robomaniak Sierpień 8, 2011 Udostępnij Sierpień 8, 2011 powinno banglać $regfile = "M8def.DAT" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Pind.2 = Input Config Pind.3 = Input Pind.2 = 1 Pind.3 = 1 Cls 'czyścisz ekran Do Debounce Pind.2 , 0 , Yes , Sub ' Debounce Pind.3 , 0 , No , Sub Loop Yes: Cls Lcd "yes" Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie Cls return No: Cls Lcd "no" Waitms 250 'odczekaj 250ms i wyczyść ekran ponownie Cls return jak nie to będziemy kombinować dalej 1
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »