Zliczanie impulsów z enkodera
Zliczać szybkie zbocza bez pomijania żadnego z nich.
Zliczanie impulsów z enkodera to bezpłatna lekcja Arduino & IoT Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Arduino & IoT Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Arduino & IoT Academy zawiera 4 lekcji w sumie.
Koło impulsów
Obrotowy enkoder wysyła podczas obracania szybką serię impulsów elektrycznych. Zliczając te impulsy, można określić, jak daleko się obrócił.
Zbyt szybkie dla odpytywania
Podczas szybkiego obracania enkodera impulsy pojawiają się co kilka mikrosekund. Zwykła loop odczytująca pin przeoczyłaby wiele z nich.
Przerwania na ratunek
To idealne zadanie dla przerwania. Sprzęt wykrywa każde zbocze, więc żaden impuls nie przechodzi niezauważony. ⚡
Licznik volatile
Utwórz licznik volatile, który ISR będzie zwiększać. Oznaczenie go jako volatile sprawia, że pętla odczytuje prawdziwą, aktualną sumę.
volatile long pulseCount = 0;Podłącz przerwanie
W setup wskaż funkcji attachInterrupt pin enkodera i wybierz RISING, aby każdy impuls wywoływał procedurę zliczającą.
attachInterrupt(digitalPinToInterrupt(2), countPulse, RISING);Mała procedura ISR
Cała procedura handler wykonuje jedno zadanie: zwiększa licznik o jeden. Jest krótka i szybka, dokładnie tak, jak powinna być dobra ISR.
void countPulse() {
pulseCount++;
}Odczyt bez rozdzielenia
Aby skopiować count w pętli, na krótko wstrzymaj przerwania, żeby ISR nie zmieniła wartości w trakcie odczytu i nie pozostawiła niekompletnego wyniku.
noInterrupts();
long c = pulseCount;
interrupts();Wykorzystaj licznik
Teraz loop może wyświetlać sumę, obliczać prędkość lub reagować, podczas gdy ISR w tle nadal zlicza nowe impulsy.
Serial.println(c);Od impulsów do obrotu
Każdy enkoder ma stałą liczbę impulsów na obrót. Podziel wartość count przez tę liczbę, aby dowiedzieć się, ile pełnych obrotów wykonano.
Pomiar prędkości
Zliczając impulsy w pętli przez określony czas, można przeliczyć ich częstotliwość na prędkość lub obroty na minutę (RPM) silnika albo koła.
Zeruj w razie potrzeby
Aby rozpocząć nowy pomiar, ustaw counter z powrotem na zero, ponownie wstrzymując przerwania, aby nie utracić impulsu przychodzącego w tym momencie.
noInterrupts();
pulseCount = 0;
interrupts();Szybki test
Dlaczego na krótko wstrzymujemy przerwania podczas odczytywania licznika impulsów w pętli?
Podsumowanie
Zbudowali Państwo licznik impulsów: sumę volatile, krótką ISR i bezpieczne odczyty w pętli. Teraz można niezawodnie mierzyć obrót i prędkość. 🎉
Ucz się C++ dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Zliczanie impulsów z enkodera” jest bezpłatna?
Tak — pełny tekst „Zliczanie impulsów z enkodera” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Arduino & IoT Academy, przejdź na CoddyKit PRO. Kurs Arduino & IoT Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Zliczanie impulsów z enkodera”?
Zliczać szybkie zbocza bez pomijania żadnego z nich. Ćwiczysz Arduino & IoT Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Arduino & IoT Academy?
Nie wymagamy żadnego doświadczenia. Arduino & IoT Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Zliczanie impulsów z enkodera”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Arduino & IoT Academy?
Tak. Każda lekcja Arduino & IoT Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Odpytywanie a przerwania
- attachInterrupt na pinie
- Pisanie bezpiecznej procedury ISR
- Zliczanie impulsów z enkodera