ESP32 - Piscar Vários LEDs

Este tutorial ensina como programar o ESP32 para piscar vários LEDs ao mesmo tempo sem usar a função delay.

Sobre o LED

Temos um tutorial específico sobre LED. O tutorial contém informações detalhadas e instruções passo a passo sobre pinagem do hardware, princípio de funcionamento, ligação ao ESP32, código ESP32... Saiba mais sobre eles no link a seguir:

Diagrama de Ligação

Diagrama de ligação ESP32 vários LEDs

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Código ESP32 - Piscar Vários LEDs

Para piscar vários LEDs, não podemos usar a função delay(). Em vez disso, precisamos usar a função millis() e gerenciar os timestamps.

Gerenciar timestamps ao piscar vários LEDs pode ser desafiador para iniciantes. Felizmente, a biblioteca ezLED simplifica o processo de piscar vários LEDs, gerenciando os timestamps internamente. Isso elimina a necessidade de o usuário lidar com o gerenciamento de timestamps ao utilizar essa biblioteca. Além disso, você pode tornar o código mais claro e curto usando um array de LEDs.

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-blink-multiple-led */ #include <ezLED.h> // ezLED library #define PIN_LED_1 16 // The ESP32 pin GPIO16 connected to LED 1 #define PIN_LED_2 17 // The ESP32 pin GPIO17 connected to LED 2 #define PIN_LED_3 18 // The ESP32 pin GPIO18 connected to LED 3 ezLED led1(PIN_LED_1); // create ezLED object that attach to pin PIN_LED_1 ezLED led2(PIN_LED_2); // create ezLED object that attach to pin PIN_LED_2 ezLED led3(PIN_LED_3); // create ezLED object that attach to pin PIN_LED_3 void setup() { Serial.begin(9600); led1.blink(500, 500); // 500ms ON, 500ms OFF, blink immediately led2.blink(200, 800); // 200ms ON, 800ms OFF, blink immediately led3.blink(200, 200); // 200ms ON, 200ms OFF, blink immediately } void loop() { led1.loop(); // MUST call the led1.loop() function in loop() led2.loop(); // MUST call the led2.loop() function in loop() led3.loop(); // MUST call the led3.loop() function in loop() // DO SOMETHING HERE }

Passos Rápidos

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
  • Faça a ligação conforme a imagem acima.
  • Conecte a placa ESP32 ao seu PC por meio de um cabo USB Type-C
  • Abra a Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Clique no ícone Libraries na barra esquerda da Arduino IDE.
  • Pesquise “ezLED” e encontre a biblioteca de LED da ArduinoGetStarted
  • Clique no botão Install para instalar a biblioteca ezLED.
Biblioteca de LED ESP32
  • Copie o código acima e cole-o na Arduino IDE.
  • Compile e faça upload do código para a placa ESP32 clicando no botão Upload na Arduino IDE
Como fazer upload do código ESP32 na Arduino IDE
  • Verifique o estado dos LEDs

Código ESP32 - Piscar Vários LEDs usando array

Podemos otimizar o código acima usando um array de LEDs. O código abaixo usa o array para gerenciar os objetos LED.

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-blink-multiple-led */ #include <ezLED.h> // ezLED library #define NUM_LED 3 // three LEDs #define PIN_LED_1 16 // The ESP32 pin GPIO16 connected to LED 1 #define PIN_LED_2 17 // The ESP32 pin GPIO17 connected to LED 2 #define PIN_LED_3 18 // The ESP32 pin GPIO18 connected to LED 3 ezLED ledArray[NUM_LED] = { ezLED(PIN_LED_1), // create ezLED object that attach to pin PIN_LED_1 ezLED(PIN_LED_2), // create ezLED object that attach to pin PIN_LED_2 ezLED(PIN_LED_3) // create ezLED object that attach to pin PIN_LED_3 }; void setup() { Serial.begin(9600); ledArray[0].blink(500, 500); // 500ms ON, 500ms OFF, blink immediately ledArray[1].blink(200, 800); // 200ms ON, 800ms OFF, blink immediately ledArray[2].blink(200, 200); // 200ms ON, 200ms OFF, blink immediately } void loop() { for (int i = 0; i < NUM_LED; i++) ledArray[i].loop(); // MUST call the led.loop() function in loop() // DO SOMETHING HERE }

Para piscar de forma flexível, consulte as outras funções da biblioteca ezLED

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!