w tym tutorialu pokażemy, jak generować sygnały PWM z ESP32 za pomocą Arduino IDE. Jako przykład zbudujemy prosty obwód, który przyciemnia diodę LED za pomocą kontrolera LED PWM ESP32. Pokażemy Ci również, jak możesz uzyskać ten sam sygnał PWM na różnych GPIOs w tym samym czasie.
przed przystąpieniem do tego samouczka powinieneś mieć dodatek ESP32 zainstalowany w Twoim IDE Arduino., Postępuj zgodnie z jednym z poniższych samouczków, aby zainstalować ESP32 na Arduino IDE, jeśli jeszcze tego nie zrobiłeś.
- instalacja płyty ESP32 w Arduino IDE (instrukcje Windows)
- instalacja płyty ESP32 w Arduino IDE (instrukcje Mac i Linux)
zalecamy również zapoznanie się z następującymi zasobami:
- pierwsze kroki z modułem Dev ESP32
- ESP32 pinout Reference: jakich pinów GPIO należy używać?
Obejrzyj samouczek wideo
Ten samouczek jest dostępny w formacie wideo (patrz poniżej) oraz w formie pisemnej (Czytaj dalej).,
wymagane części
aby wykonać ten samouczek, potrzebujesz tych części:
- ESP32 doit DEVKIT V1 Board – przeczytaj najlepsze płyty programistyczne ESP32
- 3x 5mm LED
- Rezystor 3x 330 Ohm
- Breadboard
- Jumper druty
możesz użyć poprzednich linków lub przejść bezpośrednio do MakerAdvisor.com/tools aby znaleźć wszystkie części do swoich projektów w najlepszej cenie!,
ESP32 LED PWM Kontroler
ESP32 ma kontroler LED PWM z 16 niezależnych kanałów, które mogą być skonfigurowane do generowania sygnałów PWM o różnych właściwościach.
oto kroki, które musisz wykonać, aby przyciemnić diodę LED z PWM za pomocą Arduino IDE:
1. Najpierw musisz wybrać kanał PWM. Istnieje 16 kanałów od 0 do 15.
2. Następnie musisz ustawić częstotliwość sygnału PWM. W przypadku diody LED częstotliwość 5000 Hz jest w porządku.
3., Musisz również ustawić rozdzielczość cyklu pracy sygnału: Masz rozdzielczość od 1 do 16 bitów. Użyjemy rozdzielczości 8-bitowej, co oznacza, że możesz kontrolować jasność diody LED za pomocą wartości od 0 do 255.
4. Następnie musisz określić, na którym GPIO lub GPIOs pojawi się sygnał. W tym celu użyjesz następującej funkcji:
ledcAttachPin(GPIO, channel)
Ta funkcja akceptuje dwa argumenty. Pierwszy to GPIO, który będzie wyprowadzał sygnał, a drugi to kanał, który wygeneruje sygnał.
5., Na koniec, aby kontrolować jasność diody LED za pomocą PWM, używasz następującej funkcji:
ledcWrite(channel, dutycycle)
Ta funkcja przyjmuje jako argumenty kanał, który generuje sygnał PWM, i cykl pracy.
ściemnianie diody LED
zobaczmy prosty przykład, aby zobaczyć, jak korzystać z kontrolera ESP32 LED PWM za pomocą Arduino IDE.
schemat
podłącz diodę LED do swojego ESP32 jak na poniższym schemacie. DIODA LED powinna być podłączona do GPIO 16.,
(Ten schemat wykorzystuje wersję modułu ESP32 DEVKIT V1 z 30 GPIOs – jeśli używasz innego modelu, sprawdź pinout dla używanej płytki.)
Uwaga: możesz użyć dowolnego Pina, o ile może on działać jako wyjście. Wszystkie piny, które mogą działać jako wyjścia, mogą być używane jako piny PWM. Aby uzyskać więcej informacji na temat GPIO ESP32, przeczytaj: ESP32 pinout Reference: jakich pinów GPIO należy używać?
Kod
otwórz swoje Arduino IDE i skopiuj następujący kod.,
wyświetl surowy Kod
zaczynasz od zdefiniowania pinu, do którego jest dołączona DIODA LED. W tym przypadku dioda LED jest przymocowana do GPIO 16.
const int ledPin = 16; // 16 corresponds to GPIO16
następnie ustawiasz właściwości sygnału PWM. Definiujesz częstotliwość 5000 Hz, wybierasz kanał 0, aby wygenerować sygnał i ustawiasz rozdzielczość 8 bitów. Możesz wybrać inne właściwości, inne niż te, aby wygenerować różne sygnały PWM.,
const int freq = 5000; const int ledChannel = 0; const int resolution = 8;
w setup(), musisz skonfigurować LED PWM z właściwościami zdefiniowanymi wcześniej za pomocą funkcji ledcSetup (), która akceptuje jako argumenty, ledChannel, częstotliwość i rozdzielczość, w następujący sposób:
ledcSetup(ledChannel, freq, resolution);
następnie, musisz wybrać GPIO otrzymasz sygnał z. Do tego użyj funkcji ledcAttachPin (), która akceptuje jako argumenty GPIO, gdzie chcesz uzyskać sygnał, i kanał, który generuje sygnał. W tym przykładzie otrzymamy sygnał w GPIO ledPin, który odpowiada GPIO 16., Kanałem, który generuje sygnał jest ledChannel, który odpowiada kanałowi 0.
ledcAttachPin(ledPin, ledChannel);
w pętli zmienisz cykl pracy od 0 do 255, aby zwiększyć jasność diody LED.
a następnie, między 255 a 0, aby zmniejszyć jasność.
aby ustawić jasność diody LED, wystarczy użyć funkcji ledcWrite (), która przyjmuje jako argumenty kanał, który generuje sygnał, oraz cykl pracy.
ledcWrite(ledChannel, dutyCycle);
ponieważ używamy rozdzielczości 8-bitowej, cykl pracy będzie kontrolowany przy użyciu wartości od 0 do 255., Zauważ, że w funkcji ledcWrite () używamy kanału, który generuje sygnał, a nie GPIO.
testowanie przykładu
Prześlij kod do swojego ESP32. Upewnij się, że wybrałeś właściwą płytę i port COM. Spójrz na swój obwód. Powinieneś mieć Ściemniacz LED, który zwiększa i zmniejsza jasność.
uzyskanie tego samego sygnału na różnych GPIOs
możesz uzyskać ten sam sygnał z tego samego kanału w różnych GPIOs., Aby to osiągnąć, wystarczy podłączyć te GPIOs do tego samego kanału w setup().
zmodyfikowajmy poprzedni przykład, aby przyciemnić 3 diody LED używając tego samego sygnału PWM z tego samego kanału.
schemat
Dodaj jeszcze dwie diody LED do obwodu, wykonując następny schemat:
(Ten schemat używa ESP32 devkit v1 Wersja modułu z 30 GPIOs – jeśli używasz innego modelu, sprawdź pinout dla używanej płytki.,)
Kod
skopiuj poniższy kod do swojego Arduino IDE.
Wyświetl kod raw
jest to ten sam kod, co poprzedni, ale z pewnymi modyfikacjami. Zdefiniowaliśmy jeszcze dwie zmienne dla dwóch nowych Diod Led, które odnoszą się do GPIO 17 i GPIO 5.
const int ledPin2 = 17; // 17 corresponds to GPIO17 const int ledPin3 = 5; // 5 corresponds to GPIO5
następnie, w setup(), dodaliśmy następujące linie, aby przypisać oba GPIOs do kanału 0. Oznacza to, że otrzymamy ten sam sygnał, który jest generowany na kanale 0, Na obu GPIOs.
ledcAttachPin(ledPin2, ledChannel); ledcAttachPin(ledPin3, ledChannel);
testowanie projektu
Prześlij nowy szkic do swojego ESP32., Upewnij się, że wybrałeś właściwą płytę i port COM. Teraz spójrz na swój obwód:
wszystkie GPIO wysyłają ten sam sygnał PWM. Tak więc wszystkie trzy diody LED zwiększają i zmniejszają jasność jednocześnie, co powoduje zsynchronizowany efekt.
owijanie się
podsumowując, w tym poście nauczyłeś się korzystać z kontrolera LED PWM ESP32 z IDE Arduino do przyciemniania LED., Poznane koncepcje można wykorzystać do sterowania innymi wyjściami za pomocą PWM poprzez ustawienie odpowiednich właściwości sygnału.
mamy inne samouczki związane z ESP32, które mogą ci się spodobać:
- ESP32 Web Server – Arduino IDE
- ESP32 rejestracja temperatury na karcie MicroSD
- ESP32 Web Server with BME280 – Mini Weather Station
- ESP32 vs ESP8266 – plusy i minusy
jest to fragment naszego kursu: Learn ESP32 z Arduino IDE. Jeśli podoba Ci się ESP32 i chcesz dowiedzieć się więcej, zalecamy zapisanie się do Learn ESP32 z kursem Arduino IDE.