Przedstawiony poniżej poradnik, pokazuje w jak prosty sposób dodać można do modułu Arduino (lub podobnego, jak np. Raspberry Pi) przycisk pojemnościowy. Tego rodzaju przycisk może być dowolnego kształtu i rozmiaru i zamontowany może być w dowolny sposób na nieprzewodzącym podłożu. Czyni to go idealnym do integracji z rozmaitymi elementami o nietypowych...
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...
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...
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...
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...
Witam ponownie, udało mi się popchnąć problem do przodu. Obsługa przycisku działa tak jak było założone, jednak pojawił się kolejny problem, ale trudno, będę musiał go rozwiązać :) Otóż obsługę przycisku dałem w tej funkcji: Dodano po 2 Udało mi się rozwiązać problem z ciągłym wykonywaniem "ELSE" w funkcji "Przycisk_Garaz". Otóż ową funkcję zamieniłem...
Potrzebuje pod ARDUINO przygotować program do sterowania trzema diodami LED które będą odpowiednio świecić po wciśnięciu przycisku. Po podłączeniu prądu żadna ma się nie zaświecić Po wciśnięciu przycisku ma zapalić się 1 i 2 dioda. Po kolejnym wciśnięciu ma palić się 2 i 3 dioda i po 30 sekundach mają wszystkie zgasnąć. Najlepiej żeby jeszcze przez...
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...
Witam, Mam problem z programem realizowanym w środowisku Arduino, konkretnie z przejściem z jednej funkcji do drugiej. To problem czysto programistyczny, więc nie ma chyba sensu wchodzić w szczegóły samego układu - w skrócie własny projekt PCB z Mega 328. Szczegóły: 1) program startuje ze zmienną freespinActive=0 , w pętli loop sprawdzam za pomocą funkcji...
Witajcie. Popatrzyłem na inne tematy w google, na elektrodzie itp. ale nie mogę znaleźć satysfakcjonującej odpowiedzi :D Otóż mój problem polega na tym, że chcę sterować moją super lampkę jednym przyciskiem. Niestety po wielu próbach cały czas jestem niezadowolony z rezultatów. Tryby pracy przeskakują to z I=1 do I=3 itd. Ogólnie cały układ albo pracuje...
Witam. Wypróbuj to: Witam Dzięki kolego jacekk232 twój program działa wyśmienicie :D, tak właśnie chciałem żeby działał.Teraz na przykładzie twojego kodu, już będę wiedział jak pisać program z wykorzystaniem switchy i funkcją debounce.Powiedz mi tylko czemu nie działał mój program z elseif co tam było zle napisane. Jeszcze raz dzięki za pomoc. Pozdrawiam...
Muszę zrobić około 40 liczników z wyświetlaczami, które będą zliczały wciśnięcia przycisków. Każdy z nich podpięty będzie tylko do jednego przycisku (jedno wciśnięcie zwiększa wyświetlaną liczbę o jeden). Potrzebna jest również możliwość resetowania wszystkich liczników naraz. Póki co mam dwie koncepcje. 1. Przy każdym przycisku zamontować gotowy układ...
Program działa. Myślę że teraz jest dobrze. [syntax=c]#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F,16,2); #include <Bounce2.h> #define BUTTON1_PIN 2 #define BUTTON2_PIN 3 Bounce debouncer = Bounce(); byte digitBuffer[4]; int x = 0; void setup() { pinMode(BUTTON1_PIN, INPUT_PULLUP); pinMode(BUTTON2_PIN,...
A więc króciutki program testujący debounce. Działa ale dziwnie jakoś. Na portach PD0 , PD1 są klawisze z aktywnym stanem 0 Na portach PA0 , PA1 mam podłączone ledy. Założenie Po nacisnięciu klawisza PD0 zapal diode na PA0 Po nacisnięciu klawisza PD1 zapal diode na PA1 program działa tak że Po nacisnięciu klawisza PD0 zapal diode na PA0 oraz PA1 Po...
Witam i wracam do tematu. Po co stosować dodatkowe elementy RC skoro można zrobić to programowo - wystarczy pokombinować. Także czekanie na zwolnienie przycisku jest zbędne. Jak wyobrażasz to sobie bez czekania na zwolnienie przycisku? robiw Nie chce mi się po raz enty pisać jak to się robi. Tak sobie to np wyobrażam: jakkolwiek zwolennikiem Arduino...
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?
Podłączylem 3 microswitche poprzez rezystor 470r do masy, lecz nie działają - wymieniałem procesor i jest to samo. Odczytuje stany przycisków funkcją if, oraz debounce - w celu sprawdzenia czy odczytuje stan przycisku poprawnie, zapala diodę led. Tzn, ma zapalać bo tego nie robi. Dioda działa, połączenia też są ok. Niestety wcale nie działa. na początku...
Cześć Mam problem z moim arduino i paskiem neopixel. Chcę zrobić lampkę rowerową ale nie mogę zaprogramować funkcji pod przycisk. Udało mi się zrobić coś takiego, że po wciśnięciu jest stały czerwony później stały niebieski ale jak chcę zapętlić tęczę albo theaterChase to przycisk przestaje działać i nie mogę włączyć kolejnej funkcji. Czytałem, że to...
Witam po dłuższej przerwie. Więc tak. "Wrzuciłem" program podany przez kolegę arktik1 w ten, który obsługuje termometr jednak nie wiem czy zrobiłem to dobrze, tzn czy w dobrym miejscu. Objaw jest taki że termometr działa ale zmiana stanu średnio. Objawia się to jakby niestabilnością programu odpowiadającego za przesuwanie stanu. Działa jakby z opóźnieniem,...
[url=]Tutaj masz gotowy przykład wykorzystania funkcji Debounce.[/code]
Z preskalerem 64 ustawiłem wartość na OCR1A =249. Mam pytanie odnośnie eliminacji drgań styków. Pod spodem zamieszczam funkcję którą wykorzystałem ale nie przyniosła oczekiwanych rezultatów, ponieważ muszę długo przytrzymać przycisk aby naciśnięcie spowodowało wejście do funkcji. Przeczytałem, że można zrobić to za pomocą timerów ale nie wiem w jaki...
Może problem jest w wibracji przycisku, spróbuj komendy Debounce.
....... zapala się pierwsza i nie chce gasnąć i zapalić kolejną po następnym wciśnięciu. Czego zapomniałem ? Zapoznaj się z przykładem: File / Examples / 02.Digital / Debounce. Być może tu masz problem. Nawet najlepszy mechaniczny switch ma pewną ilość drgań. Każde z nich rejestruje incrementacje zmiennej liczącej naciśnięcie przycisku. e marcus
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....
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, potrzebuję pomocy z kodem do Digisparka. Wszystko ładnie pięknie śmiga ale chciałbym rozpoznawać prócz ilości przyciśnięć również długość (czas) przyciśnięcia np. do 0.5s krótkie przyciśniecie a przytrzymanie powyżej 1s jako długie przyciśnięcie. Wszystkie próby zakończyły się fiaskiem i postanowiłem poprosić o pomoc :) Poniżej kod z nieudaną...
Witam mój problem polega na tym że nie potrafię sobie poradzić z podprogramami przeczytalem ten temat ale autor dał za wygraną i zastosował przełączniki hebelkowe co mnie nie ratuję.Tak wygląda mój program: [syntax=cpp] int ledPina = 3; int ledPina7 = 7; int ledPina8 = 8; int ledPina10 = 10; int ledPina11 = 11; const int button = A1; const int buttonA0...
Witam, Próbuje dopisać funkcję wprowadzania daty i czasu za pomocą klawiszy w Bascomie na scalaku DS1307, problem mam taki ,że nie widzę nastaw online :-) tylko dopiero po wyjściu z menu i nie wiadomo do końca co się wpisało . Dodano po 3 zrobione może się komuś przydać , [syntax=vbnet] $regfile = "m644pdef.dat" ' specify the used micro $crystal = 16000000...
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...
Witam serdecznie! mam taki pytanie odnosnie wykrywania stanu portu przez instrukcje debounce. Otoz jezeli w kodzie BASCOMU zadeklaruje jakis port jako input, do tego poryu podlaczony bedzie wylacznik zwierajacy do masy to czy instrukcja debounce bedzie w stanie wykryc zarowno stan wysoki (1 - gdy przycisk zierający do masy bedzie puszczony)jak i niski...
LTC2955 to nowy kontroler zasilania obsługujący pojedynczy przycisk monostabilny. Układ ten pozwala na włączanie i wyłączanie zewnętrznego stabilizatora z wyprowadzonym wejściem /SHDN. Układ posiada wszystkie potrzebne do obsługi przycisku moduły, w tym debouncer, pozwalający na wykorzystanie, np. zwykłego microswitcha. Układ ten posiada wyjście podłączane...
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ć,...
Wklejam wysyłam silnik 2 sekundy kręci się z małą prędkością później przyśpiesza i tak zostaję więc nie działa [syntax=cpp]#include <Timers.h> const int buttonPin = 2; // the number of the pushbutton pin const int ledPin = 6; // the number of the LED pin // Variables will change: int ledState = HIGH; // the current state of the output pin int...
Ok, mam już rozwiązanie :) Znalazłem na oficjalnej stronie Arduino przykład "Switch", dodałem tylko potrzebne mi opóźnienie po sekcji state = LOW; i kodzik działa idealnie. Gotowiec, jakby ktoś potrzebował ;) [syntax=c]/* switch * * Each time the input pin goes from LOW to HIGH (e.g. because of a push-button * press), the output pin is toggled from...
Trochę nie mam czasu, żeby napisać Ci gotowy kod, ale myślę, że po zapoznaniu się z [url=]tym dokumentem sam sobie poradzisz.
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...
Zamiana pinu przekaźnika z przyciskiem rozwiązała problem :) Nie zauważyłem wcześniej, że tylko na pinie 13 przy rozruchu jest stan wysoki. W kodzie, który podałeś (at)kaczakat trzeba było zmienić w pętli: [syntax=arduino]czas_zg = potencjometr;[/syntax] na [syntax=arduino]int czas_zg = potencjometr;[/syntax] wcześniej program ignorował wartość czasu...
Witam. Chciałem się podzielić moim projektem który pozwala na obsługę przekaźnika i włączenie go na 5min za pomocą przycisku chwilowego. Oraz sterowanie z aplikacji włączaniem i wyłączaniem przekaźnika na WeMos D1 Mini. Konfigurację aplikacji daję w załączniku. Elementy potrzebne do budowy projektu, 2 x przekaźniki (lub dowolna ilość) Arduino Nano (lub...
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;...
.... ja to zrobiłem troszke inaczej.... :) nie wiem na ile takie rozwiązanie jest dobre ale u mnie działą.... $crystal = 8000000 ''''''''''''''''''''''''''''''''''''''''... ' Program: prog002 ' Opis: moj pierwszy program ''''''''''''''''''''''''''''''''''''''''...
"nie wiem jak w ATtiny zadeklarować za pomocą dyrektywy &B00001111 bo ma tylko 6 pinów . " Zacznij od podstaw, bo ich nie znasz, inaczej nic z tego nie będzie. Każdy pin to cyfra po znaku &B, jeśli deklarujesz 3 porty to piszesz &B111 a jeśli 10 to &B1111111111. Takie rzeczy są za banalne by rozpisywać się na forum. możliwe ale każdy kiedyś zaczyna...
Witam. Zaczynam dopiero swoją przygodę z programowaniem i już napotkałem problem, na pewno bardzo prosty, ale niestety nie potrafię sobie z tym poradzić ! Chciałem napisać prosty program ktory za pomocą przycisków (switch) będzie załączał i wyłączał, czyli S1 = załącz/wyłącz -led S2 = załącz/wyłącz -led S3 = załącz/wyłącz -led itd... aż do 7 próbowałem...
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...
W konfiguratorze LCD ten pin nie występuje w ogóle, więc w sumie nie wiem jak zadeklarowac, że go sie w ogóle używa.... Z częstotliwością nic nie grzebie, więc jest fabryczna, w kodzie mam polecenie " $crystal = 8000000 " . Tu jest ciekawy wątek o wysterowaniu wyświetlacza za pomocą R/W: Może coś nie podłapałem... Chociaż wychodzi na to, że ma to byc...
Czy to rozwiązuje problem ze źle działającym programem? Trudno dojrzeć błąd gdy w kodzie jest bajzel, więc tak, ustrukturyzowanie zadania i porządek w kodzie zwykle rozwiązuje problem. W tym przypadku aż się prosi o skorzystanie z wzorca projektowego Stan. Mamy trzy stany pracy, nazwijmy je Idle (lampki się nie świecą), Run (wykryto ruch, lampki zostaly...
Super. Teraz jeżeli potrafisz dodaj do programu efekt tasowania liczb w segmentach. Efekt będzie się włączał co pełną minutę , trwał przez 5 sekund i wróci na wyświetlanie czasu. Oczywiście, mogę dodać taki efekt. Poniżej znajduje się zmodyfikowany kod programu, który będzie wykonywać efekt tasowania liczb co pełną minutę, trwając przez 5 sekund, a...
Cześć wszystkim, napisałem sobie moduł zegara RTC w Verilogu. Proces jest synchroniczny, początek wygląda mniej więcej tak: [syntax=verilog]always (at)(posedge clk or posedge rst_i) begin if(rst_i) begin h2 <= 0; h1 <= 0; m2 <= 0; m1 <= 0; s2 <= 0; s1 <= 0; //licznik1Hz <= 0; end else if(btn_i[0]) begin m1 <= m1 + 1; end else...
Działanie programu: Naciśnięcie przycisku S1 będzie zmieniał stan diody D1 na przeciwny, naciśnięcie przycisku S2 będzie zmieniał stan diody D2 na przeciwny. Program: $regfile = "m8def.dat" $crystal = 1000000 Config Pind.0 = Input Config Pind.1 = Input Config Pind.2 = Output Config Pind.3 = Output Led1 Alias Pind.2 Led2 Alias Pind.3 S1 Alias Pind.0...
Witam kolegów ponownie prasa na razie pracuje na przekaźnikach , a mam nowy programik i pytanie czy jest on poprawny czy jest możliwość prościej go napisać . Na płytce startowej (samoróbce) widać że działa z założeniami. [syntax=vbnet]$regfile = "m16adef.dat" $crystal = 4000000 $hwstack = 40 $swstack = 16 $framesize = 32 Config Porta = Output Config...
Zbudowałem sobie nadajnik i odbiornik 2,4 Ghz z modółem NRF24l01 , sterowanie serwomechanizmami wszystko ładnie pięknie działa , lecz chodzi mi jeszcze o zastosowanie bezprzewodowo 2 przełączników i za nic w świecie nie wiem w jaki sposób to zrobić... ............................ .............................. Czyli jak nikt nie pomoze , męcze sie...
Witam mam problem z napisaniem programu, jestem początkujący także proszę o wyrozumiałość. Chodzi mi o takie rozwiązanie: naciskam przycisk i jeżeli będzie on przytrzymany przez minimum np 5s to wykona się instrukcja jeśli krócej to oczywiście nic. Napisałem coś takiego ale niestety nie działa: Oczywiście ten kod nie może funkcjonowac zgodnie z oczekiwaniami;...
Proszę o pomoc. Jak opracować obsługę przycisku bez zatrzymywania programu głównego? Chodziłoby mi o coś w rodzaju debounce w bascomie. bardzo proszę o pomoc z góry dziękuje
Napisałem program z instrukcją debounce : Debounce Pinb.0 , 0 , Pr , Sub If A = 0 Then warunek 1 Else warunek 2 End If Pr: Toggle A Return Dzięki
Próbowałem ale zmiana trwa bardzo długo ze względu na konwersje temp dla DS'a (750ms). Nieraz trzeba było czekać aż 10s aby trafic idealnie przyciskiem w miejsce programu :D Wykombinowałem takie coś: Ustaw: Sub Ustaw_temp Debounce Pind.4 , 0 , Up Debounce Pind.3 , 0 , Down Temp = Fusing(i2 , "00.0") Cls Locate 1 , 2 Lcd "Ustaw...
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...
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.
Zamiast Portd.0 = 0 Portd.1 = 0 trzeba wstawić Set Pind.0 Set Pind.1 i działa tylko ze ja jeszcze zmieniłem żeby działało na stan niski było tak i działało na stan wysoki Debounce Pind.1 , 1 , Zmien0 , Sub a ja zrobiłem tak i działa na stan niski Debounce Pind.1 , 0 , Zmien0 , Sub A oto cały kod $regfile = "attiny2313.dat" $crystal = 8000000...
Cześć, musisz wiedzieć jak mikrokontroler wykonuje program żeby to zrozumieć. Mikrokontroler wykonuje program linia po linii , czyli najpierw konfigurujesz port a(linia 1.) potem go ustawiasz(linia 2.). W linii 7. definiujesz zmienną a w linii 8. nadajesz jej wartość. Do tej pory idzie gładko mikrokontroler linia po linii wykonuje twoje polecenia. Zabawa...
Witam, zbudowałem jakiś czas temu zegar LED-owy, z wykorzystaniem taśmy LED i atmegi16. Napisałem do niego program w Bascomie i wszystko niby działa poza jedną rzeczą. Mianowicie nie działają przyciski mające ustawiać czas na zegarze. Czy ktoś byłby tak miły żeby wskazać mi błąd ? :) Program: [syntax=vbnet]$regfile = "m16adef.dat" $crystal = 8000000...
Po uruchomieniu/resecie jest włączony bo zmiennej statestbyLED przy deklaracji nadałeś stan HIGH, więc w kodzie od razu włącza podążający za jego stanem przekaźnik. Dioda led ma się wyłączać natychmiast, przekaźnik po opóźnieniu. Możesz sobie przenieść wyłączenie leda za wyłączenie przekaźnika (lub tylko statestbyLED = LOW; i wyłączy się w następnym...
i wywal alisay (wiem że to ułatwienie ale wydaje mi się że program jest czytelniejszy bez tego) napisz : config debounce = 25 config porta.3 = input set porta.3 debounce pina.3 ,0 , 'podprogram' nie ma h... we wsi musi działać chyba że skopałeś coś na płytce , oczywiście a.3 jest tu tylko przykładem , ty musisz wpisać port pod którym masz ten nieszczęsny...
To wszystko o czym mówisz Pawle mam zachowane wiem ze porty wejściowe maja być podciągnięte do VDD(zasilania), u mnie w aducu ma byc jeszcze wpisane zero do rejestrów poru. Klawiatura mi działa, ale chodzi mi o to że nie mam tego zabezpieczenia przed przytrzymaniem przycisku przez dłuższy czas. Chciałbym żeby procesor nic nie robił wtedy, bo program...
Dziękuję Freddy ale wejść jest 23. Nie bardzo rozumiem co do powyższego ma ilość wejść. Nie wiem jaki wynik można osiągnąć ale mogę spróbować sobie popstrykać albo postrzelać karabinkiem ASG do wyłącznika. Mi raczej chodzi o kod który będzie odporny na takie strzelanie. np taki : [syntax=c]ISR(TCC0_OVF_vect) { uint8_t i; for(i = 0; i < inputPortNumber;...
Właśnie i tego się bałem ze jak wcisnę przycisk i go trzymam to przełanczaja sie kolejne programy Tak to wlasnie jest gdy increamentacja lub decr. zmiennej jest umieszczona w petli 'do...loop' i jest warunkowana poziomem na okreslonym wejsciu. Za kazdym "obrotem' petli zawarte w niej polecenia sa bezblednie wykonywane, przedzielone ustawionymi czasemi...
Witam wszystkich. Mam mały problem a mianowicie robię sobie sterowanie samochodzika na podczerwień i nie wiem jak zrobić żeby przy naciśnięciu 2 switch'y procek wysyłał kod. poniżej pokazuje co udało mi się napisać: $regfile = "m8def.dat" $crystal = 1000000 Config Pinc.1 = Input Config Pinc.2 = Input Config Pinc.3 = Input Config Pinc.4 = Input...
witam Program steruje dwoma diodami(Led1 Portd.2, Led2 Portd.3). Klik.S1-->>Wł. led -->>klik.S1-->>Wył.led, tak samo z S2. Przycisk S3 jest 'nadrzędny'. Kliknięcie S3 wyłącza obydwa Ledy jeśli którakolwiek zapalona, ponowne kliknięcie S3 włącza obydwa Ledy. 'Na żywo' S3 zapala lub gasi ledy po kilku kliknięciach! Czy ktoś może mnie ukierunkować co nie...
Witam, mam mały problem z napisaniem kodu tak by wykorzystując cztery przyciski poruszać się po menu jak również ustawiać parametry i je zapisywać do eepromu . Menu wygląda tak 1.MENU 1.1 MENU 1.2 MENU 2.MENU 2.1 MENU 2.2 MENU itd . Proste Menu powiedzmy jednopoziomowe napisałem z instrukcją Case ale nie wiem jak wykorzystać te same przyciski , jeden...
Witam. Buduje sterownik do pompy C.O. i jestem na etapie sprawdzania czy wszystkie jego bloki reagują prawidłowo. I właśnie przyciski podpięte pod portd.2 i portd.3 za nic nie chcą działać jak należy. Jest jeszcze przycisk podpięty pod portd.4 który działa jak należy. Otóż dwa pierwsze przyciski zachowują się tak jakby były cały czas wciśnięte. Jak...
Jeden przycisk (widełki telefonu) ma obsłużyć 3 funkcje: 1 - off - podniesienie widełek, możliwość wprowadzenia numeru do zmiennej realizowana do czasu krótkiego naciśnięcia widełek 2 - on (1-3 sek) - krótkie naciśnięcie widełek i zatwierdzenie wprowadzonego numeru, dalsza rozmowa już w trybie off przycisku do czasu długiego wciśnięcia widełek - odłożenie...
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ć...
Witam. Jestem początkujący w temacie Arduino więc proszę o wyrozumiałość. Chciałbym stworzyć kod, który uruchamia różne funkcje w zależności od długości naciśnięcia przycisku. Proszę o pomoc jak to uzyskać. A choćby tak: [syntax=c] /* *SwitchTime sketch */ const int ledPin = 13; // the number of the output pin const int inPin = 2; // the number of...
Moze dokładniej napisze o co chodzi. Skan_klawiatury: Nr_przycisku = 0 Debounce Pinc.0 , 0 , _dol , Sub 'góra Debounce Pinc.1 , 0 , _gora , Sub 'dół Debounce Pinc.2 , 0 , _lewo , Sub 'lewo Debounce Pinc.3 , 0 , _prawo , Sub 'prawo Debounce Pind.7 , 0 , _switch , Sub 'switch Return _gora: Nr_przycisku = 1 Return _dol: Nr_przycisku = 2 Return...
hmmm nikt tu nei wtracil pewnego waznego problemu, a mianowicie o fachowej nazwie "debounce". Tzn. ze w momencie wcisniecia przycisku an styku pojawiaja się 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. Powiem...
...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...
Jest taka funkcja DEBOUNCE, sprawdź składnie w helpie bo nie pamiętam dokładnie. Działa ona tak, że jeśli przycisk został wciśniety przez min 20ms, to skacze do ustawionego pod programu. Pozdrawiam Yakuza
W bascomie jest specjalna instrukcje do obsługi przycisku DEBOUNCE Proponuje z niej skorzystać
Witam Widzę, że temat jest dość stary, jednak sam borykałem się z tym problemem i rozwiązałem go w następujący sposób: 'Konfiguracja portów: Config pinb.0 = Input 'Port przycisku Config pind.0 = Output 'Port np. diody led 'Podciągnięcia portów: Portb.0 = 1 Portd.0 = 1 'Typ zmiennej: Dim A As Byte 'Stan początkowy zmiennej: A = 1 'Główna...
poczytaj troche o funkcji debounce, po co ona jest. Gdy nacisniesz przycisk zdarza sie ze palec lekko drzy. Dlatego tez poleca sie robic cos takiego: if przycisk=0 then waitms 45 ' czeka az uspokoi sie palec if przycisk=0 then ' teraz sprawdza czy nadal jest wcisniety ' wtedy wykonuje cos end if end if po 2 masz to w zlej kolejnosci. Tak powinno to...
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.
Witam ponownie, trochę pozamiatałem i dodałem już funkcjonalność ustawiania zegara, powrzucałem wszystko w procedury itd..., jak na razie działa, co nie zmienia faktu, że nadal nie wiem co było nie tak wcześniej. W każdym razie prosiłbym doświadczonych kolegów o zerknięcie na poniższy kod i zasugerowanie, jak to powinno być zrobione zgodnie ze sztuką...
Witam serdecznie Mam mały problem z kodem poniżej, mianowicie są 3 przyciski i 10 diód. Naciskam przycisk 1 włączają się kolejno diody od 1- 10 i tak samo gasna. Naciskam przycisk 2 włączają sie kolejno diody od 10-1 i tak samo gasną. Przycisk 3 raz naciśnięty włącza wszystkie diody od razu, drugi raz naciśnięty wyłącza wszystkie diody od razu. Chciałbym...
Witam Zrób takie coś: instrukcję [syntax=basic4gl] On Nr_menu Gosub Menu1 , Menu2 , Menu3 'a tak możesz dla każdego menu , ' wywołać procedurkę [/syntax] wstaw tu [syntax=basic4gl] While Klucz = 1 Debounce Memo , 0 , Zmiana , Sub Wend [/syntax] czyli program powinien wyglądać tak: [syntax=basic4gl] Do Cls Lcd Lookupstr(nr_menu , D_menu) Set Klucz While...
Do obsługi przycisków w Bascomie służy "DEBOUNCE"
Dlatego napisałem Ci o kursie, bo to o co pytasz to podstawy, no nie wiem, pierwsza lekcja w każdym tutorialu/kursie o Arduino, a jak wejdziesz w przykłady wbudowane w Arduino to jest to w 01. Basic, np. DigitalReadSerial, potem w 02. Digital Button, Debounce. (at)krzysiek_krm może i to pewnie słuszna droga w końcowym rozwiązaniu, ale jak ktoś nie wie...
Konstrukcję z poleceniem WHILE zastosowałeś tylko dla podprogramu program1() A w pozostałych dwóch nie dałeś tej pętli. Dlaczego? w tym czasie nie jest też zapamiętywana zmiana flagi, o której mówiłeś. bo jest czeski błąd z postu #22 (at)emarcus w tym fragmencie: To nie jest 'czeski błąd' - to jest istonie zwyczajny błąd(!) . Dziękuję za korektę! Czeski...
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 :)
ShEvU_elektro :arrow: może napisz nam co to za procek :) Wkażdym razie, żeby sterować diodą nie potrzeba traznystora. Diode podpinasz katodą (keską) do portu, z drugiej strony rezystor dobrany w zalezności od diody (producent podaje 1k) i do plusa zasilania (5V!). Tak podpiętą diode zapalisza 0 logicznym, a gasisz 1 na danym pinie. Config Portb = &B11110011...
witam A nie mozna tak zrobic ze przyciks po nacisnieciu zwieksza pewna zmienna o 1 przypuscmy ze mamy 2 stany .... dim i as byte i=0 do debounce portc.0 , 0, dodaj1,sub if i = 0 then ..... cos tam 'wykonuje jesli i jest0 else ....cos tam ' wykonuje jesli i jest 1 i=0 end if loop end dodaj1: i =i + 1 do loop until portc.0=1 return --- tylo jeszcze musi...
Przy użyciu jakiego polecenia?? If czy debounce?? bo to ma znaczenie, wrzuć najlepiej cały kod
Robiłem tak (attiny13): POTRB.4 podciągnięty 10k rezystorem do GND, od tego kabel do microswitcha, od niego do VCC PORTB.3 - dioda led - VCC (dla testu) program: $regfile "attiny13.dat" $crystal = 4800000 Config Portb.3 = Output Config Portb.4 = Input Led Alias Portb.3 S1 Alias Portb.4 Do Debounce S1 , 0 , Pr1 , Sub Loop End Pr1: Toggle...
po pierwsze typy zmiennych proponuje jednak zdefiniowac... unsigned char zapewne bedzie ok dla atmegi po drugie, widze, ze u ciebie przycisk wcisniety to 0, puszczony to 1 (tak jest?) - w takim wypadku zmien funkcje na: wynik=port&(~last); aby wykrywala puszczenie, a nie nacisniecie przycisku. jesli na tym porcie masz cos jeszcze, co jest jakos sterowane,...
Bo to nie gotowiec :!: Ja preferuję debounce, mały przykład dla ciebie: Dim I As Byte I = 0 Ddrc = &B00001111 Portc = &B11110000 Do Debounce Pinc.4 , 0 , Zmien , Sub Select Case I Case 1: Set Portc.0 Set Portc.2 Case 2: Reset Portc.0 Reset Portc.2 Case 3: Set Portc.1 Set Portc.3 End Select Loop Zmien: Incr I If I = 4 Then I = 1 Return...
Po pierwsze musisz ustawić piny INT0 oraz INT1 jako wejscia (nie masz tego zrobionego) a samo aktywowanie przerwań nie ustawi tych pinów jako wejść czyli PINB.0 = Input PINB.1 = Input ........... pozdrawiam Obawam sie ze i to moze nie pracowac ! INT0 jest na wejsciu PD.2 INT1 ----------------- PD.3 Owszem port PB.0:7 jest/sa obslugiwane przez PCINT...
kod: $regfile = "m16def.dat" $crystal = 14745600 $lib "glcdKS108.lbx" Config Porta = Output Config 1wire = Portc.1 Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 3 , Ce2 = 4 , Cd = 7 , Rd = 6 , Reset = 2 , Enable = 5 Setfont Font8x8 Config Pind.5 = Output Config Pind.1 = Input Dim Adrs(16) As...
a może po prostu użyj DEBOUNCE w pętli DO...LOOP
Jeśli to jest jedyny minus, to jednak wolę w tym programie zastosować debounce :). Zablokowanie procesora na 20ms w porównaniu z moim blokowaniem na 60s, to jest duża różnica :). A co do tego blokowania, to jak rozwiązać inaczej to blokowanie? Żeby np. podczas czekania tego 60s, dalej odczytywał temperaturę i czekał na przyciski, żeby po prostu go nie...
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...
Prawde mówiąc jak tak patrzę na ten program to sporo można by zmienić. Najważniejsze to wywaliłbym te DEBOUNCE i wszystkie trzy podprogramy umieścił ciurkiem w pętli do...loop. Dalej, gdybyś już timery opanował to spokojnie mógłbyś wywalić wszystkie waitms i zastąpić je JEDNYM przeskokiem. Dzieki tym zmianom (zwłaszcza pierwszej) wszystkie klawisze...
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...
Debounce spokojnie by tu wystarczył jeśli nie zależy Ci na ciągłości działania programu (ten zawsze wstrzyma na 25ms). Do tego wykorzystaj dodatkowy timer programowy do mierzenia czasu trwania buzera (ewentualnie można to zrobić w jakiejś pętli jeśli wstrzymanie programu jest nieistotne). Można też wykorzystać badanie portu z maskowaniem (AND) jeśli...