2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Pre tých, ktorí nie sú zvyknutí na elektroniku, PWM znamená ovládanie výkonu. A v tejto zostave ukazujeme, ako ju použiť na ovládanie intenzity svetla LED diódy, podobnej stmievaču na žiarovke, s možnosťami stmavenia a zjasnenia.
Tento mechanizmus vám tiež umožňuje napríklad pripojiť vodič k motoru. Je to len jedna z mnohých možností.
- Poznámka: PWM znamená Pulse-Width Modulation.
Krok 1: Cieľ
Zostava pozostáva z potenciometra, ktorý je premenlivým odporom, monitorovaným systémom ESP. V tejto schéme používam rovnaký zdrojový kód, ktorý by som použil s Arduinom. Vďaka mnohým výhodám používame Arduino IDE s ESP aj v iných projektoch.
V zostave je ESP pripojený k USB iba na napájanie. Máme tiež pin kurzora, ktorý je kolíkom stredového potenciometra, zapojený do portu AD a kladný a záporný pól.
Ako sa napätie líši, je možné v AD prečítať inú hodnotu. Otáčaním potenciometra je preto možné zvýšiť alebo znížiť jas LED diódy.
Krok 2: Zostavenie
Elektrická schéma je veľmi jednoduchá: pomocou ESP8266 v konfigurácii NodeMCU napájame USB. Takže tu musí byť potenciometer pripojený z jedného konca na záporný a druhý z kladného. Médium, ktorým je kurzor, zostáva v ADC 0 zapnuté, pretože tento ESP má iba port, ktorý číta analógové hodnoty.
Krok 3: WiFi ESP8266 NodeMCU ESP-12E
Krok 4: Zdrojový kód
Nastaviť
Vo funkcii Setup definujeme správanie pinov, ktoré používame, v tomto prípade LED a POTENTIOMETER.
void setup () {Serial.begin (115200) // Inštrukcie pre prácu s farebnými obrázkami, prípadne pre použitie so všetkými vstupmi, // fazuľa a lehota pino 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 ou LOW pinMode (LED_BUILTIN, OUTPUT); // LED_BUILTIN a konštantné množstvo LED o ESP8266}
Slučka
V tejto funkcii je logikou načítať hodnotu POT a priradiť túto hodnotu (čo je intenzita jasu) v dióde LED.
void loop () {// faz a leitura do pino A0 (no nosso caso, o potenciômetro, retorna um valor entre 0 e 1023) int potencia = analogRead (A0); Serial.println (potencia); // 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. potencia = 1023 - potencia; // atribui o valor lido do potenciômetro para configurar andintensidade do brilho do LED analogWrite (LED_BUILTIN, potencia); }