Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Kit Caça-Níqueis Alienígena com ATmega328P

Componentes e Materiais

Microchip ATmega328P-PU (2 unidades: uma para caça-níqueis, outra para display I2C escravo) × 2
Display 7 segmentos 8 dígitos (saldo de créditos) × 1
Matriz 8×8, 4 segmentos, MAX7219 (simula rolos; usa 3 das 4 matrizes) × 1
LCD Serial I2C 20×4 Backlight Azul (menu de opções) × 1
Protoboard 830 pontos (2 unidades) × 2
Botões Momentâneos (1 giro, 3 navegação menu, 2 ground pin 1 ATmegas) × 6
LED RGB Difuso Cátodo Comum (sinalização) × 1
LED Genérico (indica alimentação) × 1
Resistor 10 kΩ (pull-up botões e pin 1 ATmegas) × 6
Resistor 1 kΩ (entre botões e pinos entrada ATmega) × 4
Resistor 330 Ω (leads R, G, B do LED RGB) × 3
Cristal 16 MHz (2 unidades: 16 MHz cada ATmega) × 2
Chave Deslizante (liga/desliga alimentação) × 1
Buzzer Passivo (2 unidades: um por ATmega) × 2
Capacitor 22 pF (4 unidades: cristal) × 4
Capacitor 0,1 µF (100 nF) (6 unidades: desacoplamento) × 6
Capacitor 100 nF (opcional: se usar adaptador USB serial Arduino Mini) × 1
Capacitor 10 µF (suavizar alimentação) × 2
Regulador Linear 7805 (5 V) × 1
Jumpers (boa quantidade) × 1
Fonte 5 V × 1
Adaptador Serial USB Arduino Mini (opcional: programar ATmega328P-PU) × 1
Adaptador FTDI USB-TTL Serial (2×: programar in-circuit) × 1
Protoboard Soldável Tamanho Completo × 1
Protoboard Soldável Mini SparkFun × 1
Solda 60/40 Rosin Core 0,8 mm × 1
Caixa Projeto Plástico Transparente À Prova d'Água (gabinete final) × 1

Ferramentas Necessárias

Aplicativos e Serviços Online

Sobre o Projeto

Caça-Níqueis Temático Alienígena com ATmega

Kit Caça-Níqueis Alienígena com ATmega328P
Kit Caça-Níqueis Alienígena com ATmega328P

Inspirado no Alien Invasion Slot Machine de Cory Potter, expandi a ideia. Dois ATmega328P-PU: um principal (lógica do jogo, 3 matrizes 8×8 como rolos, LCD 20×4, botões, buzzer, LED RGB) e um escravo I2C (display 7 segmentos 8 dígitos para saldo de créditos). Projeto educacional/entretenimento – simula caça-níqueis real o mais fiel possível. Atualmente em protoboard; gabinete chegará da China para soldagem final. Levou ~2 meses no tempo livre. Maior desafio: matemática para comportamento realista (probabilidades, tabela de pagamentos, índice de volatilidade) após centenas de milhões de simulações.

Como o Jogo Funciona

3 rolos com 25 símbolos únicos cada (uma das 4 matrizes 8×8 não usada). 5 formas de ganhar:

Kit Caça-Níqueis Alienígena com ATmega328P

Funcionalidades

Menu no LCD 20×4 I2C com 2 botões navegação + 1 seleção. Debounce sofisticado usando interrupção externa (PCINT). Menu principal (role para ver 6 itens):

Kit Caça-Níqueis Alienígena com ATmega328P
Kit Caça-Níqueis Alienígena com ATmega328P
Kit Caça-Níqueis Alienígena com ATmega328P

Modo Automático: Selecione "Auto" no menu Configurações → jogo roda sozinho até desativar ou 1.000.000 jogadas. Essencial para testes. Também desliga som aqui.

Kit Caça-Níqueis Alienígena com ATmega328P

Métricas: Visualize no LCD ou Monitor Serial (RX/TX via USB): saldo, jackpots, vitórias por tipo. Permitiu simulações para validar tabela de pagamentos. Tabela não configurável (fixa após definição). Volatilidade configurável exigiria mais trabalho.

Kit Caça-Níqueis Alienígena com ATmega328P
Kit Caça-Níqueis Alienígena com ATmega328P

Reset: Zera métricas (exceto escritas EEPROM). ATmega328 suporta ~100.000 escritas/endereço. Com 512 kB EEPROM e uso fracionário, seria possível mover endereços das métricas próximo ao limite – não implementei.

Hold (vantagem da casa %): Configurável no menu. Lembre: após Reset, reconfigure o Hold. Jurisdições limitam hold máximo (típico 15%). Hold alto pode afugentar jogadores; lucro depende mais de localização/design do jogo.

Kit Caça-Níqueis Alienígena com ATmega328P

Saldo de créditos sempre no display 7 segmentos 8 dígitos (escravo I2C).

Kit Caça-Níqueis Alienígena com ATmega328P

A Matemática

Muito trabalho para realismo. Probabilidades calculadas e tabela de pagamentos desenhada para Índice de Volatilidade (VI) aceitável. VI mede previsibilidade: VI alto = mais imprevisível (jogador ou casa ganham mais). Mesmo jogo em cassinos diferentes pode ter VIs diferentes (alterando pagamentos).

Probabilidades e pagamentos para aposta 1 crédito:

Kit Caça-Níqueis Alienígena com ATmega328P

Cálculos:

Usei planilha (3 abas) para ajustar pagamentos até VI < 20 e lucro esperado ≈ 0 (hold 0%). Defini THREE_SPACESHIP_PAYOUT, THREE_SYMBOL_PAYOUT, etc. no código. Rodei 5 simulações de 1.000.001 jogadas (hold 0%), comparei resultados reais com calculados – probabilidades bateram. Verifiquei intervalo de confiança 90% da renda (tabela "Understanding Potential Income").

Kit Caça-Níqueis Alienígena com ATmega328P
Kit Caça-Níqueis Alienígena com ATmega328P

Depois, hold 15% e mais 5 simulações – renda real dentro do esperado.

Kit Caça-Níqueis Alienígena com ATmega328P
Kit Caça-Níqueis Alienígena com ATmega328P

Planilha (senha "password") no código GitHub. Se achar erros, me avise – não sou matemático nem programador C de profissão.

O Código

Não farei linha a linha. Código extensamente comentado. Use a Força, leia a fonte. Para manipulação de registradores AVR sem biblioteca Arduino, recomendo livro Make: AVR Programming de Elliott Williams.

Código no GitHub: github.com/danmurphy/ATmega-Alien-Slot-Machine

Construindo o Caça-Níqueis

Usei placa FTDI USB-Serial para programar ambos ATmega in-circuit (conexões não no esquemático Fritzing). Para configurar FTDI na protoboard: guia SparkFun. Coloque capacitor 100 nF em série entre pino 1 (reset) do ATmega e RTS do FTDI para auto-reset na programação. Alternativamente, use Arduino Uno como programador: tutorial oficial. Se comprar chips na China/eBay, precisará gravar bootloader – use AVRISP mkII, USBtinyISP ou o próprio Arduino Uno.

Peças

Se tiver componentes pequenos (resistores, capacitores, cristal, regulador), gasta < US$ 40. Com gabinete e perfboard, ~US$ 60. Fornecedores: AliExpress, Amazon, eBay. LCD 20×2 também serve – mude LCD_SCREEN_HEIGHT de 4 para 2. LCD deve ser I2C; se não, use módulo adaptador I2C PCF8574.

Kit Caça-Níqueis Alienígena com ATmega328P

Gabinete encomendado (AliExpress, US$ 13,80): 37×37×15 cm, tampa transparente. Espero que caiba tudo sem furos na tampa. Sugestões bem-vindas.

Kit Caça-Níqueis Alienígena com ATmega328P

Software

Instale todas as bibliotecas listadas na seção "Componentes" no Arduino IDE. Como instalar bibliotecas.

Ferramentas Manuais

Esquemático

Esquemático Fritzing disponível no GitHub (arquivo .fzz incluso). Abaixo, guias de ligação (o Fritzing fica lotado):

Kit Caça-Níqueis Alienígena com ATmega328P
Kit Caça-Níqueis Alienígena com ATmega328P
Kit Caça-Níqueis Alienígena com ATmega328P

Caça-Níqueis (Mestre)

Display Escravo (Créditos)

Resumo

Projeto muito divertido. Maior desafio: matemática para tabela de pagamentos funcional. Espero que se divirtam construindo. Problemas, dúvidas ou defeitos no código/matemática: dan-murphy@comcast.net. Farei Parte II quando enclausurar tudo.

Código

SlotMachine.ino (trecho)

/* SlotMachine.ino v1.0 2018/07/01-2018/08/29 ATmega328P-PU @16MHz C
   Caça-níqueis educacional/entretenimento com:
   - ATmega328P @16MHz
   - Display 7 seg 8 dígitos I2C escravo (ATmega328P @16MHz, código separado)
   - 3 matrizes 8×8 LED MAX7219 (rolos)
   - LCD I2C 20×4 (menus)
   - Buzzer, botões, LED RGB
   - Configurações via menu LCD
   - Aposta ajustável
   Defeitos: às vezes rolos não giram; crash se payout > 1.000.000.
   TODO: brown-out detection, watchdog.
   Avisos: debug excessivo gasta RAM; jogo retorna ~hold% à casa.
   Autor: Daniel Murphy 
   Licença: GPL v3+
   Bibliotecas: LedControl, TimerFreeTone, LiquidCrystal_I2C, Wire
*/
#include 
#include 
#include 
#include "LedControl.h"
#include "SlotMachine.h"
#include 
#include 
#include 
#include 

// Tabela de pagamentos (hold 0%, VI=16.43)
#define THREE_SPACESHIP_PAYOUT 600
#define THREE_SYMBOL_PAYOUT 122
#define TWO_SPACESHIP_PAYOUT 50
#define ONE_SPACESHIP_PAYOUT 3
#define TWO_SYMBOL_PAYOUT 2

// ... (código completo no GitHub)

SlotMachine.h (trecho – símbolos e notas)

const byte reel[] = {
  // 0 estrela
  B10011001, B01011010, B00111100, B11111111, B11111111, B00111100, B01011010, B10011001,
  // 1 um ponto no dado
  B00000000, B00000000, B00000000, B00011000, B00011000, B00000000, B00000000, B00000000,
  // 2 três barras
  B11111111, B11111111, B00000000, B11111111, B11111111, B00000000, B11111111, B11111111,
  // ... (25 símbolos de 8 bytes cada)
  // 18 Nave Espacial (índice 144)
  B00000000, B00000000, B00111100, B01111110, B10101011, B01111110, B00111100, B00000000,
  // ... demais símbolos
};

#define NOTE_B0 31
#define NOTE_C1 33
// ... até NOTE_DS8 4978

slotCreditsDisplaySlave.ino (trecho)

/* slotCreditsDisplaySlave.ino v1.0 2018/07/01-2018/07/29 ATmega328P-PU @16MHz C
   Escravo I2C para display 7 segmentos 8 dígitos (saldo créditos)
*/
#include 
#include "LedControl.h"
#define BAUD_RATE 38400
#define CREDITS_SLAVE_ADDR 16
#define DISPLAY_DELAY 5
#define DEBUG 1
#define BUZZER_DDR DDRB
#define BUZZER_PORT PORTB
#define BUZZER_PIN DDB1
#define TONE_PIN 9
#define BEEP_LENGTH 100

LedControl lc = LedControl(12, 11, 10, 1); // DIN, CLK, LOAD, 1 chip
static const int slaveAddress = CREDITS_SLAVE_ADDR;
long volatile theCredits[10] = {0};
signed long volatile displayedBalance = 0;
signed long volatile startingCreditBalance = 0;
signed long volatile endingCreditBalance;
signed int volatile increment;
boolean volatile updateDisplayFlag = false;

// ... (setup, loop, receiveEvent, showBalance, scrollDigits)

Processo de manufatura

  1. Aparelhos de EEG: Design, Fabricação e Aplicações Emergentes
  2. Máquinas de Venda Automática: Uma Indústria de US$ 36,6 Bilhões nos EUA
  3. Máquinas de Votação: História, Tecnologia e Padrões
  4. Guia Especialista de Máquinas de Troco Modernas: Design, Componentes e Tendências Futuras
  5. Visão Abrangente de Aparelhos de ECG Modernos: Tecnologia, Fabricação e Inovações Futuras
  6. A Evolução e Fabricação de Máquinas de Costura: Da Inovação do Século XIX à Automação Moderna
  7. Partes Essenciais do Torno: Funções e Visão Geral
  8. Entendendo Tornos: História, Tipos e Aplicações
  9. Componentes Principais de uma Fresadora Explicados
  10. O que é uma Máquina? Um Guia Completo