2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Dla tych, którzy nie są przyzwyczajeni do elektroniki, PWM oznacza kontrolę mocy. W tym zestawieniu pokazujemy, jak za jego pomocą sterować intensywnością światła LED, podobnie jak ściemniacz na lampie, z opcjami przyciemniania i rozjaśniania.
Mechanizm ten umożliwia również np. podłączenie sterownika do silnika. To tylko jedna z wielu możliwości.
- Uwaga: PWM oznacza modulację szerokości impulsu.
Krok 1: Cel
Zespół składa się z potencjometru, który jest rezystorem zmiennym, monitorowanym przez ESP. W tym schemacie używam tego samego kodu źródłowego, którego użyłbym z Arduino. Ze względu na wiele zalet Arduino IDE z ESP wykorzystujemy również w innych projektach.
W zestawie ESP jest podłączony do USB tylko do zasilania. Mamy też pin kursora, który jest pinem środkowego potencjometru, podłączonego w porcie AD oraz plus i minus.
Ponieważ napięcie się zmienia, możliwe jest odczytanie innej wartości w AD. Dlatego kręcąc potencjometrem można zwiększyć lub zmniejszyć jasność diody.
Krok 2: Montaż
Schemat elektryczny jest bardzo prosty: za pomocą ESP8266 w konfiguracji NodeMCU zasilimy USB. Więc tutaj potencjometr musi być podłączony z jednego końca do ujemnego, a drugi do dodatniego. Medium, którym jest kursor, pozostaje w ADC 0, ponieważ ten ESP ma tylko port, który odczytuje wartości analogowe.
Krok 3: Wi-Fi ESP8266 NodeMCU ESP-12E
Krok 4: Kod źródłowy
Ustawiać
W funkcji Setup definiujemy zachowanie pinów, których używamy, w tym przypadku diody LED i POTENCJOMETRU.
void setup(){ Serial.begin(115200) // Instrukcja obsługi colocar lub gpio que iremos utilizar como entrada, // podemos fazer a nesse pinMode(A0, INPUT); // A0 é uma constante que indica o pino que ligamos nosso potenciômetro // Instrução para colocar o gpio que iremos utilizar como saída, // podemos alterar seu valor livremente para HIGH lub LOW pinMode(LED_OUTPILTIN);, // LED_BUILTIN e uma stała que indica o LED do ESP8266 }
Pętla
W tej funkcji logika polega na odczytaniu wartości POT i przypisaniu tej wartości (czyli intensywności jasności) w diodzie LED.
void loop(){ // faz a leitura do pino A0 (bez nosso caso, o potenciômetro, retorna um valor entre 0 e 1023) int potencia = analogRead(A0); Serial.println(potencja); // como o LED no ESP8266 trabalha de maneira contrária, ou seja, quanto maior o valor atribuído, menor a intensidade. Faremos o cálculo para aumentarmos o brilho konforme girarmos o potenciômetro em sentido horário. potencja = 1023 - potencja; // atribui o valor lido do potenciômetro para configurar a intensidade do brilho do LED analogWrite(LED_BUILTIN, potencia); }