[syntax=vbnet] Zmienna = Ileśtam Gosub Sub_przycisku Do .. Debounce Przycisk, 0, Sub_przycisku, Sub Loop End Sub_przycisku: Select Case Zmienna Case Ileśtam : Zrób to End Select Return[/syntax]
Mówisz masz na timerze. $regfile = "m16def.dat" $crystal = 1000000 $hwstack = 32 $swstack = 8 $framesize = 16 Config Timer1 = Timer , Prescale = 1024 Enable Interrupts Enable Timer1 Start Timer1 On Timer1 Odmierz_czas Const T = 6942 Config Portb.1 = Output : Portb.1 = 1 : Led Alias Portb.1 Config Portb.2 = Input : Portb.2 = 1 :...
Poczytaj sobie w helpie o "debounce".
Nie ma to jak odpowiadac samemu sobie ;) Ale być może ktoś z tego skorzysta, więc podam przykałd: config portd = &B00000000 'wszystkie piny jako wejście na porcie D portd = &B11111111 'wymuszamy stan wysoki na wszytskich wejściach (podciagamy - port ma wudowane rezystory podciagajace) config debounce = 30 'zwiększamy opóźnienie eliminacji drgań styków...
przykład : Config Debounce = 30 Config Portd.1 = Output 'tx do vfd Config Portd.6 = Input 'enkoder Config Portd.7 = Input Set Portd.6 Set Portd.7 Config Portd.0 = Input 'przyciski po koleji : -v , +v , +/-a , wyświetlacz Config Portd.2 = Input Config Portd.3 = Input Config Portd.4 = Input Set Portd.0 Set Portd.2 Set Portd.3 Set Portd.4
Jak zacząć pisanie programu obsługującego przyciski, wyjaśnia przykład "Button" albo "Debounce" w środowisku Arduino IDE.
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...
Sensowną implementacją przycisku włączającego migający LED w Arduino może być poniższy kod: [syntax=c]const byte LED_PIN = 6; // PD6 const byte BTN_PIN = 0; // PD0 const uint16_t BLINK_TIME_PERIOD = 200; // [ms] const unsigned long DEBOUNCE_TIME = 50; // [ms] bool prevButtonState = false; bool debouncedButtonState = false; unsigned long lastButtonPressTime...
Po nazwach zmiennych strzelam, że jest to maszyna stanów do debounce przycisku.
Pewnie, jak to w życiu, coś trzeba będzie poprawić, ale możesz spróbować tak. Niektóre zmienne tam nie zostały użyte bo koncepcja się zmieniła podczas pisania ;) Przesunąłem przycisk i dodałem tez pin obsługujący wymuszenie trybu AT [syntax=vbnet]$regfile = "attiny45.dat" $crystal = 8000000 $hwstack = 32 $swstack = 32 $framesize = 64 Config Portb.2...
Jak napisać menu (np. 4 poziomy x 4 funkcje) Np: możesz zrobić tak że 4x4 to jest 16 stanów (lub w zależności jak to prezentujesz więcej). Więc piszesz funkcje która jest wywoływana gdy wciśnie się to MENU, a w funkcji pętle gdzie masz 16 warunków oraz jedna zmienna która wskazuje który stan jest obsługiwany. Zamiast warunków można użyć switch ale...
Ale mi nie przeszkadza działanie w oparciu o każde zakłócenie w eterze bo na tej samej zasadzie co robi się debounce przycisku tak można byłoby podejść do "debounce'owania" sygnału radiowego. Przykładowo oglądając filmy pana Sakowicza - https://www.youtube.com/watch?v=m_Znp9D-... - ewidentnie widać, że nie stosuje on nic ponad microswitch lub NE555...
Witam, mam mały problem mam ograniczoną możliwość dodania przycisków więc pomyślałem ,że np. naciskając dwa jednocześnie uzyskał bym trzeci ale nie wiem jak mam napisać tych parę linijek kodu do obecnych używam instrukcji Debounce
Możesz spróbować takiej protezy: [syntax=basic4gl]If Przycisk1 = aktywny AND Przycisk2 = aktywny Then Else Debounce ... Debounce ... End If[/syntax] Przed wejściem do Debounce sprawdzi przyciski i jeśli będą oba wciśnięte pominie Debounce.
W celu eliminacji drgań styków należy użyć przerwania licznika, by odczytywać stan przycisku tylko raz na około 10 ms . Nie używamy funkcji Debounce i delay_ms ! Czy przycisk został naciśnięty sprawdzamy w zmiennej globalnej dostępnej w programie głównym.
znaczy na wejściu bramki jest za duży prąd upływu To nie jest prąd upływu ale prąd wejściowy w stanie niskim, jest dość duży w klasycznych bramkach TTL i wynika z ich fizycznej budowy (obwodu wejściowego). U Ciebie ten prąd wejściowy płynie do masy przez R6 + R9 = 101 kΩ i wywołuje zbyt duży spadek napięcia, zmierz napięcie na wejściu tej bramki...
Może problem jest w wibracji przycisku, spróbuj komendy Debounce.
Wiatm mam mały problem. Może krótko. Chcę napisać program na at90s2313 który wyświetli mi jakis napis na lcd przy naciśniętym przycisku (pind.0 = 0) i wyświetli inny napis na lcd kiedy puszczę ten sam przycisk (pin.0 = 1) oczywiscie chcialbym wyelimionować drgania może za pomocą funkcji DEBOUNCE... ponieważ później w układzie chcę zastosować przekaźniki....
Proponuje to co zawsze. Pokaż nam listing a powiemy Ci co w nim nie gra (przynajmniej się postaramy). Co do LCD to możesz go dość często czyścić (sam zrobiłem to przez błąd w programie 10 razy na sek. fakt że się nie wyrabiał to już inna bajka). Na pewno nie ma to wpływu na wieszanie procka, tylko będziesz widział migaący chaotycznie wyświetlacz ewentualnie...
No właśnie jest to prawie ten sam kod co z książki. Else jednego z Ifów jest w niewłaściwym miejscu i wystąpi ten błąd o którym wspomniałem. A tak z ciekawości: dlaczego nie zastosujesz klasycznego Debounce?
Taki kod od biedy napiszesz nawet z użyciem chatGPT. W skrócie: - PWM generujesz przy użyciu timera, wyjście z timera podajesz na driver LEDów (tą część kodu wygenerujesz np. na stronie Microchipa, na której jest klikalny generator kodu). - reakcja na przycisk - poszukaj na elektrodzie np. super debounce, ale to też dobrze generuje chatGPT. Kolejne...
Poprawka (też pisałem z głowy :) ): Debounce Przycisk,0,Obsluga_przycisku,SUB 'przycisk zwierany do masy Loop '******** OBSLUGA PRZYCISKU Obsluga_przycisku: If Wlaczony_przekaznik=0 Then Przekaznik=1 Wlaczony_przekaznik=1 Else Przekaznik=0 Wlaczony_przekaznik=0 Endif Return
...czlowiek wciska przycisk i wykonuje sie intrukcja. Jednak mam pewne obawy. Jesli przycisk bedzie wcisniety zbyt dlugo, to intrukcja wykona sie iles tam razy. Jak to zlikwidowac? Użyj - stworzonej do tego - instrukcji Debounce . Piotrek
Gdybyś dokładnie spojrzał na przykłady dołaczone do biblioteki Bounce2 wiedział byś czego zapomniałeś ;) [syntax=c]#include <Bounce2.h> #define BUTTON_PIN 2 Bounce debouncer = Bounce(); byte digitBuffer[4]; int zmienna = 0; void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); debouncer.attach(BUTTON_PIN); debouncer.interval(100); // interwał w ms...
W bascomie jest specjalna instrukcje do obsługi przycisku DEBOUNCE Proponuje z niej skorzystać
Spróbuj tak: do Debounce Pind.0 , 0 , algorytmy ' Twój s1=pind.0 loop algorytmy: toggle A ' zmienna A jako bit If A=0 then Algorytm 1 sterowania wyników na LCD else Algorytm 2 sterowania wyników na LCD end if return Użycie debounce eliminuje drgania styków. Pozdrawiam.
Witam. Wypróbuj to: [syntax=basic4gl]Ddrb = &B11111111 : Portb = &B00000000 Ddrd = &B1100000 : Portd = &B0011000 Dim Pomoc As Byte 'zmienna zliczająca wciśnięcia przycisku Do Debounce Pind.4 , 0 , Wlacz , Sub Debounce Pind.3 , 0 , Wylacz , Sub If Pomoc = 1 Then Portb.0 = 1 'w zależności od stanu zmiennej pomoc If Pomoc = 2 Then Portb.1...
Ja nie używam debounce. Zazwyczaj stosuje konstrukcję: If PINX.x = 0 then waitms 20 if PINX.x = 0 then 'obsługa przycisku end if end if Zajmuje mniej.
If...Then to nie pętla... tylko warunek. Jeśli chodzi o przyciski to proponuje debounce który na pewno wyeliminuje drgania styków. Poczytaj tabelkę i zrób sobie podprogramy w których będziesz zwiększał głośność itd. Przykład: Debounce PINB.0 , 0, VOLUP, SUB .... .... .... VOLUP: I2CSEND ..... 'jakieś tam bity Return Dodano po 8 ... Powtórzone usunąłem....
Zobacz to: Dim Przycisk As Word , Czas As Integer , Czas_zamka As Integer Czas_zamka = 0 Czas = 0 Do Debounce Pinb.1 , 0 , Licz , Sub If Przycisk > 0 Then Incr Czas If Czas = 300 Then Przycisk = 0 Czas = 0 End If If Przycisk = 3 Then Portb.2 = 1 If Portb.2 = 1 Then Incr Czas_zamka If Czas_zamka = 300 Then Portb.2 = 0 Czas_zamka = 0 End If Waitms...
Kodzik jest przykładowy. Musisz myśleć :P Zwiększ te Waitms 10 pod Loop Until bo nawet mrugniecie oka trwa dłużej... Zwykłe "debounce" najczęściej ustawia się na 25ms a Ty masz 10...
Ad.1. W linku, który wskazałem odczytujesz stan pinu: [syntax=c] val = digitalRead(inPin);[/syntax] przypisując zmiennej val stan pinu. Stan pinu może być HIGH lub LOW wiec sprawdzasz zmienną na przykład tak: [syntax=c]if (val == LOW) { // gdy przycisk wciśnięty }else{ //gdy przycisk nie jest wciśnięty. }[/syntax] Kod dla przycisku zwierającego do GND...
Przyciski - DEBOUNCE Odliczanie - CONFIG TIMER i przerwania.
Hmm... w końcu używasz WAITKEY, więc zmienna Czekanie nie ma sensu. Dodatkowo: Czekanie = Ischarwaiting() wykonujesz przed obsługą przycisku i jakąś procedurą MAIN. Teraz jeśli w trakcie obsługi przycisku i wykonywania procedury MAIN wyślesz dane to nie zostaną one zapisane w EEPROMie Ja jednak przerobiłbym program i użyłbym INKEY. Sama obsługa...
Masz tu jakieś wyzwanie by nie używać bibliotek? Jak nie to zamiast robić debounce przycisków z delay użyj jakiejś: bounce2, onebutton, easybutton, itp. Gdybym miał zaświecić ledy w sekwencji 1000/500 to zrobiłbym wywołanie funkcji co 100ms, zliczał do lokalnej zmiennej static, które to wywołanie i dalej w switch case wybierał, że w 1 ma zaświecić,...
Kolego do przycisku użyj funkcji debounce i nie będziesz miał problemu z drganiem styków przycisku. Może napisz jak ma działać to urządzenie bo według mnie masz dziwny ten kod
Trochę słabo u mnie z niemieckim :D Po prostu chciałbym aby przycisnięcie przycisku powodowało zmianę jakiegoś stanu nazwijmy go STANPRZYCISKU I do warunku chciałbym dopisac if STANPRZYCISKU = 1 to warunek jest spełniony i jest on sprawdzany ciągle. Próbowałem już na wiele sposobów i nic z tego nie wychodziło. Po co ci tu znac niemiecki? Przestudiuj...
Dwie ważne rzeczy! Pierwsza to pamiętanie o napięciach. Jeśli teraz mierzysz na pinach 12V i podepniesz to na wejście cyfrowe Arduino (5V), to je spalisz. Druga rzecz to konieczność stosowania mechanizmu debounce w kodzie do sprawdzania stanu przycisków :)
Nie wiem jakiej wersji używasz. Poniższy kompiluje się na pewno w 2075 - specjalnie sprawdziłem :D [syntax=vbnet]$regfile = "m8def.dat" $crystal = 1000000 $hwstack = 40 $swstack = 16 $framesize = 32 '********* TUTAJ SOBIE USTAW JAK CI PASUJE ********** Pin_wyjsciowy Alias Portc.5 Przycisk Alias Pind.2 : Set Portd.2 Const 1_ilosc_minut_do_odliczenia...
[url=http://www.arduino.cc/en/Tutorial/D... masz gotowy przykład wykorzystania funkcji Debounce.[/code]
No to się doucz i będziesz znał. "Super" porada, ale przerwania nie sa tu konieczne. Naucz się też używać tagów. faktycznie, użyj znaczników(tagów) SYNTAX, bo czytać sie kodu nie chce. - wywal delay - wykrywaj zmianę stanu pinu a nie reakcję na określony stan, dla Arduino jest stosowna biblioteka (Debounce) ale można zrobić i bez niej, trzeba też zlikwidować...
marco47 - przepraszam, nie zauważyłem. marek19951 - proste if-then nie załatwi problemu. Jeżeli masz zapał, a widzę , że masz, zacznij od procedury obsługi klawiatury , która nie powoduje opóźnień poprzez martwe pętle ( czyli m.in wait, debounce, bitwait itp). Ja to zrobiłem na przerwaniu programowym z timer1, które odliczało mi okresy 10 ms w połączeniu...
Próbuję właśnie na timerze i fladze, ale nie działa tak jak chciałem. Powinno być tak, że po naciśnięciu dowolngo przycisku rusza timer i ustawia flagę B na 1. Jeżeli w czasie odliczania nacisnę drugi przycisk, to następuje start. I tak jest. Problem w tym, że gdy trzymam wciśnięty jeden przycisk i poczekam na skończenie odliczania ( B ustawia się na...
To https://www.arduino.cc/en/Tutorial/Debou... poczytaj.
Mam taki problem, którego rozwiązania nigdzie nie znalazłem, a sam nie potrafię zrobić. Potrzebuję zaprogramować Arduino w następujący sposób: wciskam przycisk i .............. Próbowałem, ale mi nie wychodziło. A może byś pokazał schemat jak to podłączyłeś do Arduino i chośby ten 'próbowany' 'nie wychodzący' program. Czy w tym projekcie stosujesz...
Zobacz to: $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B11111111 'wszędzie stan spoczynkowy-1 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 Do 'pętla nieskończona Debounce...
K.G. pozostawie twoj kod bez komenta. Co do mojego kodu jak sa to zwykle przyciski, powinienes jeszcze dac delaye lub uzyc debounce
Dodaj zmienną pomocniczą np. Dim Ktory_temp as bit Zmienna ta może przyjmować tylko stany 0 i 1. Dodaj se procedurę która w momencie naciśniecia przycisku będzie zmieniać wyświetlany czujnik. np. Do Debounce W1 , 0 , Przycisk , Sub Tutaj procedura odczytu DSów If Ktory_temp = 1 Then Pokaż T1 Else Pokaz T2 End if Przycisk: Toggle Ktory_temp Return...
A Twój program nie chce działać? Jaki jest problem. To co w programie masz nieprawidłowo to odczyt stanu przycisku. Procedura odczytu przycisku powinna przewidywać takie sytuacje jak drgania styków lub przypadkowe zakłócenia na linii przycisku. Jedną z możliwość odczytu przycisku jest: [syntax=basic4gl]If Wejscie = 0 Then Waitms 100 If Wejscie = 0 Then...
Złe nawyki z programowania w PLC? Spokojnie wszystko da się zrobić. Sprawdź komendę debounce - służy ona do eliminowania drgań styków ale jej druga zaletą jest w skoczenie do zdefiniowanej pętli tylko raz i można określć czy narastające czy opadające. Minus jest taki że trzeba cyklicznie wywoływać te komendy aby zadziałało - podobnie jak w PLC. Napisz...
If Pinb.2 = 0 Then Waitms 25 If Pinb.2 = 0 Then ... Zapoznaj się z Debounce !!! Do .... Debounce Pinb.0 , 0 , Dodaj , Sub Debounce Pinb.1 , 0 , Odejmij , Sub Loop Dodaj: Incr Zmienna 'lub zmienna = zmienna + {jakaś wartość} If Zmienna > {wartość końcowa} then Zmienna = {wartość początkowa albo wartość końcowa} Lcd...
Cześć. https://obrazki.elektroda.pl/1280991700_... Kuzyn poprosił mnie o zbudowanie tego ustrojstwa, bo posiada jedno wolne wejście we wzmacniaczu, a do podłączenia jeszcze trzy źródła dźwięku. Projekt powstał w dwa dni. Czterokanałowy selektor wejść do wzmacniacza. Nic szczególnego... Płytka - termotransfer. Program - BASCOM. https://obrazki.elektroda.pl/9048297700_...
W zamieszczonym kodzie nie ma tej linijki, ale próbowałem już funkcją Debounce, Bitwait, jak i w systemie 1/0. Przy tej ostatniej przytrzymanie przycisku powodowało ciągłe resetowanie czasu a przy debounce, działało tylko przy przytrzymanym włączniku.
OK, napisałem coś swojego, ale napotkałem jeden problem. Chciałem zrobić, aby dana funkcja zadziałała po przyciśnięciu i puszczeniu przycisku, więc napisałem coś takiego: (...) Debounce Przycisk , 1 , Subprzycisk (...) Subprzycisk: If Przycisk <> 1 Then Call Przycisk1 (...) Sub Przycisk1 (...) i dalej juz jest...
No to ja spróbuję przerobić Twoją opcję- przewaga jest taka że można mieć prawie dowolną ilość serw. A wada- dwa timery. No i te przyciski- debounce da się zrobić- ale ile razy masz wcisnąć przycisk żeby 5 serw wykonało 5x22 położenia? Albo część chociaż z ADC trzeba zrobić albo po jednorazowym wciśnięciu- otwórz chwytak a po drugim- zamknij. Da się...
Witam kolegów! Kolego Chrobek .Zmieniłbym pomiar prądu na silniku.Powinieneś zastosować wzmacniacz operacyjny w typowym układzie pomiaru prądu +12V przed silnikiem(rezystor szeregowy).Diody LED z rezystorem ok.1k umieściłbym równolegle z cewkami przekażników -pokazuje stan właczenia PK jak i również stan tranzystora(czy jest dobry). Żadne układy gasikowe...
Witam. Proszę o pomoc w zmianie sterowania z tych paru przycisków na jeden. Dokładnie chodzi o to, żeby można było zmieniać podprogramy jednym przyciskiem i żeby nie trzeba było czekać na zakończenie podprogramu lub resetować. Z góry dziękuje. [syntax=basic4gl] $regfile = "m644pdef.dat" $crystal = 16000000 Config Lcd = 16 * 2 'wyświetlacz 16*2 Config...
panowie mi chodzi o prosty program, który będzie obsługiwał krótkie i długie naciśnięcie przycisku. Napisałem nowy kod, wydaj mi się że powinien być ok ale bascom sypie błędy z end if i nie mam pojęcia dlaczego? 'ustawienie nazw Przycisk Alias Pind.0 Dioda Alias Pinb.7 Dioda1 Alias Pinb.6 'ustawienie zmiennych Dim A As Byte A = 0 Przycisk = 1 Dioda...
Podam w takim razie jeszcze moje rozwiązanie pozbawione błędu "repeat" przy długim wciśnięciu i posiadający bardzo skuteczny filtr antydrganiowy. Z oczywistych względów program jest w C, ale jeśli w arduino można bezpośrednio pisać do rejestrów to to nie będzie problemów z jego adaptacją :) [syntax=c] int lk, licznik; int main(void) { DDRB=0b00000000;//port...
Witam. Mam coś trudniejszego i przydałaby się mała pomoc. Chce podłączyć 3 przyciski do arduino i napisać kod żeby każdy sterował wszystkimi 3 servomechnizmami. Z tym ze: 1 przycisk : Servo 1, 2, 3 obraca się o 90 stopni 2 przycisk: Servo 1obraza się o 90 stopni Servo 2 o 0 Servo 3 o 90 3 przycisk : Servo 1,2,3 obracają się o 90 stopni. Z góry dziękuje...
Drgania eliminuje poprzez waitms 100 tak mi się wydaje. To kompletnie źle ci się wydaje :) Od drgań jest debounce
troche przesadzona... po co ta zmienna STAN, skoro w zasadzie nic z nia nie robisz? jak zwykle pochwale sie swoim podejsciem do sprawy, ktore uwazam za dosyc minimalistyczne: int debounce(void) { int stan; stan=PORT&MASKA_WSZYSTKICH_PRZYCISKO... delay(); if(stan!=PORT&MASKA_WSZYSTKICH_P... stan=0; return stan;...
Jak to zrealizowac w kodzie? dokladnie tak jak napisal mietekn - porownujesz stan portu ze stanem z poprzedniego porownania - jesli sie zmienil (XOR) - to cos sie stalo - przycisk zostal puszczony/nacisniety. inne operacje logiczne pozwola wykryc tylko wcisniecie, albo tylko puszczenie przycisku. przykladowy kod, tym razem na ARMa, pracujacy nie w...
Przechowuj typ wyświetlanych danych w zmiennej. Wartość zmiennej zmieniaj po naciśnięciu przycisku (pamiętaj o debounce). Ekran odśwież po zmianie zmiennej. Rodzaj danych wyświetlaj warunkowo zależnie od wartości zmiennej typu wyświetlanych danych. Gotowe.
Spróbuj kodu ze zwiększonym opóźnieniem Dodano po 2 Czy za każdym razem jak postoi jakiś czas i uruchomisz to urządzenie to godzinę chodzi Dobrze a później się dalej pojawia ten problem?
...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...
Do obsługi przycisków w Bascomie służy "DEBOUNCE"
Wszystko zależy jak rozwiązano w danym przypadku sposób liczenia interwałów taktowania zegara, ale typowo w elektronicznych układach odmierzających czas są montowane te typowe kwarce 32768 kHz w cylindrycznej oprawce. Owe kwarce znajdziesz w zegarkach czy to wskazówkowych kwarcowych z budzikiem czy też w płytach głównych PC :) Jeżeli przycisk masz na...
Odpowiedzią na twoje kłopoty jest instrukcja DEBOUNCE, gdyż: 1. Potrafi wywoływać podprogramy przy dowolnym stanie linii portu, 2. Przycisk raz naciśnięty i puszczony wywołuje podprogram tylko jednorazowo, 3. Filtruje drgania styków przycisków które potrafią narobić niełego bigosu początkującym, 4. Jest elegancka, pewna i uszyta "na miarę". PS. Atmega...
A może DEBOUNCE?
Hallotron :) Jeżeli chodzi o drgania styków to tak samo występują jak przy przycisku. Programowy debounce albo filtr RC wystarczą Hallotron potrzebuje prądu do działania.
Nic z tego nie rozumiem więc powiem, że Debounce Pind.0 , 0 , procedura1 , Sub uaktywni się gdy przycisk przełączy końcówkę ze stanu wysokiego w niski i pozostanie w stanie niskim odpowiedni czas. Debounce Pind.0 , 1 , procedura1 , Sub odwrotnie Teraz zastosuj to do swoich przycisków. Jeśli po nacisnięciu przycisku wystąpi 0 zastosuj pierwszą Debounce,...
wykluczyc drgania mozesz za pomoca funkcji debounce, albo tak: if s1=0 then 'przycisk jest wcisniety waitms 45 ' czekaj az mina drgania if s1=0 then ' gdy przycisk jest nadal wcisniety to zrob: end if end if Pokaz (najlepiej na schemacie) lub wyltumacz jak masz podlaczony przycisk do procesora. Poza tym wytlumacz mi, co dokladnie ma robic twoj kod...
Podaje program z komentarzem. ............ Ps. Nie ładowałem do licznika wartości bo potrzebuje dwóch pełnych przeładowań. W programie jest zupenie nie ważne ile tych przepełnień wystpuje; istotne aby rachunek odmierzanych odcinków czasu był zgodny z zamierzonym. Skoro jesteś zmuszony zliczać przepełnienia (co jest rzeczą absolutnie normalną), więc...
Strasznie kombinujesz. Zobacz przykład z blinkWithoutDelay, wywal led, wrzuć tu zmienna do odmierzania czasu, jeśli jest większa od zera to ją zmniejszaj, odliczanie gotowe. Dalej w kodzie gdy PIR wykryje ruch ustawiaj zmienną na czas działania, zawsze dopóki PIR będzie wykrywał ruch ma ustawiać tą zmienną na czas startowy - resetuje ją. Potem zajmij...
Wydaje mi się, że to: [syntax=vbnet]if przycisk_wyzwolenia = 1 then sygnal = 0 enable int1 '<--- czyli to end if[/syntax] [syntax=vbnet]Impuls: Wyzwolenie = 1 '<--- i bezpośrednio to incr sygnal If Sygnal = Czas Then Wyzwolenie = 0 sygnal = 0 disable int1 end if Return[/syntax] niezależnie kiedy odczyta powinno wyzwolić w jednym i tym samym momencie...
https://obrazki.elektroda.pl/2540869000_... Cześć. Dawno nic nie dłubałam, a ostatnio z roboty przytargałam kilkanaście płytek od jakiś TV, czy monitorów z odbiornikami IR i dwukolorową diodą R/B, aż żal było czegoś z tego nie zrobić. Niedziela upłynęła na projektowaniu i montażu tego urządzonka. Odbiornik nie reaguje na żaden konkretny...
Po jakiego czorta funkcje te zwracają liczbę pseudolosową? Kod pod PC często tak testuje i przenoszę do uC. Testowanie na mikrokontrolerze jest mało efektywne, zważywszy na brak technik typu Code Coverage czy Function Coverage. Albo ciekawsze testy jak symulacja zachowania EEPROM dla algorytmu emulowania EEPROM w Flash, jak błędy podczas kasowania,...
zmieniłem w ten sposób, ale nadal zerowa reakcja. Mam dziwne wrażenie że jeśli jest debounce to nic się nie dzieje. Jeśli jest If S1 = 0 to wtedy dział. co jest grane Do 'nieskończona pętla Do...Loop Debounce S1 , 0 , Pr1 , Sub 'jeśli naciśniety przycisk S1, 'to skok do podprogramu Pr1 Debounce S2 , 0 , Pr2 , Sub 'jeśli naciśnięty przycisk S2, 'to skok...
Poczytaj w helpie polecenie " Debounce "
Witam No to edekk mnie pocieszyłeś :-) muszę jutro do elektronika podjechać i zakupić kilka części. Co za kobieta, miała na kartce napisane jaki kwarc ma być ( właśnie sprawdziłem tą kartkę i jak byk jest wartość 32.768kHz ) to ponad w 3.2MHz. Mam jeszcze takie pytanko. Zrobiłem sobie menu do ustawiania poszczególnych parametrów ( nastaw) poruszam się...
https://hackaday.com/2015/12/09/embed-wi...
Proszę. Twój programik ponad 20% chudszy ;) Pewnie jeszcze by się coś znalazło :D [syntax=vbnet]$regfile = "attiny2313.dat" $crystal = 1000000 $hwstack = 32 $swstack = 4 $framesize = 38 '* Konfiguracja wyświetlacza * Config Lcdpin = Pin , Rs = Portd.6 , E = Portd.4 , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 Config Lcd = 16 * 2 Deflcdchar...
Przetestuj ten. Tak go poopisywałem, że aż mi się nie podoba :D [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 '# wyświetlacz 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 Cls '# timer ' 8000000Hz(8MHz)/256(Prescaler)=...
Ten przykład działa, ale tylko dla jednego "przełącznika" ale gdy robie np dwa kolejne to już coś jest źle. Buduje urządzonko, które będzie załączać 3 przekaźniki: - 3 przyciski (portd.4, portd.5, portd.6) - 3 przekaźniki (portd.1, portd.2, portd.3) Jak to można zrobić w BASCOMie?? Kod dla w/w konfiguracji: Config Debounce = 30 Config Portd = Output...
Ja bym stawiał na brak debounce. Skoro sprawdzany jest stan przycisku to pewnie on do czegoś służy. Może do wyświetlenia informacji na wyświetlaczu. Jeżeli brak debounce to przerwanie to wywoła się pewnie z kilkanaście razy. Może być tez tak ze przepełnia się stos, kilkanaście razy 32 bajty.... i koniec RAM, procek sie resetuje. Ale to tylko zgadywanie...
a może po prostu użyj DEBOUNCE w pętli DO...LOOP
Tylko że koledze chodzi o coś zupełnie innego. a sądzisz , że taki problem można rozwiązać tylko za pomocą przerwania? Nie, ale informuję że problemem jest co innego. On na pewno wie jak zrobić zmianę stanu pinu przy naciśnięciu przycisku. Po prostu nie wie jak zrobić "wielowątkowość". Debounce akurat jest najgorszym rozwiązaniem bo wstrzymuje działanie...
To co mi udało się zbudować to zlicza 3 impulsy na 4 wraca do zera ale trzymając przycisk program zapętla i cały czas zał. wył. Wraca do zera, bo po trzecim zerujesz licznik i program nie ma szans osiągnąc stan licznika 4. Ten delay przed zerowaniem licznika tylko zatrzymuje program na ten czas, a ty oczekujesz że 'przeskoczy ' zerowanie. Poza tym...
...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...
A liczy cały czas tak w ogóle, czy chwilę po tym jak puścisz przycik? Poczytaj o funkcji debounce - usuwanie drgań z przycisku...Może to tego wina... I poczemu w tym ifie masz pom?? Nie wystarczy if impuls=o then incr... ;lcd...? Dodano po 2 No i co to robi w tym dziale (vhdl pla etc...?)
Aby wykonać taki generator na Atmedze możesz posłużyć się sprzętowym PWM'em. Prawdopodobnie obsługa przycisków nie działa Ci prawidłowo ponieważ na linii występują zakłócenia, a także drgania styków. Nie wiem jak wygląda schemat, ale dobrą praktyką jest podciągniecie linii do plusa wewnętrznie lub zewnętrznie w przypadku, gdy oczekujesz stanu niskiego....
Zawsze co dwie głowy to nie jedna bo każdy widzi to inaczej :D Najprostszym zabezpieczeniem przed inkrementowaniem tej zmiennej w kółko (zablokowanie pilota) jest sprawdzanie czy to wciąż ten sam kod z pilota. [syntax=vbnet]Dim Command As Byte ' komenda z odebrana z pilota Dim Piloty As Byte , Old_piloty As Byte Zeruj_piloty Alias 0 Pilot_1 Alias 34...
sylwunia35: kondensatory przy microswitchach - dobry pomysł, zaraz spróbuję. Debounce - zły pomysł: debounce odkłóca przyciski ale nie w sensie zakłóceń z sieci tylko niweluje mikrodrgania styków. Zresztą i tak piszę w C gdzie mam napisane własne procedury debounce działające analogicznie. sp3ots: Czemu dać podciąganie programowe? Czy podciąganie zewnętrznym...
Witam! udało się! dodałem do programu debounce i blokady czasowe które defacto wyeliminowały wszystkie błędne impulsy! teraz działa poprawnie oto zmodyfikowany kod, może komuś się przyda:) // Definiowanie pinów dla wejść i wyjść #define A0_PIN A0 #define A4_PIN A4 // Zmieniono z A1 na A4 #define A2_PIN A2 #define A3_PIN A3 #define OUTPUT_2 3 #define...
niestety w obu kodach brakuje czegoś co by dodawało cokolwiek do zmiennej A, więc nie przyjmie ona nigdy wartości 1 lub 2 skoro na początku się ją zeruje. Jesli chodzi o podciągnięcie programowe to nie działa (dałem rezystor zewnętrzny). Próbowałem tak i działa: config debounce = 50 ' 50ms dla przycisku dim a as byte ' deklaracja zmiennej a=0 ' zerowanie...
Witam, Problem polega na tym, że chciałbym aby zgrzewanie włączało się od razu po naciśnięciu tego przycisku, a po zgrzaniu odliczał te 3 sekundy w celu zablokowania możliwości ponownego zgrzewania przez ten czas. Nie, absolutnie nie taki algorytm potrzebujesz do obsługi załaczenia zgrzewania... Jeżeli przycisk ma powodowac załączenie zgrzewania, które...
hmmm nikt tu nei wtracil pewnego waznego problemu, a mianowicie o fachowej nazwie "debounce". Tzn. ze w momencie wcisniecia przycisku an styku pojawiaja sie drgania i uP odbiera to jako kiklakrotne wcisniecie, wiec muszisz to rozwiazac sprzetowo albo programowo. Programowo przez odczekanie ok. 30 ms po zadzialaniu przycisku zanim odczytasz stan.
To jeszcze masz rotate, Left. I zapoznaj się z debounce do obsługi przycisków. A dopiero po zapoznaniu się z przerwaniami i sub-ami będziemy myśleć o 3-krotnym naciśnięciu przycisku. Jeszcze jedno- w szereg z wyjściami procesora na ULN daj jakieś oporniki- 200om do 1kom- dla bezpieczeństwa procesora. A sterowanie szybkością obrotów sprawdź zmieniając...
Proszę kolego. Wolę się pobawić niż spierać o to kto jest mądrzejszy. To mój pomysł i metodę losująca można zastosować każdą inną. Miało być krótko. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 Config Portb = Output Config Pinc.1 = Input : Portc.1 = 1 : Przycisk Alias Pinc.1 Dim X As Byte Dim Miliseconds As Word , Powtorz As Byte 'na starcie...
przycisk debounce debounce debounce przerwania debounce
koszt roboczogodziny baterii ryobi panda elektryczne
rower elektryczny manta spk5210
Wymiana płyty głównej w smartfonie Motorola Dreambox 900 UHD 4K - brak internetu, naprawa