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

Ninja Dollar - jogo LCD

Componentes e suprimentos

Arduino UNO
× 1
Adafruit LCD padrão - 16x2 branco em azul
× 1
Breadboard (genérico)
Usei dois para obter mais espaço, você pode usar apenas uma placa de ensaio.
× 2
Potenciômetro de volta única - 10k ohms
× 1
LED (genérico)
× 2
Resistor 1k ohm
× 4
SparkFun Botão de pressão 12 mm
× 2
RobotGeek Buzzer
× 1
Fios de jumpers (genérico)
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)
Para soldar LCD

Sobre este projeto


Este é um jogo simples de LCD. Minha inspiração foi o jogo Dinosaur do Google Chrome, mas adicionei mais algumas mudanças a ele. O guerreiro do dólar se move constantemente e pode pular para evitar os obstáculos e coletar os pontos "estrela". Se ele pular o obstáculo, ele coleta um ponto e se ele pegar a estrela, ele coleta cinco pontos. Ele também pode atirar e remover os obstáculos à sua frente. Existem também diodos leds que indicam se ele salta ou atira. Quando ele coleta 10, 20 ou 30 pontos, ele começa a se mover mais rápido do que antes. Quando ele acumula 50 pontos, você ganha. Se você acertar o obstáculo, você perde. Claro, você pode alterar esses limites facilmente no código. Também adicionei uma campainha passiva que soa quando o guerreiro pula ou atira e uma melodia especial quando você perde ou ganha. Este é o meu primeiro projeto aqui e espero que gostem. Dê-me seus comentários e análises.





O vídeo









Conexões


O módulo LCD (Tela de Cristal Líquido) possui um conector macho de 16 pinos na parte inferior. Conecte-o ao breadboard, conforme mostrado na imagem. Todos os sinais eletrônicos que alimentam e controlam o LCD passam por esse conector.

Esses pinos são (da esquerda para a direita):
  • GND - sinal de aterramento de energia
  • VCC - sinal de potência positivo
  • V0 - ajuste de contraste
  • RS - seleção de registro
  • R / W - seleção de leitura / gravação
  • E - ativar o sinal
  • D0 - bit de dados 0 (não usado aqui)
  • D1 - bit de dados 1 (não usado aqui)
  • D2 - bit de dados 2 (não usado aqui)
  • D3 - bit de dados 3 (não usado aqui)
  • D4 - bit de dados 4
  • D5 - bit de dados 5
  • D6 - bit de dados 6
  • D7 - bit de dados 7
  • A - retroiluminação LED positivo
  • K - retroiluminação LED negativo

Use um fio jumper para conectar o sinal de 5 V no Arduino com a linha vermelha na parte superior da placa de ensaio.

Use um fio jumper para conectar o sinal GND no Arduino com a linha azul na parte superior da placa de ensaio.
  • Conecte o pino VSS ao solo
  • Conecte o pino VDD ao sinal 5V
  • pino V0 para o pino de saída do potenciômetro
  • pino RS para Arduino pino 12
  • pino RW no solo
  • pino E para o pino 11 do Arduino
  • D4 para Arudino pino 5
  • D5 para arduino pino 4
  • D6 para Arduino pino 3
  • D7 para Arduino pino 2
  • Um pino para o sinal 5V
  • K pin para o sinal GND

Conecte os pinos do potenciômetro restantes ao sinal de 5 V e ao sinal de GND.

Se você tiver 3 cigarros piezoelétricos com pino, conecte o pino S ao pino 7 do Arduino, o pino '-' ao GND e o pino restante ao sinal de 5V. Se você tiver 2 buzzer piezo com pino, conecte um pino ao sinal GND e o outro ao pino 7 do Arduino.

Conecte os botões do interruptor de acordo com o esquema. O primeiro botão (botão de salto) é conectado ao pino 1 do Arduino e o segundo (botão de disparo) é conectado ao pino 6 do Arduino. Os leds são controlados apenas pelos botões e não pelo Arduino. O ânodo é conectado ao pino do botão que está conectado ao Arduino e o cátodo é conectado ao aterramento.

Código

  • dollar_warrior
dollar_warrior Arduino
 #include  const int rs =12, en =11, d4 =5, d5 =4, d6 =3, d7 =2; const int buttonPin1 =1; const int buttonPin2 =6; const int buzzer =7; unsigned long pts =0; // definir buttonstatesbool buttonState1 =0; bool buttonState2 =0; // número aleatório para a posição dos obstáculosint randomNums [6]; // número aleatório para o número de obstáculosint randomNum =0; // número aleatório para a posição de ptsint randomNums1 [3]; // número aleatório para o número de ptsint randomNum1 =0; // tempo de retardo inicial, que diminui gradualmenteunsigned int myDelay =500; // fez este booleano para verificar se o botão2 foi pressionado porque se é pressionado uma vez no primeiro for loop i não quero que os obstáculos sejam escritos até o final de itbool temp =0; // esta variável armazena as posições do guerreiro enquanto ele atira. pode haver 16 posições porque o guerreiro tem 16 posições.int tempI [16]; // eu uso esse booleano para verificar se o ponto é catchedbool temp1 =0; // use essa variável para armazenar a posição do ponto capturado. deve ser um array para armazenar a posição de todos os pontos em uma iteração do primeiro loop for. se armazenasse apenas uma posição, o ponto "antigo" voltaria na nova iteraçãoint tempI1 [3]; // use esta variável para ter um número de tiros do guerreiro, que também é o comprimento de uma matriz tempIint button2IsPressed =0; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); void setup () {/ / configurar o número de colunas e linhas do LCD:lcd.begin (16, 2); // define o modo do botão pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (campainha, OUTPUT); lcd.setCursor (4,0); lcd.print ("O JOGO"); lcd.setCursor (2,1); lcd.print ("INICIA"); lcd.print ("5"); atraso (1000); lcd.setCursor (12,1); lcd.print ("4"); atraso (1000); lcd.setCursor (12,1); lcd.print ("3"); atraso (1000); lcd.setCursor (12,1); lcd.print ("2"); atraso (1000); lcd.setCursor (12,1); lcd.print ("1"); atraso (1000); lcd.clear ();} void loop () {aqui:randomNum =random (5); para (int i =0; i  9 &&pts <20) {lcd.setCursor (14,0); myDelay =400; } else if (pts> 19 &&pts <30) {lcd.setCursor (14,0); myDelay =300; } else if (pts> 29 &&pts <50) {myDelay =200; lcd.setCursor (14.0); } else if (pts> =50) {pts =0; myDelay =500; lcd.clear (); lcd.setCursor (5,0); lcd.print ("VITÓRIA"); tom (campainha, 262); atraso (200); tom (campainha, 330); atraso (200); tom (campainha, 392); atraso (100); tom (campainha, 330); atraso (100); tom (campainha, 392); atraso (100); tom (campainha, 523); atraso (200); noTone (campainha); atraso (3000); lcd.clear (); vá aqui; } else lcd.setCursor (15,0); lcd.print (pts); buttonState1 =digitalRead (buttonPin1); buttonState2 =digitalRead (buttonPin2); // colocando obstáculos se o guerreiro não atirou ou atirou, mas também saltou if (! temp) {for (int j =0; j  randomNums [j]) {lcd.setCursor (randomNums [j], 1); lcd.print ("#"); }}} // definindo ptsif (! temp1) {for (int j =0; j  

Esquemas

game_aUIjA6VZxX.fzz

Processo de manufatura

  1. Xadrez
  2. Pinball
  3. Futebol
  4. Jogo Arduino Gyroscope com MPU-6050
  5. DIY 37 LED Roulette Game
  6. 3D RGB Arduclock
  7. MyRiver
  8. Joystick Game
  9. Encontre-me
  10. Osciloscópio DIY 10Hz-50kHz em tela LCD 128x64