Tutoriais ESP32 36/55 - Jogo de Adivinhação de Números | Kit de Aprendizado IoT ESP32 da SunFounder

Tutoriais ESP32 36/55 - Jogo de Adivinhação de Números | Kit de Aprendizado IoT ESP32 da SunFounder

Neste tutorial, vamos criar um divertido jogo de adivinhação de números usando o microcontrolador ESP32 junto com um controle remoto infravermelho e um display LCD. O jogador tentará adivinhar um número gerado aleatoriamente entre 0 e 99, com o jogo fornecendo dicas sobre se o palpite é muito alto ou muito baixo. Através deste projeto, você aprenderá como usar o receptor infravermelho, exibir valores em um LCD e gerenciar a entrada do usuário a partir de um controle remoto. Você pode se referir ao vídeo para maior clareza (no vídeo em 00:00).

ESP32_36_guessing_numbe-1
ESP32_36_guessing_numbe-2

Hardware Explicado

Os componentes principais utilizados neste projeto incluem o microcontrolador ESP32, um controle remoto infravermelho, um receptor infravermelho e um display LCD. O ESP32 serve como a unidade de processamento principal e é capaz de gerenciar comunicação sem fio, tornando-se uma escolha versátil para projetos de IoT. O controle remoto infravermelho permite que os usuários insiram palpites sem exigir interação física com a placa, enquanto o LCD exibe o status do jogo e os avisos.

O receptor infravermelho detecta sinais do controle remoto e os decodifica para uso no jogo. Cada pressionamento de botão no controle corresponde a um valor específico que o ESP32 pode interpretar. O display LCD fornece uma interface visual para o usuário, mostrando a faixa de palpite atual e se o palpite estava correto.

Detalhes da Ficha Técnica

Fabricante SunFounder
Número da peça ESP32
Tensão de lógica/IO 3,3 V
Tensão de fornecimento 5 V (via USB)
Corrente de saída (por canal) 12 mA (máx)
Orientação sobre frequência PWM 1 kHz
Limiares de lógica de entrada 0,3 * Vcc até 0,7 * Vcc
Queda de tensão / RDS(on)saturação 0,2 V
Limites térmicos Temperatura de operação: -40 a 85 °C
Pacote Módulo WROOM-32
Notas / variantes Suporta Wi-Fi e Bluetooth

  • Certifique-se de que todos os componentes sejam classificados para 3,3 V e 5 V, quando aplicável.
  • Use resistores de pull-up adequados para o receptor IR para evitar entradas flutuantes.
  • Considere usar um dissipador de calor se estiver operando na corrente máxima de saída por períodos prolongados.
  • Ao usar PWM, mantenha uma frequência em torno de 1 kHz para desempenho ideal.
  • Tenha cuidado com a fiação; assegure-se de que as conexões estão seguras para evitar falhas intermitentes.

Instruções de fiação

ESP32_36_guessing_number_wiring

Para configurar a fiação para o jogo de adivinhação de números, comece conectando o receptor infravermelho. Conecte o fio vermelho do pino direito do receptor à fonte de alimentação de 3,3 V no ESP32. O fio preto deve ir para o terra, enquanto o pino da esquerda do receptor infravermelho se conecta ao pino14no ESP32.

ESP32_36_guessing_number_schematic

Em seguida, conecte o display LCD. Conecte o pino VCC do LCD à fonte de 5 V no ESP32 e o pino de terra ao terra. Os pinos SDA e SCL do LCD devem ser conectados aos pinos21e22respectivamente. Certifique-se de que haja dois espaços vazios entre as conexões SDA e SCL para evitar conflitos de pinos. Por fim, certifique-se de remover quaisquer capas de plástico da bateria antes de ligar a placa.

Exemplos de Código e Tutorial

Os seguintes trechos de código ilustram partes essenciais do programa utilizado para o jogo de adivinhação de números. Começamos incluindo bibliotecas necessárias e definindo identificadores chave.

#include 
#include 
#include 
#include 

const uint16_t IR_RECEIVE_PIN = 14;
IRrecv irrecv(IR_RECEIVE_PIN);
decode_results results;

Neste excerto, incluímos bibliotecas para lidar com a funcionalidade do LCD e do receptor de infravermelho. O pino para o receptor de infravermelho é definido como14, e criamos instâncias dos objetos necessários para gerenciar a entrada e a saída.

void setup() {
  lcd.init();
  lcd.backlight();
  Serial.begin(9600);
  irrecv.enableIRIn();
  initNewValue();
}

Este trecho mostra a função de configuração onde inicializamos o LCD, começamos a comunicação serial e habilitamos o receptor IR. A funçãoinitNewValue()é chamado para gerar um novo número aleatório para o jogador adivinhar.

bool detectPoint() {
  if (count > pointValue) {
    if (count < upper) upper = count;
  } else if (count < pointValue) {
    if (count > lower) lower = count;
  } else if (count == pointValue) {
    count = 0;
    return 1;
  }
  count = 0;
  return 0;
}

Esta função verifica o palpite do jogador em relação ao número gerado aleatoriamente, ajustando os limites superior e inferior de acordo. Se o palpite estiver correto, redefine a contagem e retorna verdadeiro.

O código completo está carregado abaixo do artigo para sua referência.

Demonstração / O Que Esperar

Uma vez que tudo esteja conectado e o código carregado, o jogo irá solicitar que você pressione qualquer número no controle remoto. O jogo então fornecerá feedback sobre suas palpites, atualizando a faixa de números possíveis até que você acerte o número-alvo. Se você pressionar o botão POWER, o jogo reinicia e começa novamente (no vídeo em 02:30).

Os erros comuns incluem garantir que o receptor de infravermelho esteja devidamente orientado e que todas as conexões estejam seguras. Se o jogo não responder, verifique a fonte de energia e confirme se a placa e a porta corretas estão selecionadas no Arduino IDE.

Marcadores de Tempo do Vídeo

  • 00:00 Iniciar
  • 2:17 Introdução ao projeto do jogo
  • 4:37 Fiação
  • 6:15 Código do Arduino explicado
  • Selecionando a Placa ESP32 e a Porta COM no Arduino IDE
  • 16:16 Jogando jogo de adivinhação de números

Imagens

ESP32_36_guessing_number_schematic
ESP32_36_guessing_number_schematic
ESP32_36_guessing_number_wiring
ESP32_36_guessing_number_wiring
ESP32_36_guessing_numbe-1
ESP32_36_guessing_numbe-1
ESP32_36_guessing_numbe-2
ESP32_36_guessing_numbe-2
837-ESP32 Tutorial 36/55- Arduino code for guessing number
Idioma: C++
Copiado!

Recursos e referências

Arquivos📁

Nenhum arquivo disponível.