seja4321 Napisałem kilka linii kodu ,jest to jedno z możliwych rozwiązań twojego problemu z przyciskiem . program przetestowałem. Moja rada to testuj program na kilku kilkunastu sekundach. powodzenia. Dodano po 46 Nie rozumiem dlaczego seja4321 został skarcony przez LordBlick, przecież pisze w dziale początkujący? Co do kodu, to jest dziwny, Piszesz...
Nie rozumiem po co dioda LED ukazująca stan nawiewu jest podłączona do osobnego pinu. Nie ma takiej potrzeby, a nawet jest to nie wskazane. Stan wejściowy pinu portu D, nawet kiedy w DDRD jest on ustawiony jako wyjście, można odczytać z rejestru PIND, natomiast wyjściowy z PORTD - tak, ten rejestr można również odczytywać. Nie programuję w Bascom, ale...
Przyciski powinny zwierać do masy i mieć ustawione wewnętrzne pull-upy lub w aktualnym układzie (czego się nigdy nie robi) mieć zewnętrzne rezystory pull-down.
Witam, tu w Zegarek docelowo będzie używany przez dziewczynę, więc musi być przejrzysty. - to już szowinizm...
odczytujemy stan przycisku np : instrukcją IF pinc.4 = 0 then ( tu wstawiamy co ma program zrobić ) najlepiej wstawić jakiś podprogram który zadziała jako stoper zadeklaruj sobie podprogram np: stoper po naciśnięciu przycisku wywołasz podprogram stoper w podprogramie stoper umieścisz jak ma działać stoper declare sub stoper do IF pinc.4 = 0 then call...
instrukcja Pinx.y służy do odczytu stanu portu natomiast Portx.y do ustawienia stanu na porcie
Ten drugi pomysł jest moim zdaniem lepszy. Do tego możesz użyć końcówki przerwania INT - ma konfigurację zbocza, którym jest wyzwalane przerwanie.
W C to bym ci nawet pokazał jak to zrobić, o BASCOMie nie mam pojęcia i nie chcę mieć :) Swoją drogą lepiej porzuć tą ciemną stronę mocy i przejdź na stronę światła :)
Tak na szybko: Nie: If Portd.2 = 0 Then Liczba = Liczba + 1 Tylko: If Pind.2 = 0 Then Liczba = Liczba + 1 Zamiast tej plątaniny: If Liczba = 0 Then Reset Portb.0 Set Portb.1 Reset Portb.2 Reset Portb.3 Reset Portb.4 Reset Portb.5 Reset Portd.0 Elseif Liczba = 1 Then Reset Portb.0 Set Portb.1 Reset Portb.2 Set Portb.3 Reset Portb.4 Reset Portb.5 Reset...
Robisz sobie dwie zmienne: blokada i aktywność. Blokada jako prosta wartość 0 lub 1: jeśli blokada jest założona i wykryjesz, że oba przyciski są naciśnięte, to ustawiasz blokadę na 0 (i aktywność na 0, dodatkowo można dać opóźnienie, aby nie uwzględniać naciśniętych przycisków dalej). Jeśli blokada jest zdjęta, to robisz wszystkie testy, dodatkowo...
Mam podobne zadanie i zrobiłam tak: [syntax=vbnet] Do Incr Czas1 If Czas1 >= 2000 Then : Czas1 = 2000 : Led = 0 : End If Incr Czas2 If Czas2 >= 2000 Then : Czas2 = 2000 : Led = 0 : End If Debounce K1 , 0 , Guzik1 , Sub Debounce K2 , 0 , Guzik2 , Sub Waitms 1 Loop Guzik1: Czas1 = 0 If Czas2 < 200 Then Led = 1 Return Guzik2: Czas2 = 0 If Czas1...
Proponuję przy aliasach przycisków wpisać nie port a pin, bo to są wejścia. No i faktycznie aby stany na wejściach nie szalały podciągnąć wejścia do plusa. Moze być np. tak: regfile = "m8def.dat" $crystal = 1000000 Config Portd = Output Portd = &B00000000 Config Pinb.0 = Input Config Pinb.1 = Input Led1 Alias Portd.1 Led2 Alias Portd.2 S1...
Jeżeli przycisk miałby podciąganie to zawsze byłby w trybie gaszenia a po wciśnięciu i zwarciu do masy 0 czyli tryb rozjaśniania tu mi już coś nie pasuje! Dodano po 20 [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 16000000 Config Pinb.1 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale =...
A czytasz co napisałem wyżej ? Problem polega zapewne na tym, że przyciski nie są podciągnięte ani fizycznie ani programowo do + , czyż nie o to chodzi kolego piotrva? PS. Napisałem 'podciągnie' -literówka
Witam ! do dioda1 = 1 If przycisk1 = 1 and prycisk4 = 0 then dioda1 = 1 waitms 2 dioda1 = 0 waitms 20 end if loop itp. to początek resztę spróbuj sam Powodzenia życzę Stefan . GG6293398
Gdy przycisnąłeś przycisk ale trzymałeś go mniej niż 70 okresów to zmienna Opoznienie_odczytu dochodziła do powiedzmy 65. Ale po puszczeniu przycisku nie resetowałeś zmiennej. Czyli miała ona dalej 65. I kolejne przyciśnięcie było obsługiwane za 5 cykli, a nie za 70 cykli tak jak chciałeś. Bo zmienna musiała doliczyć do 70 a już miała 65 czyli brakowało...
Kod jest już poprawiony. Ten działa w 100% Na pewno nie będzie działał brak zakończenia dwóch warunków w pętli Do -Loop oraz coś bardzo ciekawego : [syntax=basic4gl]Config Rc5 = Pind.2 If Command = 16 Then Portd.2 = 1 [/syntax] Najpierw deklarujesz jako RC5 a potem zmieniasz na nim stan ? . Coś mi się wydaje że za bardzo nie wiesz jak się do tego zabrać...
Miałem kiedyś jakąś potrzebę na taki 8-o przyciskowy program dla attiny2313. Zamieszczam go w całości z komentarzami, może Ci się przyda: [syntax=basic4gl]$regfile "attiny2313.dat" $crystal = 1000000 '-- Config Portb = Input Portb = &B11111111 Config Portd = Output Portd = &B00000000 Config Porta.0 = Output Porta.0 = 0 Dim Nr As Byte 'licznik...
Nastepnym razem napisz jaki masz blad, na moje to zapis powinien byc i=i+1 oraz i=i-1
U mnie twój program działa bez problemu :D . Może to wina zakłóceń.
Wiec zrobiłem to tak: [syntax=vbnet] Dim Piloty As Byte Dim Old_piloty As Byte Dim Klawisze As Byte Dim Old_klawisze As Byte Dim Licznik_kasuj As Byte Dim Flaga_kasuj As Bit Zeruj_klawisze Alias 250 Zeruj_piloty Alias 0 Klawisze_1 Alias Klawisze.0 Klawisze_2 Alias Klawisze.1 Klawisze_3 Alias Klawisze.2 Klawisze_4 Alias Klawisze.3 Klawisze_5 Alias Klawisze.4...
Wejście (pin procka PORTB.0) programujesz jako wejście . Ustawiasz wysoki poziom tego wejścia , tak aby naciśnięcie przycisku (zwarcie do masy) wymusiło niski poziom na tym wejściu , wykrywany przez program jako If PINB.0 = 0 Then ' coś do wykonania (naciśnięty przycisk)
Witam. Jak zrealizować w Bascomie inteligentny przycisk tzn. Nacisnę go raz to wyświetla mi np. temperaturę max i min, i tak za każdym razem, a gdy przytrzymam go dłużej to resetuje mi tą wartość. Opcja taka jest często spotykana np. w samochodach. W moim Punto jest tak że jak raz naciskam przycisk na desce rozdzielczej to zmieniam opcję wyświetlania...
Witam,zaprogramowałem atmeg8 takim programem $regfile = "m8def.dat" $crystal = 1000000 Config Portb = Output Portb = &B0000000 Config Portc = Output Portc = &B0000000 Config Portd = Input Set Portd.7 Do If Pind.7 = 1 Then 'jeżeli przycisk 1 wciśnięty Waitms 50 'czekaj sekundy Portc.5 = 1 'zaświeć diodę Waitms 100 'czekaj dwie sekundy Portc.4...
Witam. Mam urządzenie zbudowane na Attiny2313 które jest sterowane za pomocą przycisków, poniżej zdjęcie : http://img389.imageshack.us/img389/8693/... Chciałbym zamiast tych switch'y użyć Atmegi8 do sterowania urządzeniem, lecz nie wiem za bardzo jak podłączyć i skonfigurować porty. Punkt A (patrz zdjęcie) podłączyłem do PD.1 Atmegi. Jak widać,...
Cóż, nie jest to znana mi metoda obsługi enkodera, ale chyba ciekawsza... Natomiast nie widzę tu operacji na przerwaniach.... To prawdopodobnie powoduje błędy, chyba, że się mylę. Ale enkodery to zawsze zagadka dla mnie były więc wiele nie pomogę.. Pozdrawiam.
Ojojoj, dawno nie widziałem takiego kodu. Bez urazy, ale ten Twój - mimo, że poprawny - nie jest zbyt rozsądny. Podprogramy tworzy się tylko, gdy jakaś procedura się powtarza - tu nie ma takiej potrzeby. Przykład z SUB znajdzie w help-ie. Od siebie daję przykład obsługi menu przez klawiaturę. Tutaj tylko 2 przyciski (PD0, PD1). Reakcja = Pind Shift...
jestem bardzo początkujący więc pewnie pytanie będzie banalne :-) szukałem na różnych forach, próbowałem i nie wiem gdzie wrzucić w kodzie 2 przycisk... idea programu ma być taka: po włączeniu zasilania pojawia się na wyświetlaczu "witaj" i po naciśnięciu przycisku 1 mierzy napięcie (kolejne naciśnięcie=kolejny pomiar). I do tego miejsca wszystko działa....
Po pierwsze pozbądź się waitów, po drugie przerwania. Podam hasła do opracowania: Timery - odmierzanie czasu, przerwania, timing zdarzeń Przyciski - podciąganie, odczyt z rejestru PINn
.... config pinc.1 = input set portc.1 declare sub we declare sub wy do if pinc.1 = 0 then gosub we end if loop end sub we DDRB = &B00000000 DDRC = &B00000000 DDRD = &B00000000 do if pinc.1 = 0 then gosub wy end if loop end sub sub wy DDRB = &B11111111 DDRC = &B11111101 DDRD = &B11111111 do if pinc.1 = 0 then gosub we end if loop end sub Na szybko...
i odrazu po wait'cie daj ponowne sprawdzanie przycisku czy jest wcisniety
Nie ma opcji byś utrafił obydwa przyciski na raz. A nawet jeśli jakimś cudem utrafisz to wykona się ten, który akurat będzie nadchodził w pętli głównej. Możesz także wszystko co masz w podprogramie wpisać w instrukcję IF..END IF sprawdzając czy przypadkiem drugi pin nie ma stanu wciśniętego przycisku.
Wiem. Poprawię go
Ale nie blokuje przerwań. Przycisk przenieś na PD2 lob PD3, ustaw zezwolenie obsługi przerwań i przerwania zewnętrznego, ustaw obsługę tego przerwania np. on INT0 ustaw_flage ustaw_flage: flaga=1 return i wpisz zamiast: "If Pinb.0 = 0 Then" "If Pinb.0 = 0 or flaga=1 Then" P.S. Ale obsługi Timerów powinieneś się tez nauczyć.
F4, wybrać typ procesora tak jak pisali koledzy wyżej i kliknąć to: http://obrazki.elektroda.net/9_125426753... A potem kliknąć „Write Buffer to flash ROM" (jest 2 przyciski w prawo).
Program wykona się tylko raz. Jeżeli naciśniesz odpowiedni przycisk i przytrzymasz go do momentu az uruchomisz uc to odpowiedni warunek zostanie sprawdzony i wykona się odpowiednia akcja
Użyj przerwania timera do migania diodą, a najlepiej do wszystkiego (czyli również do sprawdzania stanu przycisków).
To może inaczej, czy podłączysz łaskawie tego switcha między masę a portb.1 ?
Witam! Ja zwykle robię od razu tak: [syntax=basic4gl]Config portd = &b00001111 Portd = &b11110000[/syntax] W ten sposób łączę konfig i ustawienie pullup . W języku BASIC nie zaleca się oddzielania instrukcji dwukropkiem, zamiast: [syntax=basic4gl]If Pg = 0 Then Kier = 0 : Gosub Ruch_key End If[/syntax] Lepiej zapisać tak: [syntax=basic4gl]If Pg = 0...
Dziękuję bardzo za pomoc :) jeśli nie na błędach to na czymś się trzeba uczyć a czy jest coś lepszego niż dobry przykład? Wszystko działa świetnie. Dziękuję jeszcze raz i Pozdrawiam!
Drgania styków i ich eliminacja - poszukaj, poczytaj. Domniemam że impulsy nie pochodzą z innego układu cyfrowego ale z przycisku;-)
Chodzi Ci o zapalanie diody stanem niskim? Musisz ustawić kierunek pinu na wyjście i wpisać do niego 0. Tylko tyle:) P.S. Sprecyzuj, czy chodzi Ci o zapalanie diody, czy obsługę jakiegoś przycisku, po naciśnięciu którego dioda ma się zapalić.
przenies trzy linijki: Cls Lcd "PROGRAM GLOWNY" Do o 3 linijki w góre albo dodaj jakies opóźnienie po set enter ogółem rzecz biorąc to takie coś (detekcja przycisku zaraz po resecie) też nie chciała mi działać (AT89C4051) zawsze trzeba było dawać opóźnienie lub zapętlić
Witam Robie pierwsze kroki w programowaniu w języku bascom. Stanąłem przed problemem zdefiniowania w tym języku pewnych warunkowych komend dla procka atmega8. Jeśli ktoś może mnie nakierować to z góry dziękuję. O to moje problemy: 1. Konkretnie chodzi o to by układ reagował np poprzez zapalenie diody led w chwili gdy przycisk podłączony do tego układu...
Witam zaczynam programować i mam problem.Potrzebuje zaprogramować atmege8. Założenia po załączeniu przycisku ma dać stan niski i po jakimś czasie ma ponownie dać stan wysoki 2 razy. $regfile = "m8def.dat" $crystal = 8000000 Config Portd = Output Config Pinb.0 = Input Przycisk Alias Pinb.0 Do Portd = &B11111111 Przycisk = 0 Waitms 30 Portd = &B00000000...
Hej! Nic nie zapomniałem :) , tylko poprostu zawsze korzystając z przycisków podciągam wejscie pod plus 5V (Rezystor 10k). Z praktyki przekonałem się że jest to o wiele pewniejsze rozwiązanie niż ustawianie programowo stanu wysokiego. Pozdrawiam
Witam, Próbuję moich sił w programowaniu w bascom'ie. Chciałbym zaprogramować atmega8 tak aby podczas przyciskania przycisku zapaliła się dioda i na wyświetlaczu pojawił się napis. Jeżeli przycisk nie będzie naciskany to dioda się nie powinna świecić a napis powinien się zmienić. Co jest nie tak w moim programie? Proszę o zapoznanie się, z TYM tematem....
Zobacz, że program w pętli nieskończonej będzie trafiał na wait 60 i tam się zatrzymywał, co uniemożliwi odczytanie stanów przycisków.
Biblioteka jest płatna, ale jak dobrze poszukać. (Użyj przycisku szukaj.)
Po co jest "Readeeprom Nr_menu , 1" po "Debounce S1 , 0 , Zmiana , Sub"? To raczej nic nie wnosi do działania programu, ponieważ po "Debounce..." w zmiennej nr_menu już masz aktualny numer menu. "Readeeprom Nr_menu , 1" powinno być przed "Do". Wtedy aktualną pozycję menu odczytujesz tylko raz przy włączeniu zasilania i na ekranie wyświetlasz menu które...
Możesz to zrobić na funkcji Wait ale musisz inkrementować jakąś zmienną a w między czasie sprawdzać przyciski .
Wielkie dzięki za chęci ale jestem jak osesek jeżeli chodzi o programowanie i Bascom jest dla mnie najłatwiejszy nie korzystam z PonyProg-a. Pozdrawiam Bogdan
Zastanów się, ile czasu zajmie użytkownikowi zadanie urządzeniu stu tysięcy zmian stanu wyjść. Pomyśl też nad żywotnością przycisków pilota.
To prędzej mnie zaćmiło. Dzięki.
Witam, mam taki problem. program wg mnie powinien po przekroczeniu ustalonej temperatury wyswietlac na LCD napis, wlaczac Buzzer oraz zapalic diode. A po nacisnieciu przycisku wyłaczyc to wszystko. I problem jest taki ze wylacza wszystko oprocz diody. Tzn po wlaczeniu sie alarmu dioda wogole juz nie gasnie ani po obnizeniu temperatury ani po nacisnieciu...
Być może bascom'owe instrukcje obsługi lcd nie patrzą na kierunek w jakim działa port, tzn. w w funkcja "Config Lcdpin" ustawia wybrane porty jako wyjścia a pozostałe instrukcje obsługi lcd nie sprawdzają czy to się nie zmieniło. Spróbuj przed instrukcjami od lcd czyli przed obydwoma "cls" ręcznie przestawić wyprowadzenia uC jako wyjścia. Druga sprawa...
Jakoś nie widzę żebyś tu korzystał z przerwania od Timera... Bo nie musisz ;p mogłbyś pokazać jakiś przykład obsługi przycisku w przerwaniu timera ? Nawet jakiś URL do innego projektu. Więc chyba oczywistym jest że ten fragment kodu należy umieścić w przerwaniu od Timera.
Ach, no tak. Język to bascom a procek np. atmega8
Dzięki ;) Faktycznie, kasowanie flagi przerwań pomogło. Jedna linijka załatwiła problem. Co z tym przyciskiem zerującym ? Jakaś podpowiedź ?
Jesteś jak Picasso w Bascomie. Działa tak jak powinno. pytania: co to Boolean oraz dlaczego lepiej zczytywać stan przycisku zwierając do masy ?
Do obsługi przycisków w Bascomie służy "DEBOUNCE"
Zapomniałem napisać mikrokontroler Atmega8
Będę Ci niezmiernie wdzięczny. Nie było tam tez np źródeł w Bascom do tego?
To sobie zmień const Rc_id = 5 na const Rc_id = 0. Ta stała to takie zabezpieczenie aby układ nie reagował na inne piloty.Powinno zadziałać. Program narazie tylko odbiera dane, ale ich nie interpretuje. jak wszystko zadziała to daj znać. Powinno w dolnej lini wyświetlacza wyświetlać numery odebranych przycisków, adres będzie stały. Czasu też narazie...
Jeśli masz dostępny jakiś wyświetlacz to zbuduj układ i zaprogramuj go kodem z helpa bascomu (zamiast Print Address ; " " ; Command wpisz LCD Address;" "; Command , oczywiście najpierw skonfiguruj wyświetlacz). To pozwoli Ci poznać adresy przycisków...
Odpuść sobie BASCOM, jak już coś robiłeś w Bascomie to czas na przesiadkę na C. A jak nie to tym lepiej, nie będziesz miał złych nawyków. A tak poważnie, jak zaczynasz przygodę z mikrokontrolerami, obojętnie w Bascomie czy w C czy ASM, zacznij od najprostszych rzeczy, jak np sterowanie diodą LED, stanu przycisku. Inaczej zajedziesz się od razu i stracisz...
To piszczenie ma być tylko wtedy gdy czujnik temperatury nie będzie odpowiadał tzn gdy np zostanie uszkodzony lub odłączony od magistrali 1-wire. To miało być jako taka informacja że coś się dzieje z czujnikiem. To w takim razie jak to zadeklarować jako podprogram lub tą funkcję do obsługi przycisków??
Hello to all programmers, Can anybody hint me with a routine for Bascom AVR ? Here is the idea: LCD 16x2 is connected and must display the choice Menu for selecting a constant (i.e variable constant) by UP/DOWN buttons - from 1 to 150 , and then store it with third button.Constant is displayed as number, which is increased or decreased by the buttons....
Witam. 1./ Jeżeli definiujemy piny jako wejście najlepiej używać instrukcji config pinb.0=input ' przycisk pierwszy config pinb.1=input ' przycisk drugi config portd.0=input ' pin sterujący diodą LED 2./ Podłączenie przycisków do plusa zasilanie tak jak w tym kursie jest złe. przyciski powinny być podłączone do masy. Po prostu przycisk po wcisnięciu...
Disable INT0 w przerwaniu nic złego nie zrobi. Należy tylko pamiętać aby we właściwym miejscu je włączyć, tutaj ja polecam na końcu przerwania, a nie w głównej pętli programu. Bo nigdy nie wiadomo w którym momencie pętli głównej wejdzie się do przerwania (a może wejść np po komendzie enable int0, potem wychodzi z przerwania z wyłączonym int0 i jest...
Przede wszystkim musisz zacząć kolego od poznania timerów. Do odmierzenia czasu używamy timerów ponieważ zlicza nam czas w tle działania procesora. Używając polecenia wait zatrzymujesz kompletnie uC na ten czas. Konfiguracja dla AtMega8 8Mhz u mnie wygląda tak: Config Timer1 = Timer , Prescale = 256 ''''konfiguracja timera On Timer1 1s ''''przy przerwaniu...
[syntax=vbnet]Automatycznie2: Locate 1 , 1 Lcd " Tryb Automat. " Locate 2 , 1 Lcd "Aktualnie: PR:2" Prog1 = 0 Prog2 = 1 Prog3 = 0 Prog4 = 0 Prog5 = 0 If Cofn = 0 Then Goto Wybor Else Dim Odlicz As Byte Odlicz = 120 Do Wait 1 Decr Odlicz If Cofn = 0 Then Goto Wybor Loop Until Odlicz = 0 Goto Automatycznie3 End If[/syntax] Możesz nawet zwiększyć czułość...
Dokładnie o to mi chodziło, tylko dlaczego nie mam przycisku "pomógł"
A może by tak: Config Portc = Input
Wracajac do tematu czy moglbym prosic przynajmniej o pseudo kod obslugi przykladowo drgania w przyciskach , wysterowania przekaznika np przez 2s oraz komunikacji 1wire jednym timerem (atmega8 ma az 2 timery wiec pewnie szybko skoncza sie jego mozliwosci chcac napisac kod bez zatrzymywania) Cały dowcip polega na tym że z tego 8 bitowego timera możesz...
Witam. Jeżeli konfigurujesz pin jako wejście to używaj instrukcji : Config Pinc.0 = Input zamiast : Config Portc.0 = Input Jak wykrywasz zmianę stanu przycisku i wysyłasz dane przez RS to wstaw małe opóźnienie aby uniknąc drgania styków.
Jeżeli fusy przełączono na 1111 to trzeba sprawdzić sprawność i podłączenie kwarcu (i zbadać najlepiej oscyloskopem lub sondą w. cz. przebieg na XTAL2). Nie należy zapominać o kondensatorach przy kwarcu (ok. 33pF) zgodnie z notą katalogową. Jeżeli dalej będzie nie tak należy do XTAL1 podłączyć dowolny generator zewnętrzny o częstotliwości kilku MHz...
Fajny projekt, może komuś się przyda bądź zainspiruje do stworzenia własnego sterowania. Sam ostatnio potrzebowałem takiego sprzętu do emulacji klawiatury PC, ale u mnie zamiast przycisków jest pilot podczerwieni w standardzie NEC. Można skonfigurować różne przyciski, wgrać program i testować. Potrzebowałem takiego rozwiązania do sterowania systemu...
Poza tym jest to funkcja jeśli a nie gdy
Fnkcja LOAD robi przeliczenia za ciebie. Jeżeli użyjesz Timerx = y to będziesz musiał sam poodejmować. Najlepiej przenieś zmianę stanu portu do przerwania, a w pętli głównej daj tylko wyświetlanie i obsługę przycisków.
Zacznij (jak w 99% projektów) od przerwania timera. W nim sprawdzaj stan przycisków i wykonuj prawie wszystkie pozostałe czynności.
Witam i jak zwykle proszę o pomoc. Otóż piszę program do sterownika wytrawiarki, zrobiłem Menu (hehe, 50% flasha), i potrzebuję zrobić termostat z czujnikiem temperatury, a wybrałem sobie DS1820, bo łatwodostępny i pospolity. Problem mam taki, że w programie głównym wyświetlam tą temperaturę, (przechodzę do podprogramu), a czas odczytu wynosi 750ms,...
A jak podłączyłeś przycisk TOW do portu ? Standardowo ustawiamy port jako wejściowy i podciągamy go do plusa przez rezystor wewnętrzny a przyciskiem zwieramy do masy. Dodano po 4 Wystarczy wtedy uznajemy TOW jako aktywny z poziomem logicznym zero. Czyli zmienić tam gdzie TOW=1 na TOW=0 Jak przycisk jest wciśnięty to mamy zero jak wolny to jeden
1.STFW.... 2.RTFM [kolejny bascomowiec] 3.Naprawde, bascom nie zastępuje programisty do tego stopnia, zeby miał zaimplementowaną obsługe CZTEROCYFROWEGO WYSWIETLACZA LED!... Wniosek: Uzyj multipleksowania, a jesli nie wiesz co to jest, zastosuj sie do punktu pierwszego. 4.Jak wyeliminować to ze "tak jakbys nacisnął dwa razy": to sie nazywa drganie styków....
Masz LCD? to wpisz Config portx.x = Output ' dla Przycisków Do Cls Lcd"" ;Pinx.x Waitms 100 'bez tego Lcd nie nadąża z wyświetlaniem Tak sprawdzisz czy uP reaguje na Przyciski ,też miałem podobny Problem.
Jeżeli skaczesz do podprogramu Dalej to mozę potem z niego powróć a nie skacz z niego ponownie do Klaw z którego to Dalej został wyzwolony. Dodatkowo możesz zwiększyć stos bo często przez niego program sypie się na podprogramach. Sugeruję również w danej chwili ustawienie tylko jednej nóżki jako wyjście gdyż jak u ciebie gdy 3 są wyjściami i na nich...
Witam Chcialem wykorzystac pin 1, port Pc.6 (reset) do wykrywania nacisniecia przycisku. Jak w Bascom powinien wygladac przykladowy program ?
Do atmegi8mki Ci może nie wejść obsługa FATu. Poszukaj na elektrodzie FAT SD Atmega i coś znajdziesz gotowego. - Napewno nie Bascom :D Potem jakieś przerwanie i mierzyć czas i robić systematyczne opróżnianie buffora na drabinke R2R albo DAC.
...Dałem polecenie debounce i powinno zwiększyć zmienną o 1 i poczekać do puszczenia przycisku, ale nawet szybkie naciśnięcie zwiększa zmienną o kilkadziesiąt jednostek. Może chodzi o przerwania? Może to być "sprawka" przerywań, proponuję na początek: [syntax=basic4gl]Klik: Disable interrupts Incr Bsend If Bsend = 100 Then Bsend = 0 Enable Interrupts...
Dzień dobry. Kompilator przecież pisze o co chodzi :D Zamiast "jeśli przycisk = 0" napisałeś "jeśli przycisk = Duża litera O" Brakuje też przecinka przed Right. http://obrazki.elektroda.pl/7581088600_1... Poniżej film z uruchomionej symulacji :D https://filmy.elektroda.pl/100_144731640... Miłego dnia. P.S. Do Gunslinger - Myślę że...
W pierwszym kodzie - niby nadajnika - masz konfigurację dla przycisku na PORTB.1 W zależności od stanu na PINB.1 ma nadawać jedynkę lub zero. W konfiguracji przycisku jednak ktoś wyłączył podciąganie przycisku do plusa przez co, jeśli w układzie nie masz zewnętrznego rezystora podciągającego ten pin do plusa, stan jest nieustalony, losowy bądź zależny...
Szukam kogoś kto pomoże napisać program na procesor Atmega8 przy wykorzystaniu pakietu Bascom. Chodzi mi procedury do wyłącznika czasowego z ustawianym czasem przerwy i czasem pracy wykorzystującym do ustawienia 3 przyciski (góra,dół,ok),prezentacja na wyświetlaczu 2x16 znaków....Deklaracje portów,wyświetlacza,przycisków dam radę napisać sam.
Z tego co zauważyłem w symulatorze to czasami wypada 7 czyli 0. Wtedy po naciśnięciu przycisku nie wyświetla się nic. If X = 7 Then X = 0 End If Jeżeli zmienię 7 na 6 to nigdy nie wyskoczy 6-stka ... A co do bałaganu to już pisałem "zaczynam" przygodę z programowaniem :) Pozdrawiam i dziękuję za uwagi... Witam ! Napisz tak: If X >6 Then X = 1 End If
Instrukcja Pinx.y służy do odczytu stanu portu natomiast Portx.y do ustawienia stanu na porcie. Jeśli sprawdzasz, czy został naciśnięty przycisk to za pomocą instrukcji Pinx.y (wcześniej musisz ustawić Config Pinx.y=Input). Poza tym jeśli chcesz włączać/wyłączać podświetlenie LCD to lepiej zrób to przez jakiś tranzystor, a nie bezpośrednio z portu Atmegi,...
Jeżeli atmega idzie na 4MHz to naturalnie że soft trzeba o tym powiadomić $crystal = 4000000 A postoje nie mają wpływu na miganie gdyż LCD w tym czasie powinien wyświetlać to co przed pętlą do chwili ponownego zapisu.. ustaw najpierw odpowiednie taktowanie, potem ew Home zamiadt cls i będzie ok A jeżeli chodzi o te + 5 to możesz dodać tę część programu...
Nie przeglądałem kodu ale czy przypadkiem nie wystarczy Ci aby przed sprawdzaniem przycisku kontrolowany był jakiś znacznik, że coś się akurat wykonuje i przycisk powinien być nieaktywny ?
a ja bym to zrobił na przerwaniu. podpinasz wszystkie przyciski przez diody do jednego z wyprowadzeń (int0) i po problemie ;-)
mi sie wydaje ze dla poczatkujacego najletwiej i najlepiej by bylo atmega8 wyswietlacz lcd (ok 20 zl) 3 przyciski i wszystko taktowane kwarcem zegarkowym, czy nie ? (i jezyk bascom tylko nie wiem czy mozna mierzyc setne sekund)
Nie znam się na tym języku i mam podejrzenia graniczące z pewnością, że ty Konradzie też nie. Ale zerknąłem sobie do pliku pomocy i tam stoi jak wół, że instrukcja LCD obsługuje wyświetlacze zgodne ze standardem Hitachi HD44780. A jak napisał excray Wyświetlacz jest zgodny z HD44780. Wciśnij mu więc przycisk pomógł i spuść trochę z tonu, bo to powyżej...
To,że np programu napisanego w BASCOM-ie nie wgram poprzez ten programator
bascom atmega8 przycisk atmega8 przycisk przycisk bascom
dozownik płynu zmywarki sharp migające podświetlenie czcionka chrome
pralka indesit cieknie pralka indesit cieknie
Zamiennik tranzystora BC238: BC547B jako alternatywa Winda zaparzacza w DeLonghi Perfecta Cappuccino - przyczyny problemu