...I dalej mam takie pytanie czy da się to zrobić prościej Bascom posiada funkcję skoków do podprogramu w/g indeksu. Portc.4 = 1 'podciagam port - przycisk Dim A As Byte , B As Byte Declare Sub Temp Declare Sub Temp2 Declare Sub Nap Declare Sub Przyc Const Maxa = 2 'maksymalna ilosc podprogramow A = 0 : B = 1 Cls Do 'petla glowna Debounce Pinc.4...
Dodajesz pamięć zdarzeń, tzn na jakimś bicie oznaczasz sobie, czy ostatnio liczyłeś w górę, jeśli tak to zmieniasz znak bajtu i liczysz w dół; jednym słowem: BANAŁ może i nie jest to trudne, ale ja dopiero raczkuje w bascomie :) można prosić o przykład Dodano po 1 odpowiedz naprowadziła mnie na pewien pomysł, ale nadal nic z tego :( Zamieszczę swoje...
Opisałem tu bo ktoś pytał http://www.elektroda.pl/rtvforum/viewtop... pozdrawiam
Mam problem z PWM na 2313 w bascomie AVR (regulacja obrotów silnika DC) Regulacja działa, ale są problemy z zatrzymaniem i ponownym uruchomieniem silnika za pomoca jednego przycisku (pierwsze nacisniecie uruchamiać silnik a następne zatrzymać i tak dalej) Może ktoś ma jakiś pomysł jak to zrealizować.
W procedurze/podprogramie obsługi przycisku wciśniętego zwiększaj zmienną o 1 a w programie głównym, czy też tam gdzie to jest potrzebne, wykonuj program w zależności od tej zmiennej, np. wykorzystując SELECT CASE.
Nie testowałem tego dokładnie, ale nie powinno być problemu. Tam jest AT90USB162 co oznacza, że oprogramowanie można wymieniać przez USB jako DFU (programem FLIP). Oryginalne oprogramowanie które znajdziesz w Atmel Studio ma chyba tylko jeden numer seryjny i do procy z Bascom trzeba mu włączyć filtr. Potem żeby pracował z powrotem ze Studio to filtr...
[syntax=basic4gl] Przycisk_on Alias Pinx.y Przycisk_off Alias Pina.b DDRx.y = 0: DDRa.b = 0 PORTx.y = 1: PORTa.b = 1 Dim Zapamietalem As Bit Do If Przycisk_on = 0 then Zapamietałem=1 If Przycisk_off = 0 then Zapamietałem=0 Loop [/syntax] Zmienna Zapamietalem pamięta który przycisk został ostatnio naciśnięty. "0" jeśli Przycisk_off; "1" jeśli Przycisk_on....
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...
Żeby zrobić za pomocą Timera - to nie możesz używać trybu PowerDown tylko Sleep - żeby właśnie Timery mogły działać to po pierwsze. W taki trybie jednak będziesz miał nieco większy pobór prądu niż w pełnym PowerDown. Więc wszystko zależy na ile ma wystarczać bateria o ile jest to coś zasilane z baterii. Bez PowerDown'a na pewno będzie to sporo krótszy...
Cześć. Szukam sposobu, aby za pomocą dwóch wejść - K1 i K2 podciągniętych do VCC inkrementować zmienną (kejsy 0 i 3), ale na kilka różnych sposobów tzn: Sposób 1 - Dwa osobne przyciski lub przełącznik 2 pozycyjny. Dodano po 43 Tak, to część kodu. (Odpowiedź na usunięty wpis :) ) Rozwiązanie które podałeś załatwia sprawę sterowania włącznikiem stabilnym,...
Żeby układ sam się resetował przy włączeniu zasilania , to opornik dajesz do plusa i kondensator z pinu reset do masy.
Projekt był mi już wcześniej znany i kolejny raz chylę czoła przed kolegą manekinen za kolejny dopracowany i przydatny projekt. Wielki + za całokształt. Dzięki, pamiętaj że jak będziesz miał trochę wolnego to daj znać i poleci płyteczka ;) Do autora. Całość w Bascomie? Nie planujesz zapewne przesiadki na C w przyszłości? Tak, bascom. Na C nie planuje...
Tabelki są zrobione wg schematu - przykładowo jak zwarty jest przycisk czerwony, to jak na A podasz 1-kę (na B-0), to na Y dostaniesz 1-kę (bo A-Y sa zwarte), a na X będzie 0 (bo między A-X jest przerwa) , natomiast jak na B podasz jedynkę, to X i Y będą 0 (bo czerwony nie styka B do żadnego pinu). A mi się wydaje, że będzie stan nieustalony.;) Ja...
Witam Jak napisać program w bascomie, który by zmieniał zapamiętane parametry. Chciałbym to zrealizować przy pomocy trzech przycisków. np.: - gdy przycisk nr 1 jest nacisniety to wywołuje menu (kolejne naciskanie, powodowałoby przysuwanie tego menu) - gdy wcisniety drugi to zwieksza on parametr - gdy czwarty to zapamiętuje ten parametr trzeci to zmniejsza...
Witam, Podczas pisania programu menu wyskoczył mi taki mały problem , może najpierw przedstawię kod [syntax=basic4gl] Config Pind.3 = Input Set Portd.3 Memo Alias Pind.3 Config Pind.4 = Input Set Portd.4 Smulti Alias Pind.4 Dim Nr_menu As Byte , Klucz As Bit , Step_ As Byte , Vfoab As Byte Nr_menu = 0 Do Cls Lcd Lookupstr(nr_menu , D_menu) On Nr_menu...
Witam Chodzi o Bascom AVR, MCU-tiny13. Myślę, że schematu nie potrzeba do takiego układu. PB.0 dioda 1, PB.1 dioda 2. Program mam już do odbioru RC5, zapala i gasi diodę 1 przyciskiem. Chciałbym zrobić by tym jednym przyciskiem zapalić i gasić diodę, która by migała. A drugą diode przyciskiem 2 zapalić i gasić tak aby zapalała się i gasła powoli (łagodnie)...
Może sam spróbuj ;-) Tak w zarysie : w pętli głównej musisz dodać warunek: jeśli przycisk wciśnięty to zwiększ zmienną "czas" o 1 jeśli puszczony to zmienna "czas" =0 następnie: jeśli zmienna "czas" = 123 (dla przykładu, bo nie wiem jak szybko ta pętla przebiega) to : zmień tryb pracy (to masz strasznie napisane, więc trudno ogarnąć)...
Witam. Spróbuj tak napisać etykiety podprogramów. Zamiast Menu_1 : Napisz Sub Menu_1
1. rezystor wywalić - przyciski bezpośrednio do GND 2. diody odwrotnie (obydwie) 3. w kodzie (część konfiguracyjna) uaktywnić wewnętrzne podciąganie do Vcc PIND5 i PIND6 (PORT.X = 1 : DDR.X = 0) 4. no i oczywiście zmienić interpretację przycisków w programie na przeciwny stan Pozdr, Light-I
Niestety, nie pomaga. W sumie może jakoś to przeżyję w końcu obroty raczej rzadko przekraczają wskazaną wartość na ponad 1 sekundę. Ewentualnie odczyt z Dallasów zrobię co 2 lub 3 sekundy, wtedy nie powinno być problemów. Chciałbym jeszcze mieć możliwość zmiany przyciskiem wartości warunku przy jakim ma zapalać się LED. Ale to nie realne chyba przy...
- PROGRAM GŁÓWNY ---> naciskam przycisk np. portd.1 i wchodzę w USTAWIENIA1 ----> naciskam kolejny raz klawisz portd.1 i wchodze w USTAWIENIA2 Witam. Robiłem cos podobnego ale na 89c2051 - wiadomo mało portów. Dlatego menu zrobiłem inaczej. W pętli głównej zrobiłem odwołanie do wejścia i napisałem: if P1.0 = 0 then call Ustawienia else call praca end...
Witam, mam mały problem tzn. nie wiem dlaczego w jednym warunku INCR zlicza w nieskończoność a w drugim warunku tylko jak klikam w klawisz [syntax=basic4gl] do Key_readmemory = Bank_memory + 1 If Key1 = 0 Then Mkey = 1 Idx = 0 Readmemory = 1 : Writememory = 0 Incr M If M = 255 Then Readmemory = 0 End If Gosub Key_memory : Gosub Freq_update : Gosub Wyswietlacz...
Witam Założenia programu są bardzo proste. Jest to cyfrowy licznik metrów taśmy mogący zliczać w przód i w tył. Sygnałami wejściowymi są sygnały A i B z optycznego enkodera inkrementalnego, które są przesunięte w fazie. Wynik ma być prezentowany na sześciocyfrowym wyświetlaczu LED (z multiplexem). Rozdzielczość enkodera wynosi 16 imp/obr. Znamy także...
Chodzi mi o to żeby jednym przyciskiem uruchamiać Rotate Portb , Left A drugim Rotate Portb , Right Tylko żeby to się zapętlało a nie działało tylko wtedy gdy się trzyma przycisk tylko włączało się na stałe Przyjmijmy że jeden przycisk to Pind.4 a drugi Pind.5. $regfile = "attiny2313.dat" 'określenie uc $crystal = 1000000 'okreslenie kwarcu Config Portb...
Jak wyjść z pętli do loop, w której znajduje się encoder(). ? Funkcja ENCODER ma parametr określający czy czekać na zdarzenie, czy tylko sprawdzić i przejść dalej. Ty ustawiasz tryb "czekaj". Samo wyjście z pętli to po prostu EXIT DO.
Jak na razie czas jest prawidłowo zliczany w dół i mogę ustawiać go jednym przyciskiem w dół, ale nie mam pomysłu jak zrobić żeby ustawiać go drugim przyciskiem w górę. Po naciśnięciu przycisku ustawiającego czas w gore wyrzuca na wyświetlacz śmieci. Czy można dodać koleje polecenie "select case" czy w programie może być tylko jedno? Bo próbowałem dodać...
Jestem zielony jeżeli chodzi o programowanie mikrokontrolerów, próbuję zrobić przełącznik, jednym przyciskiem przełączanie trzech wejść. Napisałem program w bascomie ale nie działa, proszę o pomoc w poprawieniu błędów. $regfile = "attiny13.dat" $crystal = 9600000 Config Portb.0 = Output Config Portb.1 = Output Config Portb.2 = Output Config Portb.3...
No ok, ale jakie masz konkretnie pytanie ? Wklej program jako kod i sprecyzuj problem, zanim temat wyląduje w koszu ;)
Programowałem dwoma programatorami ISP pierwszy to samoróbka bez żadnego bufora przy lpt a drugi to stk200, na obydwu jest taki sam efekt. Gdybym miał jakis programator szeregowy to też bym spróbował na nim. Na wszystkich portach mikro kontrolera jest tak samo. Program do programowania to bascom AVR, dwie wersje przetestowane. Próbowałem też wgrywać...
Nie będę sie rozpisywał: Dim T1 As Single , T2 As Integer ... T1 = -123.50 T2 = T1 'bez części ułamkowej T2 = Round(T1) 'zaokrągli zgodnie z prawami arytmetyki ... Pozdrawiam Piotrek
Działa !!! ,wystarczyło zmienić na : Teraz mam jeszcze 2 pytanka ,by nie zakładać nowego tematu: 1) Dlaczego pierwszego programiku nie chciało symulować ,choć poprawnie się skompilował (bez błędów) i działał na "żywo " w procku??? 2) To czy da się zmienić wyświetlacz na taki 16x1 (LCD1601) z jednym wierszem, czy to nie ma znaczenia dla symulatora???...
WITAM :D Wiem, że różnego rodzaju zegarków było już wiele na tym forum, jednak ja chciałbym przedstawić swój ze względu na kilka ciekawych rozwiązań i funkcji, które inne zegarki z pewnością nie posiadają ;) Zacznę może od hardware'u a potem opiszę, które z urządzeń wykorzystuje napisany przeze mnie program. [Program będzie jeszcze rozbudowywany, dlatego...
Dodałem drobną poprawkę, przetestowałem w symulatorze i wyglada że teraz jest ok. Ustaw $crystal odpowiednio. Podłącz pod PD.3 przycisk i pod PD.0 LED (led będzie świecił gdy sprzęt jest w stanie czuwania). O powerdown nie ma co walczyć i tak używasz zasilacza. Najpierw przetestuj ten program, dopiero potem połącz go z twoim silnikowym i przekonfiguruj...
Rozwiązanie Twojego problemu jest banalne. Na początek proponuję wykorzystać zmienną, która jest zwiększana przy każdym wciśnięciu przycisku i w zależności od wartości tej zmiennej (tu wystarczy od 0 do 3, przy wartości 4 zmienna jest znowu zerowana) ustawiasz jedynkę na odpowiednim porcie jednocześnie uruchamiając zliczanie. Kiedy licznik dojdzie do...
Spróbuj zrobić tak Co4ms: 'procedura obsługi przerwania od Timera T/C0 wykonywana co 4ms Timer0 = 6 'załaduj do Timera0, żeby zliczył 250 (=256-6) impulsów Incr Licznik If Licznik = 6 Then 'zmienna Licznik liczy do 6 aby Licznik = 0 'sprawdzanie stanu przycisku następowało If Pind.0 = 0 Then 'co ok.24ms If Pomoc = 1 Then 'jeśli zmienna Pomoc...
Wykorzystaj podprogram w którym umieścisz swoje instrukcje a na jego końcu umieść bitwait a potem tylko ponownie wywołaj ten podprogram.
Witam Tak Panowie ja się z Wami zgadzam (z racji tego iż w programowaniu jestem jak but) chociaż z tymi diodami i analogowym wskaźnikiem zupelnie nie. Jeżeli chodzi o program to od początku miałem takie wrażenie, że cos jest nie tak. Uważałem, że trzeba to napisać co najmniej w C, ale najlepiej w asemblerze - niestety programista mi nie powiedział w...
To już musisz poczytać i popróbować. Nie możemy Ci każdej jednej rzeczy tłumaczyć.
wejście jest sterowane minusem. Po napisaniu coś takiego, układ działa ale po za tym że nie czeka 1 s i nie przechodzi do Pwm1b = 100. Z pewnością przechodzi do Pwm1a = 100, (dlaczego Pwm1b ?) tylko ty mu nie dajesz szansy (czasu) abyś to mógł zobaczyć. Poza tym, nie masz kontroli nad czasem ponad 1 sec. pętla dalej jest przewijana w nieskoczoność....
A w tych dodatkowych skokach których nie chcesz powinny być wszystkie Case i IFy. A te wszystkie debounceusy powinny być w 1 procedurce do której skakałbyś 1 Gosubem gdybyś tylko chciał obsłużyć jakiś klawisz.
Zmień całkowicie podejście do pętli Do...loop. Jeżeli zaczynasz zabawę z programowaniem stosuj tylko jedną pętlę Do..loop Wszystko co będziesz pisał umieszczaj w tej jednej pętli , nigdy nie stosuj Wait'a , nie skacz niepotrzebnie do rozbudowanych podprogramów itd. Kolego leon1313 Zgadzam się z Tobą ( wcześniej przecież napisałem co sądzę o DEBOUNCE...
Cóż, podpowiem jeszcze raz: 1. Sprawdź w necie jak odczytać stan przycisku ---- EDIT: w necie też piszą różnorakie bzdury o tym zatem może napiszę jak być powinno: Zwykle przyciski podłączamy tak, aby zwierały pin do masy. Aby odczytać stan danego pinu musimy: 1. skonfigurować go jako wejście instrukcją (np. - istnieje wiele odmian konfiguracji, ale...
Dla sprawdzania jednego klawisza: do ... ... ... gosub sprawdzanie_klawiszy if flaga = 1 then instrukcje gdy wciśnięty klawisz end if ... ... ... loop sprawdzanie_klawiszy: flaga = 0 if Ok = 0 then waitms 50 if Ok = 0 then flaga = 1 end if end if return mniej więcej tak to ma wyglądać. Jeśli chcesz sprawdzać kilka klawiszy robisz bardzo podobnie....
Standardowy błąd początkującego. Nie włączone wewnętrzne podciąganie (pull-up) na wejściach na których są switche.
1) jeśli używasz przycisków to zawsze podłącz go tak aby przyciśnięcie zwierało nóżkę portu do masy czyli do -. To naprawdę ułatwia sprawę i zawsze działa 2) dobra praktyka - przyciski, jumpery itp podłączaj do pinu procesora przez rezystor np 180 omów. Chodzi o to że kiedyś możesz się pomylić, ustawić pin jako wyjście, dać na nim 1 czyli napięcie +...
I jak tam postępy z projektem, udało ci się go zrealizować?, jeśli tak to może byś zamknął temat. Rozumiem że na kliknięcie "pomógł" nie mam co liczyć, bo przecież cel osiągnąłeś, a "jeleń" nie jest już do niczego potrzebny.
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.
Jeśli wciśniesz przycisk to GOSUB do podprogramu. W podprogramie wykonuje się pętla Do...LOOP. Jeśli przyciśniesz przycisk w podprogramie to RETURN do programu głównego.
Ma czym wyświetlasz dane? Pokaż program obsługi wyświetlania.
przycisk progresywny? te materiały sam musisz chyba sobie wykombinować. robisz to za pomocą pętli , wciskasz przycisk , tworzysz sobie zmienną x = ileś tam milisekund która określa odstęp czasowy , w pętli zmieniasz sobie jakąś tam swoją inną zmienną, zmniejszasz x i czekasz x czasu, jeśli przycisk puściłeś to wychodzisz z pętli i the end.
Wielopoziomowe menu to nie problem. 1) Masz główną pętlę do-loop. W niej piszesz 'menu główne' - korzystając z if-ów i jakiegos licznika który będziesz mógł zwiększać lub zmiejszać za pomocą przycisków góra/dół 2) Znając swój licznik, wiesz dokladnie która opcja menu jest wybrana, więc dopisujesz if-a - zeby skoczył do podprogramu który ma obsługiwać...
Tak jeszcze przed END IF: [syntax=basic4gl]Rc5send Togbit , Address , Command[/syntax]
jednym przyciskiem bascom kolejne sterowanie jednym przyciskiem bascom włącz wyłącz jednym przyciskiem bascom
tevion pilot czujnik drgać autodata online
podzielniki ciepła techem systemy grzewcze serwis
DEFRO Er40 – blokada serwisowa, licznik T66, czujnik podajnika, sterowniki SKZP, ST-37 Cobra Rally GT900 – kierownica uruchamia się i gaśnie, zasilanie, autoryzacja, naprawa