Mam do pinu ESP32 S3 podpięty przycisk, który zwiera źródło 3.3V do tego pinu. Problem polega na tym, że nawet kiedy ten
przycisk nie jest wciśnięty, to mikrokontroler w losowych momentach wykrywa na tym pinie logiczne 0 a czasami logiczne 1 (Informację o tym podaję na monitor szeregowy) . Co może być nie tak?
Odpowiedzi (1)
- Sortuj według
- Ostatnio dodane
- Najwyżej ocenione
- Sortuj od najstarszych
Czytaj także:
Oświetlenie LED - zakłócenia
Witam, posiadam w kuchni oświetlenie sufitowe w postaci sześciu ma
Zakłócenia podczas połączenia bluetooth
Gdy chodzę po mieście słuchając muzyki przez słuchawki bluetooth cz
W-2.12T na W3.12T PGNIG opinie
PGNiG przerzucił mnie z taryfy W-2.12T na W3.12T. Jaki miesiąc suge
Wentylacja mechaniczna w domu – opinie eksperta
Jakie rodzaje mechanicznej wentylacji są obecnie dostępne na rynku
Europejskie cła na samochody z Chin. Oświadczenie dużego
Komisja Europejska nałożyła cła wyrównawcze na chińskie samochody e
KNIPEX – reportaż z pobytu w firmie
W świecie narzędzi ręcznych, marka KNIPEX jest synonimem jakości i
W tej sytuacji wygląda na to że zapomniałeś dodać układu pull-down. Chodzi o to, że podczas normalnej pracy piny mikrokontrolera
zbierają zakłócenia z otoczenia, co może właśnie powodować nieprawidłowy odczyt napięcia na pinach i w konsekwencji nieprawidłową interpretację stanu logicznego [ 0-1.67V dla stanu niskiego, 1.68 - 3.3V dla stanu wysokiego ].
Oto jak wygląda układ pull down, działa to w taki sposób że w momencie kiedy wciskasz przycisk no na pin GPIO podawany jest potencjał źródła, logiczne.
Kiedy jednak jest rozwarty to na wejściu podawany jest potencjał masy, dzięki czemu mikrokontroler ma niejako "na sztywno wpisane" 0 woltów na tym pinie,
więc zakłócenia już na to nie mają wpływu.
Istnieje także analogiczny układ pull up, gdzie rezystor z przyciskiem są zamienione miejscami. Tutaj w przypadku rozwartego przycisku na port GPIO
podane zostaje stabilne napięcie źródła, a w przypadku zwarcia - potencjał masy czyli 0V. Działa on odwrotnie to układu pull down.
Jeśli jednak nie chcesz się bawić we wprowadzenie dodatkowych fizycznych elementów do układu, to problem ten da się też rozwiązać programowo.
Płytka ta ma wlutowany rezystor, wspólny dla wszystkich pinów GPIO, który można skonfigurować aby działał w układzie pull up lub pull down.
Jak? Wystarczy przy ustawianiu pinu funkcją pinMode(), podać jako drugi argument makro INPUT_PULLUP [pinMode(pin_ktorego_uzywasz, INPUT_PULLUP].
Jeśli korzystasz z frameworka ESPIDF to trzeba wywołać funkcję gpio_set_pull_mode(), gdzie pierwszym argumentem jest makro odpowiadające danemu pinowi np. GPIO_NUM_3, a drugim jest tryb w jakim zastosowany zostanie układ podciągający:
GPIO_PULLUP_ONLY dla układu podciągającego i GPIO_PULLDOWN_ONLY dla układu ściągającego.