Tutorial ESP32 33/55 - Dados Digitais usando o kit de aprendizado IoT ESP32 da SunFounder
Neste tutorial, criaremos um dado digital usando um display de sete segmentos e o ESP32 do kit de aprendizado IoT da SunFounder. O projeto permitirá que você role um dado virtual, gerando números de 1 a 6 com o pressionar de um botão. Esta é uma maneira fantástica de explorar as capacidades do ESP32 enquanto aprende sobre a interface com displays e botões. Para maior clareza, não deixe de conferir o vídeo em (no vídeo em 0:00).
Hardware Explicado
Os principais componentes para este projeto incluem o microcontrolador ESP32, um registro de deslocamento 74HC595, um display de sete segmentos e um botão de pressão. O ESP32 é um microcontrolador poderoso que integra Wi-Fi e Bluetooth, tornando-o adequado para aplicações de IoT. O registro de deslocamento 74HC595 nos permite controlar o display de sete segmentos usando menos pinos do que conectando diretamente cada segmento.
O display de sete segmentos mostra números e é controlado pelo envio de dados do registro de deslocamento. O botão de pressão é usado para acionar a rolagem dos dados, gerando um número aleatório que será exibido. Quando pressionado, o botão se conecta ao pino 13 no ESP32, que possui um resistor pull-up interno para mantê-lo em um estado alto quando não está pressionado.
Detalhes da Ficha Técnica
| Fabricante | Texas Instruments |
|---|---|
| Número da peça | 74HC595 |
| Tensão lógica/IO | 2 V a 6 V |
| Tensão de alimentação | 4,5 V a 5,5 V |
| Corrente de saída (por canal) | 6 mA máximo |
| Corrente de pico (por canal) | 35 mA máximo |
| Orientação sobre frequência de PWM | Não aplicável |
| Limites de lógica de entrada | VIH≥ 2 V, VIL≤ 0,8 V |
| Queda de tensão / RDS(on)/ saturação | 0,5 V máx |
| Limites térmicos | 150 °C |
| Pacote | DIP-16 |
| Notas / variantes | Comumente usado em displays digitais |
- Assegure níveis de voltagem adequados (4,5 V a 5,5 V) para um funcionamento confiável.
- Limite a corrente de saída para evitar danos ao registrador de deslocamento.
- Utilize capacitores de desacoplamento perto dos pinos de alimentação para estabilizar a tensão.
- Conecte o display de sete segmentos corretamente para evitar a representação incorreta de números.
- Verifique a fiação em busca de conexões soltas que podem levar a um comportamento inesperado.
Instruções de Fiação

Para ligar os dados digitais, comece configurando as conexões de energia. Conecte o aterramento (linha azul) na sua placa de ensaio ao pino de aterramento no ESP32 e certifique-se de que todos os pontos de aterramento estejam interconectados. Em seguida, conecte um pino de 3,3V do ESP32 ao barramento de energia (linha vermelha) na placa de ensaio.
Para o registrador de deslocamento 74HC595, certifique-se de que o pino 1 está conectado ao barramento de 3,3V e o pino 8 ao terra. Conecte o pino de saída de dados (DS) ao pino 25 no ESP32, o pino de relógio de deslocamento (SHCP) ao pino 26 e o pino de relógio de armazenamento (STCP) ao pino 27. O botão deve ser conectado entre o pino 13 no ESP32 e o terra, permitindo que ele puxe o pino para baixo quando pressionado.
Exemplos de Código e Passo a Passo
No texto, primeiro definimos os pinos usados para o registrador de deslocamento e o botão. O pino do botão é definido comobuttonPine está conectado ao pino 13 no ESP32. O array de dadosdatArraycontém as representações binárias dos números 0-9 para o mostrador de sete segmentos.
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
const int buttonPin = 13;
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
No textosetup()função, definimos o pino do botão como modo de entrada e os pinos do registro de deslocamento como modo de saída. Isso prepara os pinos para ler a entrada do botão e para enviar dados para o display.
void setup ()
{
pinMode(buttonPin,INPUT);
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
A lógica principal do programa é encontrada noloop()função. Ela verifica se o botão está pressionado, gera um número aleatório e chama oshow_number()função para exibir o número no display de sete segmentos.
void loop()
{
if(digitalRead(buttonPin) == LOW)
{
int diceNumber = random(1, 7);
show_number(diceNumber);
delay(50);
}
}
Oshow_number()a função envia o valor apropriado do array de dados para o registrador de deslocamento, que então controla os segmentos do display para mostrar o número gerado. Esta função é crucial para o feedback visual quando o botão é pressionado.
Demonstração / O que Esperar
Quando a configuração estiver concluída e o código for carregado, pressionar o botão gerará um número aleatório entre 1 e 6, que será exibido no display de sete segmentos. Se tudo estiver conectado corretamente, o display deve mostrar um número toda vez que o botão for pressionado. Tenha cuidado com entradas flutuantes; assegure-se de que o botão esteja devidamente conectado ao aterramento para evitar comportamentos erráticos (no vídeo em 1:30).
Marcos de Tempo do Video
- 00:00 Início
- 1:48 Introdução ao projeto
- 3:40 Fiação para Dados Digitais Explicada
- Código Arduino para Dados Digitais explicado
- 19:19 Selecionando a placa ESP32 e a porta COM no Arduino IDE
- 21:00 Demonstração de Dados Digitais
- 22:15 Corrigindo Código Arduino
/*
* // Defina os pinos usados para o 74hc595 e o botão
*/
const int STcp = 27; // ST_CP
const int SHcp = 26; // SH_CP
const int DS = 25; // DS
const int buttonPin = 13;
// Defina um array de valores para exibir números em um display de 7 segmentos.
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int buttonState = false;
void setup ()
{
// Defina o pino do botão para o modo de entrada.
pinMode(buttonPin,INPUT);
// Ajuste os pinos para 74hc595
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
void loop()
{
// Verifique se o botão está pressionado.
if(digitalRead(buttonPin) == LOW)
{
// Gere um número aleatório entre 1 e 6
int diceNumber = random(1, 7);
// Mostre o número no display de 7 segmentos
show_number(diceNumber);
// Atraso de 50 milissegundos
delay(50);
}
}
// Função para exibir um número em um display de 7 segmentos
void show_number(int num)
{
// Conecte o ST_CP ao terra e mantenha-o em nível baixo enquanto você estiver transmitindo.
digitalWrite(STcp, LOW);
// Envie os dados para o número para o registrador de deslocamento.
shiftOut(DS, SHcp, MSBFIRST, datArray[num]);
// Puxe o ST_CP para salvar os dados.
digitalWrite(STcp, HIGH);
}
Common Course Links
Common Course Files
Recursos e referências
-
DocumentaçãoTutorial ESP32 33/55 - Página do documento SunFounder para dados digitaisdocs.sunfounder.com
Arquivos📁
Nenhum arquivo disponível.