2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Pro ty, kteří nejsou zvyklí na elektroniku, PWM znamená řízení výkonu. A v této sestavě ukazujeme, jak ji použít k ovládání intenzity světla LED, podobně jako u stmívače na lampě, s možnostmi ztmavení a zesvětlení.
Tento mechanismus také umožňuje například připojení ovladače k motoru. To je jen jedna z mnoha možností.
- Poznámka: PWM je zkratka pro Pulse-Width Modulation.
Krok 1: Cíl
Sestava se skládá z potenciometru, což je proměnný odpor, monitorovaný ESP. V tomto schématu používám stejný zdrojový kód, jaký bych použil u Arduina. Vzhledem k mnoha výhodám používáme Arduino IDE s ESP i v jiných projektech.
V sestavě je ESP připojen k USB pouze pro napájení. Máme také kurzorový kolík, což je kolík středového potenciometru, připojený v portu AD a kladný a záporný.
Jak se napětí mění, je možné v AD přečíst jinou hodnotu. Otáčením potenciometru je tedy možné zvýšit nebo snížit jas LED.
Krok 2: Sestavení
Elektrické schéma je velmi jednoduché: pomocí ESP8266 v konfiguraci NodeMCU napájíme USB. Zde tedy musí být potenciometr připojen z jednoho konce na záporný a druhý z kladného. Médium, kterým je kurzor, zůstává v ADC 0 zapnuté, protože tento ESP má pouze port, který čte analogové hodnoty.
Krok 3: WiFi ESP8266 NodeMCU ESP-12E
Krok 4: Zdrojový kód
Založit
Ve funkci Setup definujeme chování pinů, které používáme, v tomto případě LED a POTENTIOMETER.
neplatné nastavení () {Serial.begin (115200) // Pokyny pro práci s barevnými obrázky, které využívají veškerou entradii, // podsvícení a zesílení 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 é uma konstantní que indikace o LED do ESP8266}
Smyčka
V této funkci je logikou načíst hodnotu POT a přiřadit tuto hodnotu (což je intenzita jasu) v 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); }