Arduino 19: MIKROSTYKI

  Рет қаралды 15,056

Adam Śmiałek

Adam Śmiałek

Күн бұрын

Wszystko o przełącznikach i ich współpracy z mikrokontrolerami. Dlaczego ten prosty problem wcale nie jest prosty? O metodach pozbywania się stanów nieustalonych. O tym, dlaczego czasem warto dołożyć kilka elementów zamiast rozwiązywać problemy programowo.
Kod, na którym bazuje odcinek można pobrać stąd:
adamsmialek.co...
Zapraszam do wsparcia mojego kanału:
patronite.pl/s...
PayPal.Me/smialekadam
oraz do subskrybowania:
www.youtube.co...
#Arduino #microswitch #debouncing

Пікірлер: 88
@piotrcisek494
@piotrcisek494 2 жыл бұрын
Ma Pan niesamowitą wiedzę i pasję. Pozdrawiam.
@Informatykwakcji
@Informatykwakcji 2 жыл бұрын
💪😎👌 Super sprawa z tą serią o Arduino! I podziwiam tempo wypuszczania odcinków! Dodajmy tak dobrych odcinków! Chyba dla mnie doba musiałaby mieć 256 godzin, bym tak często produkował kolejne filmy! 😜
@k4be.
@k4be. 2 жыл бұрын
W pewnych sytuacjach pojemności włączone wprost równolegle do styków mają pewne zalety. W wielu typach przełączników, gdy przez styki płyną tylko prądy bardzo niewielkie, styki te ulegają powolnemu utlenianiu, po pewnym czasie przestając działać prawidłowo. Energia pochodząca ze zwarcia kondensatora potrafi te zanieczyszczenia zniszczyć, przez co, paradoksalnie, element w takich warunkach może pracować niezawodnie zdecydowanie dłużej.
@robertmajewski4486
@robertmajewski4486 2 жыл бұрын
A mnie to zupełnie nie interesuje ale lubie pana Adama :)
@polskizwiazeknaczelnychhej1100
@polskizwiazeknaczelnychhej1100 Жыл бұрын
Ja używam kondensatora do przycisku, takiego mniej więcej 200nano oraz odczyt stanu za pomocą przerwania Rising. Opcjonalnie czytam stan z digitalread, ale zależy to od struktury programu. Dla mnie każde 30milisekund to wieczność, tym bardziej, gdzie arduino obsługuje Uarta, kilka urządzeń na I2C a program działa asynchronicznie.
@zbigniewgurak8261
@zbigniewgurak8261 2 жыл бұрын
Pochwała "łapką" i oglądam.
@R.Rumian
@R.Rumian 2 жыл бұрын
Dzięki przyda mi się
@boleslawwroblewski6838
@boleslawwroblewski6838 2 жыл бұрын
Panie Adamie kiedyś nad ranem przełącznik zapaliłem światło i w sypialni zobaczyłem cztery nogi wystające z pod kołdry!!!! Pozdrawiam serdecznie zza wielkiej wody
@moje12a
@moje12a 2 жыл бұрын
Dzięki Bogu że nie 3 bo było by dziwnie xD
@marius1677
@marius1677 2 жыл бұрын
Bo za jednym przełączeniem wysłałeś dwa impulsy i w świetle stroboskopowym uległeś złudzeniu optycznemu "zdublowania nóg" ;)
@MultiKomentator
@MultiKomentator 2 жыл бұрын
Kiedyś się na stoperze robiło rekordy start/stop i trzeba było lekko przycisnąć przycisk, żeby zaszumiało na nim i mogło być 0,11s
@marcinkopa
@marcinkopa 2 жыл бұрын
Super materiał, pozdrawiam! Ps. ten delay(20) powinien być wewnątrz pętli while, wtedy nie marnujemy zasobów procesora, o których wspomniałeś.
2 жыл бұрын
Stany nieustalone mają miejsce zarówno po wciśnięciu jak i puszczeniu przycisku. Oczywiście jeden delay (dodatkowy) może znajdować się zaraz za tą pętlą i już będzie okej, ale tu chodzi bardziej o ideę, a już realizacja powinna przebiegać zgodnie z konkretnymi potrzebami programowymi.
@dariuszstalonczyk8288
@dariuszstalonczyk8288 2 жыл бұрын
@ Przedewszystkim ten delay jest w złym miejscu i nie rozwiązuje skutecznie problemu. Załóżmy, że naciśnięcie przycisku generuje krótką szpilkę poprzedzającą stabilny stan. Spilka ta powoduje wejście w if, przełączenie stanu diody i w pętli czekamy na jej koniec. Następnie siedzimy w delay, i kolejny obrót głównej pętli odczyta ponownie, że nasz przycisk jest wciśnięty, w tym momencie znajduje się w stanie stabilnym. Spróbuj naciskać ten przycisk długo, zamiast krótkimi impulsami i trafisz na taką sytuacje :)
2 жыл бұрын
W sumie to prawda, aczkolwiek w praktyce sytuacja taka nie powstała mi ani razu, a to się bierze z faktu, że te trzy linie także zabierają nieco czasu, wystarczającego na ustabilizowanie się docisku. Dodatkowy delay byłby jednak wskazany choćby dla zasady (a najlepiej coś pożytecznego, a nie delay).
@marcinkopa
@marcinkopa 2 жыл бұрын
@ Adam do Ciebie tylko jedna uwaga: nie przestawaj nagrywać filmów!!! Masz talent, a filmy mają klimat nie do podrobienia! :))) A do obsługi przycisków w Arduino polecam libkę Button2, obsługuje pojedyncze, podwójne, potrójne oraz długie przyciśnięcie. Jest lekka, działa na każdym procesorze, nie potrzebuje przerwań i nie jest blokująca (nie używa delay).
@dse-elektronik
@dse-elektronik Жыл бұрын
@@marcinkopa Popieram z tym klimatem, mam podobny wiek i te zdjęcia i zabytki łzy ze śmiechu i wzruszenia wyciskają. To jest stara szkoła i niech tak zostanie , no i te podchwytliwe sugestie . Oby tak dalej.
@simulatorMarcin
@simulatorMarcin 2 жыл бұрын
ciekawe przelączniki
@juzf
@juzf 2 жыл бұрын
rozwinieciem tego materiału z dedykacją dla graczy jest artukuł "Dlaczego myszka dwuklika?" - można spoojnie znaleźć. Nagle sie okazuje, że nasza myszka może działać perfekcyjnie latami, jeśli tylko nie boimy się lutownicy
@solarr2
@solarr2 2 жыл бұрын
👍🇵🇱🇵🇱👍
@zenonpompka
@zenonpompka 2 жыл бұрын
💪
@AmatorElektronik
@AmatorElektronik 2 жыл бұрын
Ja zawsze robilem tak ze czekalem 20ms czy tam ile trzeba bylo i potem wykonywalem program gdy przycisk na pewno mial stan ustalony a nie bylo to jakies zakłócenie. W starych atmegach pullup mial 50k
@Bender-Rodriguez
@Bender-Rodriguez 2 жыл бұрын
Rozwiążania programowe nie są tak zupełnie za darmo :) Zaśmiecają kod, zajmują czas pracy ludzkiej, poza tym ktoś może je zepsuć (np. myśląc że właśnie coś poprawił). A wtedy cena darmowości może być zaskakująco duża.
2 жыл бұрын
Dlatego powstają rozwiązania sprzętowe :)
@TomekNagisa
@TomekNagisa 2 жыл бұрын
Chciałbym tylko zauważyć, że jeśli nie potrzeba z jakiegoś powodu używać przerwań do obsługi klawiatury, to najprostsze rozwiązanie z timerem rozwiązuje "za darmo" problem drgania styków i nie ma absolutnie żadnego dodatkowego kosztu czy to w czasie programisty czy większym kodzie.
@ryszardskoczny1739
@ryszardskoczny1739 2 жыл бұрын
Witam. Jako użytkownik klawiatury Muzykant na scalaku Atmel C51, jak sobie poradzić z debouncingiem budując taką samą w oparciu o Arduino + kontraktony zamiast microswitch-y?
2 жыл бұрын
Musiałbym sobie przypomnieć jak ja to wtedy zorganizowałem :) Ale można kod "przepisać", jeśli działa (a chyba działa, bo poszedł w świat w setki). Z tego co pamiętam, tam po prostu przemiata się klawiaturę na wykrycie zwarcia, a samo wysyłanie trzech bajtów przez midi jest wystarczającym opóźnieniem zapobiegającym problemom. Podobnie z puszczeniem klawisza, ten kod jest symetryczny. Kontaktrony generalnie robią mniej problemów.
@ryszardskoczny1739
@ryszardskoczny1739 2 жыл бұрын
@ Witam.. No właśnie na stronie był kod w Assemblerze skompilowany z możliwością tylko zmiany numerów kanałów midi oraz kodu wyzwalanego klawisza. Cała reszta już skompilowana ;-) Musiałem na starym PC z Dos-em odpalać i ręcznie przepisywać kody przycisków. To było 7lat temu a schemat zduplikowałem na dwa Atmele bo matryca 127# oryginalna była za mała na 3 klawiatury x61 przycisków. ;-)
@bartk07
@bartk07 Жыл бұрын
​@ Dołączam się do pytania, mam przełączniki sprzętowe rejestrów podłączone pod muzykanta i strasznie szumią, planuję już zmianę na kontaktrony, zastanawiałem się też nad tym kondensatorem równolegle do przycisku, ale po filmie jestem w kropce. Czy zwarcie linii stanowiących klawiaturę matrycową powoduje zamknięcie pętli prądowej czy zwarcie do masy? wtedy można by użyć opóźniacza typu max6818. Poza tym, dziękuję za Muzykanta, używam go w różnych formach już chyba ze 20 lat! niesamowita sprawa, pełen szacunek za tę pracę!
Жыл бұрын
Zwarcie w klawiaturze matrycowej umożliwia przepływ niewielkiego prądu z, powiedzmy, źródła prądowego, którym jest rezystor zasilany z napięcia stabilizowanego. Ja bym się tutaj nie bał kondensatorów, porty mikrokontrolera są pozabezpieczane na takie możliwości. A jak się poprawi, to się nie ma co przejmować, że to trochę niezgodne z zasadami :)
@bartk07
@bartk07 Жыл бұрын
@ Piękne dzięki 🙂 Pozdrawiam
@cyniu88
@cyniu88 2 жыл бұрын
Jakim programem robione są pomiary i rysowany jest wykres ?
2 жыл бұрын
Audition. To program do klasycznych operacji audio, ale można go użyć poglądowo do takich zadań.
@piotrodzysk4444
@piotrodzysk4444 2 жыл бұрын
Pozdrawiam.#
@andrzejlisek
@andrzejlisek 2 жыл бұрын
Ciekawe, że przez cały film ani razu nie padło sformułowanie "drgania styków", a właśnie często tak jest nazywany cały opisywany problem z przełącznikami. Po angielsu nazywa się to "switch bounce", chociaz po polsku nie spotkałem się z formułowaniem "odbijanie styków" lub "odbijanie przełącznika", chociaż taka nazwa również sama za siebie opisuje problem. To w takim razie, jak jest klawiatura matrycowa 4x4 (taka membranowa, jak w chwili 1:05), to czy da się w niej sprzętowo wyeliminować drgania styków?
2 жыл бұрын
Generalnie na klawiaturach matrycowych nie stosuje się pojemności, ale można obniżyć impedancję, ładując dodatkowe rezystory podciągające o niższych niż zwykle wartościach (kiloomy zamiast kilkadziesiąt). Odkłócanie sprzętowe ma większe znaczenie przy wszelkiego rodzaju krańcówkach itp., gdy w przypadku klawiatur często wystarczą sposoby czysto programowe, bo tam czasy nie są tak krytyczne, a linie zwykle krótsze (krańcówki często są umiejscowione metry od mikrokontrolera i w razie potrzeby stosuje się wręcz izolowane transoptorem pętle prądowe, najbardziej chyba niezawodne). Co do nazewnictwa, dla mnie ważniejsza jest idea, a już znane mi określenia wstawiam tylko w tagi.
@andrzejlisek
@andrzejlisek 2 жыл бұрын
@ Kiedyś zmajstrowałem jeden układ z wykorzystaniem klawiatury matrycowej (bez dodatkowych elementów na liniach od klawiszy do ATMega328), a odczyt stanu klawiatury zrealizowałem w przerwaniu wyzwalanym co 10ms z timera, a odczyt zapisywałem w zmiennej globalnej "volatile". Czasami zawodziło (drgania styków), ale wymyśliłem, że zmienną globalną stanu będę aktualizować tylko w przypadku, gdy stan klawisza przez 3 ostatie odczyty jest ten sam i problem zupełnie zniknął kosztem opóźnienia, którego w praktyce i tak się nie wyczuwało. Dzięki temu, zużycie mocy procesora na samą obsługę klawiszy ograniczyłem do minimum (brak pustego czekania). Nawet prosty programik z zaświecaniem diody można tak zrealizować z tą różnicą, że w głównej pętli będzie badany stan zmiennej globalnej, a odczyt klawiszy będzie w przerwaniu.
@nukedclx
@nukedclx 2 жыл бұрын
tez mnie to ukulo, podrzuce tez podobny material rs elektroniki kzbin.info/www/bejne/gGXQi3ucZdV7brs
@michastepien8326
@michastepien8326 Жыл бұрын
jakie opóźnienie wprowadza rozwiązanie z ic7414? pytam, bo rozwiązanie programowe -- "zareaguj na pierwszą zmianę i ignoruj kolejne przez np. 50ms" nie ma opóźnienia.
Жыл бұрын
Pomijalne, katalogowo 22 nS maksymalnie.
@michastepien8326
@michastepien8326 Жыл бұрын
@ Tak, ale to jest już chyba przełączanie w samym układzie 7414, a mi chodzi o całość, razem z tym kondensatorem i ewentualnie diodą (electrosome.com/wp-content/uploads/2012/12/RC-Switch-Debouncer-with-Diode.png). Czy rozwiązanie z kondensatorem nie wprowadza opóźnienia?
Жыл бұрын
Wprowadza, wszystko można obliczyć zgrubnie i dobrać zarówno wartości elementów jak i wpisane w sofcie do zadań. Dla typowych klawiatur latencja niewyczuwalna to 30-50 ms, dla muzycznych raczej nie wyższa od 10 ms, dla przełączników automatyki to już bardzo różnie, ale mogą być wymagania nawet poniżej milisekundy.
@incxxxx
@incxxxx 2 жыл бұрын
ok
@Trabantoslaw
@Trabantoslaw 2 жыл бұрын
Kupiłem sobie mechaniczną klawiaturę K60 w nadziei, że będzie bardziej trwała od zwykłych. Po roku kiedy wciskam "d" wyskakuje mi na ekranie "dd". Żenada.
@marcinzjajami9315
@marcinzjajami9315 2 жыл бұрын
Mikrofon jako oscyloskop.... WOW ;)
2 жыл бұрын
Nie mikrofon, tylko wejście mikrofonowe.
@marius1677
@marius1677 2 жыл бұрын
Właściwie wszystkie mikrooscylacje łapią się na to gniazdo,po prostu jest ono wystarczająco czułe. Ale gramofonowe byłoby już chyba przesterowane :)
@marius1677
@marius1677 2 жыл бұрын
Aha,no i gramofonowe nie jest liniowe.
@sunleostudio7969
@sunleostudio7969 Жыл бұрын
dobry dzwięk
Жыл бұрын
Nie jest, mówiłem o tym w odcinku z gramofonem Bernard.
@Jedendwa0
@Jedendwa0 Жыл бұрын
To już wiem z jakiego powodu w cedetwo mieli problem przy cofaniu się w czasie w maszynie do cofania czasu i zamiast o 3 lata cofnęli się o 33 lata. kzbin.info/www/bejne/j5yUgmmBoJ5pmNU
@pokrec
@pokrec 2 жыл бұрын
Niewierny Tomasz (Apostoł) i św. Tomasz z Akwinu to dwaj rózni ludzie, żyjący jakieś 1200 lat i z tysiąc kilometrów od siebie...
2 жыл бұрын
Wiem, specjalnie zastawiłem pułapkę na spostrzegawczość :)
@MultiKomentator
@MultiKomentator 2 жыл бұрын
Czyli należy się nagroda: talon na balon i nie tylko
@moje12a
@moje12a 2 жыл бұрын
@@MultiKomentator obawiam się że druga część tego zdania.
@damianszymczyk5019
@damianszymczyk5019 Жыл бұрын
@@MultiKomentator żeton na kielnie i beton
@Vanilla-du4oh
@Vanilla-du4oh 2 жыл бұрын
Ostatni xd
@domozs4370
@domozs4370 2 жыл бұрын
Płytka stykowa... bee... tylko uniwersalna i kynar.
@sunleostudio7969
@sunleostudio7969 Жыл бұрын
poraża mnie pana wiedza
@KH-lg3xc
@KH-lg3xc 2 жыл бұрын
Proszę to rozwinąć o (porządną) obsługę mechanicznych enkoderów kwadraturowych. Z tym, to mają problem profesjonaliści i rzadko kiedy działa to dobrze.
@Paes64
@Paes64 2 жыл бұрын
W konsoletach muzycznych cyfrowych gdzie jest "zylion" koderów obrotowych, to sygnały z nich są wstępnie obrabiane filtrem RC i inwerterem z przerzutnikiem Schmitta typu 74HC15 lub 74HCT14. Potem po 4 (czyli 8 sygnałów) są odczytywane przez rejestry równoległo-szeregowe (dla zmniejszenia zapotrzebowania na ilość wejść procesora). Nie wiem tylko jak często jest odczyt (32x, 64x na sekundę?) reszta (kierunek, ilość impulsów) jest robiona programowo. Dekodowanie najlepiej jest zrobić tablicowo, gdzie tablica ma rozmiar 16, a na wejście dostaje aktualny stan kodera (A, B) i jego stan z poprzedniego próbkowania (A1, B1), tak, że masz możliwych stanów. W poszczególnych pozycjach tablicy masz wpisane: -1 (zmniejszanie), 0 (brak zmiany) lub +1 (zwiększanie). Tę metodę stosowano już w pierwszych myszkach komputerowych. No i podstawa - dobrej jakości kodery obrotowe.
@jacekrokita6742
@jacekrokita6742 2 жыл бұрын
O babciu elektryczna. Tyle części i tylko dla pstryczka. ;)
@moje12a
@moje12a 2 жыл бұрын
Na razie słyszałem tylko o matce boskiej elektrycznej.
@gregem6696
@gregem6696 2 жыл бұрын
Drugi !
@KH-lg3xc
@KH-lg3xc 2 жыл бұрын
Podstawowy problem, mielony bez końca na wszelkich forach poświęconych Arduino.
2 жыл бұрын
I jak widać, wciąż warto go mielić.
@gnbandi5663
@gnbandi5663 2 жыл бұрын
Drugi
@palimytonsile4371
@palimytonsile4371 2 жыл бұрын
Pierwszy
@TomekNagisa
@TomekNagisa 2 жыл бұрын
Pytanie, po co dodatkowy przerzutnik Schmitta, skoro na każdym pinie m328p taki przerzutnik jest (wbudowany, sekcja 13.2 w DS)?
@andrzejlisek
@andrzejlisek 2 жыл бұрын
Chodziło o zademonstrowanie działania takiego sposobu eliminacji drgań styków. Nie szkodzi, że w M328P przerzutnik nie jest potrzebny, a do demonstracji nie ma znaczenia, jaki to mikrokontroler. W innym mikrokontrolerze lub innym procesorze, jak ma przerzutnika to jest potrzebny zewnętrzny.
2 жыл бұрын
Dokładnie, to jest płytka edukacyjna i postanowiono użyć tutaj takiego przykładowego rozwiązania.
@TomekNagisa
@TomekNagisa 2 жыл бұрын
@@andrzejlisek Wszystko spoko, ale w materiale nie ma informacji o tym, ze praktycznie każdy współczesny procesor takie przerzutniki na wejściach ma. Więc jako demonstracja działania przerzutnika to ok, ale ktoś może wpaść na pomysł używania takiego rozwiązania z MCU, a ono z nimi jest kompletnie bez sensu.
2 жыл бұрын
Nie tak bez sensu, bo często w przemyśle na końcu długich linii stosuje się różnego rodzaju elementy pośredniczące, transformujące mało odporne na zakłócenia sygnały z przełączników, a wtedy Schmitty mogą się przydać. To jest płytka edukacyjna, a ta z punktu widzenia użyteczności poza edukacją sensu nie ma żadnego.
@TomekNagisa
@TomekNagisa 2 жыл бұрын
@ Bym się nie zgodził, płytka poza walorami edukacyjnymi (co już jest sensowne) może i do prostych prototypów posłużyć + edukacja i dobre nawyki to trochę ważna rzecz. A zakłócenia na długich kablach, no nie wiem, jeśli dodatkowy przerzutnik jest na końcu tam gdzie przycisk to jego użyteczność jest taka sobie - bo pomiędzy nim a MCU jest długi kabel zbierający zakłócenia. A jak jest przy MCU, to tez trochę bez sensu bo przerzutnik jest w MCU. Także jak dla mnie - do czegoś analogowego - spoko, może być, ale tak to przydatność akurat tego elementu jest dyskusyjna.
Arduino 18: PŁYTKA EDUKACYJNA
12:43
Adam Śmiałek
Рет қаралды 16 М.
Arduino 22: PILOT PODCZERWIENI
13:53
Adam Śmiałek
Рет қаралды 14 М.
OYUNCAK MİKROFON İLE TRAFİK LAMBASINI DEĞİŞTİRDİ 😱
00:17
Melih Taşçı
Рет қаралды 5 МЛН
Пришёл к другу на ночёвку 😂
01:00
Cadrol&Fatich
Рет қаралды 10 МЛН
HAH Chaos in the Bathroom 🚽✨ Smart Tools for the Throne 😜
00:49
123 GO! Kevin
Рет қаралды 13 МЛН
How 3 Phase Power works: why 3 phases?
14:41
The Engineering Mindset
Рет қаралды 1 МЛН
Arduino 13: TERMOWENTYLATOR
12:18
Adam Śmiałek
Рет қаралды 14 М.
Amplituner z Jugosławii - EI HIFI160 [TOWARY MODNE 83]
21:53
Adam Śmiałek
Рет қаралды 76 М.
Jak działa karta SIM ?[RS Elektronika] #258
14:10
RS Elektronika
Рет қаралды 63 М.
Arduino 11: SZESNAŚCIE MILIONÓW KOLORÓW
19:00
Adam Śmiałek
Рет қаралды 18 М.
Arduino 35: PISKI I POZYTYWKA
14:18
Adam Śmiałek
Рет қаралды 9 М.
Zegar z kukułką [TOWARY MODNE 173]
19:11
Adam Śmiałek
Рет қаралды 37 М.
Things you can make from old, dead laptops
19:03
DIY Perks
Рет қаралды 12 МЛН
Arduino 25: MAGISTRALA I2C
15:30
Adam Śmiałek
Рет қаралды 12 М.
Arduino 17: ARDUINO Z BLISKA -ATMEGA 328P
16:31
Adam Śmiałek
Рет қаралды 15 М.
OYUNCAK MİKROFON İLE TRAFİK LAMBASINI DEĞİŞTİRDİ 😱
00:17
Melih Taşçı
Рет қаралды 5 МЛН