Share My Creation chocolate vending machine controlled by a microcontroller ESP8266

Summary: What This Machine Does

This machine is a chocolate vending machine controlled by a microcontroller (likely an ESP8266 or similar). It includes:
Um contador de moedas (detecção de pulso analógico)
Um servo motor que libera chocolates
Um display mostrando mensagens
Mensagens de áudio via comunicação serial
Monitoramento de temperatura
Indicador LED
Entrada de botão para controle manual
Saída do controle remoto (possivelmente RF)
Explicação do código:

Sub Process_Globals​

Variables & Modules Initialized:
Serial1: Interface serial principal (115200 baud)
bc: Conversor de bytes para manipulação de byte-string
ESPin, ESP: Manipular pinos digitais
ssd: display OLED via I2C
Servo: Servo motor para dispensador de chocolate
Temporizadores: Tempo de controle das funções:
Motor_Servo: Controla a operação do motor
Mensagem_Entrega, Mensagem_Credito Mensagem_Aguarde: Temporizadores para mensagens de áudio
Contar_Moeda: Detecção de moedas
Piscar: LED piscando
Ds18b20: Lê o sensor de temperatura DS18B20
Pinos:
Digite: Botão Iniciar (entrada)
Led: LED piscando (saída)
Adc: Entrada analógica para detectar pulsos de moedas
Rele: Controla o relé do ventilador
Remoto: Controle de saída de RF
SerialCom e AstreamCom: Software serial secundário para se comunicar com o módulo de áudio
Contar, Contar_M: Contadores (moedas, leguminosas)
Modo1, MensagemEnviada: Sinalizadores para fluxo lógico
EstadoLed, EstadoPulso: estado do LED, detecção de pulso
onewire, endereço: Usado para ler a temperatura com DS18B20
valorADC: Armazena o valor analógico da entrada de moedas

AppStart (Machine Initialization)​

Initializes OLED display with "Machine" and "Chocolates"
Initializes software serial and asynchronous streams
Configures pins (button, LED, relay, RF remote)
Initializes timers and disables those not immediately needed
Attaches servo motor to pin and moves it to initial position
Prepares DS18B20 sensor

Servo_Motor (Servo Operation)​

Moves servo to open position (0°), waits, then closes (185°)
Turns off timer and resets state variables
Toggles LED on and off to create blinking effect

Aguardar (Wait Message)​

Plays "Please wait, delivering your chocolate" message

Credito (Credit Message)​

Plays "Credit received" message

AstreamCom_NewData​

Prints incoming serial data (commands or feedback from module)

Start_Cout (Coin Counting)​

Enables DS18B20 temperature reading
Displays data on screen
If mode is off and button is pressed: plays "You have no credit" message
Reads analog input to detect pulses from coin sensor:
If signal goes high and hasn't been counted yet → counts pulse
If signal returns to low → ready for next pulse
Once 2 or more pulses detected:
Enables credit message once
If button pressed and credit message finished:
Enables delivery message
Resets counters
Mostrar_NOdisplay
Updates OLED display with coin count
Shows 0 or 2 depending on pulse threshold
Audio Messages Breakdown:
Each buf sends a command to an MP3 player module:
buf3: "You have no credit"
buf4: "Please wait, delivering your chocolate"
buf7: "Credit received"
You can add more messages by uncommenting the others (buf2, buf5, etc.)
https://youtube.com/shorts/0vg59mrI_8A?si=fpTMVubPg60IjpjV
https://www.facebook.com/share/r/1ESJuDQUS3/
 
Top