Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Ninja Dollar - Juego LCD

Componentes y suministros

Arduino UNO
× 1
LCD estándar Adafruit - 16x2 blanco sobre azul
× 1
Breadboard (genérico)
Usé dos para tener más espacio, solo puedes usar una protoboard.
× 2
Potenciómetro de una sola vuelta - 10k ohmios
× 1
LED (genérico)
× 2
Resistencia 1k ohm
× 4
Interruptor de botón SparkFun de 12 mm
× 2
RobotGeek Buzzer
× 1
Cables de puente (genéricos)
× 1

Herramientas y máquinas necesarias

Soldador (genérico)
Para soldar LCD

Acerca de este proyecto

Este es un juego de LCD simple. Mi inspiración fue el juego de dinosaurios de Google Chrome, pero le agregué algunos cambios más. El guerrero del dólar se mueve constantemente y puede saltar para esquivar los obstáculos y recoger los puntos "estrella". Si salta el obstáculo, acumula un punto y si atrapa la estrella, acumula cinco puntos. También puede disparar y eliminar los obstáculos frente a él. También hay diodos led que indican si salta o dispara. Cuando acumula 10, 20 o 30 puntos comienza a moverse más rápido que antes. Cuando acumula 50 puntos, ganas. Si golpea el obstáculo, pierde. Por supuesto, puede cambiar estos límites fácilmente en el código. También agregué un timbre pasivo que emite un sonido cuando el guerrero salta o dispara y una melodía especial cuando pierdes o ganas. Este es mi primer proyecto aquí y espero que les guste. Dame tus comentarios y reseñas.

El video

Conexiones

El módulo LCD (pantalla de cristal líquido) tiene un cabezal macho de 16 pines en la parte inferior. Conéctelo a la placa de pruebas como se muestra en la imagen. Todas las señales electrónicas que alimentan y controlan la pantalla LCD pasan por este encabezado.

Estos pines son (de izquierda a derecha):

  • GND - señal de tierra de potencia
  • VCC:señal de potencia positiva
  • V0 - ajuste de contraste
  • RS - registro seleccionar
  • R / W:selección de lectura / escritura
  • E - habilitar señal
  • D0 - bit de datos 0 (no se usa aquí)
  • D1:bit de datos 1 (no se usa aquí)
  • D2:bit de datos 2 (no se usa aquí)
  • D3:bit de datos 3 (no se usa aquí)
  • D4 - bit de datos 4
  • D5 - bit de datos 5
  • D6 - bit de datos 6
  • D7 - bit de datos 7
  • A - LED de retroiluminación positiva
  • K - LED de retroiluminación negativa

Use un cable de puente para conectar la señal de 5V en el Arduino con la fila roja en la parte superior de la placa de pruebas.

Utilice un cable de puente para conectar la señal GND en el Arduino con la fila azul en la parte superior de la placa de pruebas.

  • Conecte el pin VSS al suelo
  • Conecte el pin VDD a la señal de 5V
  • Pin V0 al pin de salida del potenciómetro
  • Pin RS al pin 12 de Arduino
  • Pin RW al suelo
  • Pin E al pin 11 de Arduino
  • D4 al pin 5 de Arudino
  • D5 al pin 4 de arduino
  • D6 al pin 3 de Arduino
  • D7 al pin 2 de Arduino
  • Un pin a la señal de 5V
  • Pin K a la señal GND

Conecte los pines restantes del potenciómetro a la señal de 5V y la señal GND.

Si tiene un zumbador piezoeléctrico de 3 pines, conecte el pin S al pin Arduino 7, el pin '-' al GND y el pin restante a la señal de 5V. Si tiene un zumbador piezoeléctrico de 2 clavijas, conecte una clavija a la señal GND y la otra a la clavija Arduino 7.

Conecte los botones del interruptor de acuerdo con los esquemas. El primer botón (botón de salto) está conectado al pin 1 de Arduino y el segundo (botón de disparo) está conectado al pin 6 de Arduino. Los leds son controlados solo por los botones y no por Arduino. El ánodo está conectado al pin del botón que está conectado al Arduino y el cátodo está conectado a tierra.

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; // set buttonstatesbool buttonState1 =0; bool buttonState2 =0; // número aleatorio para la posición de los obstáculosint randomNums [6]; // número aleatorio para el número de obstáculosint randomNum =0; // número aleatorio para la posición de ptsint randomNums1 [3]; // número aleatorio para el número de ptsint randomNum1 =0; // tiempo de retardo de inicio, que disminuye gradualmente sin firmar int myDelay =500; // hizo este booleano para verificar si se presiona el botón2 porque si se presiona una vez en el primer bucle for. Quiero que los obstáculos no se escriban hasta el final de itbool temp =0; // esta variable almacena las posiciones del guerrero mientras dispara. puede haber 16 posiciones porque el guerrero tiene 16 posiciones.int tempI [16]; // utilizo este booleano para verificar si el punto está atrapado bool temp1 =0; // uso esta variable para almacenar la posición del punto atrapado. debe ser una matriz para almacenar la posición de todos los puntos en una iteración del primer ciclo for. si almacenaba solo una posición, entonces el punto "antiguo" volvería a aparecer en la nueva iteración en tempI1 [3]; // use esta variable para tener varias tomas del guerrero, que también es la longitud de una matriz tempIint button2IsPressed =0; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); void setup () {/ / configurar el número de columnas y filas de la pantalla LCD:lcd.begin (16, 2); // establecer el modo de pin de botones pinMode (buttonPin1, INPUT); pinMode (buttonPin2, ENTRADA); pinMode (zumbador, SALIDA); lcd.setCursor (4,0); lcd.print ("EL JUEGO"); lcd.setCursor (2,1); lcd.print ("EMPIEZA EN"); lcd.print ("5"); retraso (1000); lcd.setCursor (12,1); lcd.print ("4"); retraso (1000); lcd.setCursor (12,1); lcd.print ("3"); retraso (1000); lcd.setCursor (12,1); lcd.print ("2"); retraso (1000); lcd.setCursor (12,1); lcd.print ("1"); retraso (1000); lcd.clear ();} bucle vacío () {aquí:randomNum =random (5); for (int i =0; i  9 &&pts <20) {lcd.setCursor (14,0); myDelay =400; } más si (puntos> 19 &&puntos <30) {lcd.setCursor (14,0); myDelay =300; } más si (pts> 29 &&pts <50) {myDelay =200; lcd.setCursor (14,0); } más si (puntos> =50) {puntos =0; myDelay =500; lcd.clear (); lcd.setCursor (5,0); lcd.print ("VICTORIA"); tono (zumbador, 262); retraso (200); tono (zumbador, 330); retraso (200); tono (zumbador, 392); retraso (100); tono (zumbador, 330); retraso (100); tono (zumbador, 392); retraso (100); tono (zumbador, 523); retraso (200); noTone (zumbador); retraso (3000); lcd.clear (); ir aquí; } else lcd.setCursor (15,0); lcd.print (pts); buttonState1 =digitalRead (buttonPin1); buttonState2 =digitalRead (buttonPin2); // poniendo obstáculos si el guerrero no disparó o disparó pero también saltó if (! temp) {for (int j =0; j  randomNums [j]) {lcd.setCursor (randomNums [j], 1); lcd.print ("#"); }}} // configurando ptsif (! temp1) {for (int j =0; j   

Esquemas

game_aUIjA6VZxX.fzz

Proceso de manufactura

  1. Ajedrez
  2. Pinball
  3. Fútbol
  4. Juego de giroscopio Arduino con MPU-6050
  5. Juego de ruleta DIY 37 LED
  6. Arduclock 3D RGB
  7. Mi Río
  8. Juego de joystick
  9. Encuéntrame
  10. Osciloscopio DIY de 10Hz-50kHz en pantalla LCD de 128x64
  11. Pequeño vagabundo