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

Juego de matriz Snake LED 16x16

Componentes y suministros

Arduino UNO
× 1
Matriz de píxeles LED RGB, NeoPixel NeoMatrix
No estoy seguro de este. Compré mi matriz de led en aliexpress. El enlace está aquí http://ali.pub/4wxs2s
× 1
Cables de puente (genéricos)
× 1
Joystick analógico (genérico)
× 1
Breadboard (genérico)
× 1

Acerca de este proyecto

¡Hola! Estoy aprendiendo las oportunidades de arduino. Y decidí copiar el clásico juego de serpientes arcade de mi antiguo Nokia. Entonces, aquí está.

Usé matriz LED 16x16, joystick y Arduino UNO. No fue fácil porque cada led está conectado de forma coherente. Entonces, la lógica de movimientos es un poco complicada.

Aquí puedes controlar el personaje de la serpiente. Come algo sabroso, crece y muere. El código del programa está listo para actualizarse.

Que se divierta y disfrute. Si te gusta, no te lo pienses dos veces para suscribirte a mi youtube e instagram :) Están en ruso, pero haré los subtítulos muy pronto.

Código

  • Código
Código C / C ++
 #include  // configuración de matriz # define NUM_LEDS 256 # define DATA_PIN 3 # define BRIGHTNESS 8 // configuración de joystick # define pinX A2 // ось X джойстика # define pinY A1 // ось Y джойстика # define swPin 2 // кнопка джойстикаint serpiente [256]; // conjunto de elementos de serpienteint snakeSize =2; // tamaño real de la serpiente int snakeSpeed ​​=500; int row; // fila numberint col; // número de columna en lastDirection =135; // dirección de inicioint i, newDirection, OlddX =1, OlddY, f; int rojo, verde, azul, fred, fgreen, fblue; // leds de coloresCRGB [NUM_LEDS]; configuración vacía () {rojo =aleatorio (0, 255); verde =aleatorio (0, 255); azul =aleatorio (0, 255); fred =aleatorio (127, 255); fgreen =aleatorio (127, 255); fblue =aleatorio (127, 255); Serial.begin (9600); pinMode (pinX, ENTRADA); pinMode (pinY, ENTRADA); pinMode (swPin, ENTRADA); digitalWrite (swPin, HIGH); FastLED.addLeds  (leds, NUM_LEDS); FastLED.setBrightness (BRILLO); para (i =0; i <=255; i ++) {serpiente [i] =0; } para (i =0; i <=tamaño de la serpiente; i ++) {serpiente [i] =última dirección + i; } f =aleatorio (0, 255); FastLED.show ();} int Snakedirection (int último, int dX, int dY) {dX =map (dX, 0, 1000, -1, 1); dY =mapa (dY, 0, 1000, -1, 1); if (dX ==0 &&dY ==0 &&OlddX! =dX) {dX =OlddX; } si (dY ==0 &&dX ==0 &&OlddY! =dY) {dY =OlddY; } int newDirection =last; if (dX! =0) {// moviéndose en la dirección X if (fila &1) {if (col ==0 &&dX ==1) {newDirection =last -15; } más si (col ==15 &&dX ==-1) {nuevaDirección =última +15; } else newDirection =last + dX; // четная} else {if (col ==0 &&dX ==1) {newDirection =last +15; } más si (col ==15 &&dX ==-1) {nuevaDirección =última -15; } else newDirection =last - dX; // не четная}} if (dY <0) {// moviéndose en la dirección Y ABAJO if (row ==15 &&dY ==-1) {newDirection =col;} else if (row &1) {newDirection =last + ( col * 2) +1; // четная} else {newDirection =last + (16-col-1) + (16-col); // не четная}} if (dY> 0) {// moviéndose en la dirección Y ARRIBA if (fila ==0 &&dY ==1) {newDirection =255 - col;} else if (fila &1) {newDirection =last - (último - 16 * fila) - (16 - col); // четная} else {newDirection =last - (col * 2) -1; // не четная}} OlddX =dX; OlddY =dY; return newDirection;} int snakeMove (int snakeDirection) {for (i =0; i <=255; i ++) {if (snake [i] ==snakeDirection) {muerte (); }} FastLED.clear (); para (i =tamaño de serpiente; i> =1; i -) {serpiente [i] =serpiente [i-1]; } snake [0] =snakeDirection; para (i =0; i <=255; i ++) {if (serpiente [i]) {leds [serpiente [i]]. setRGB (rojo, verde, azul); }} FastLED.show (); fila =(int) (snakeDirection / 16); // número de fila if (fila &1) {col =(fila + 1) * 16 - snakeDirection - 1; } else {col =snakeDirection - fila * 16; } return snakeDirection;} void food (int comido) {if (comido ==f) {snakeSize ++; f =aleatorio (0, 255); rojo =fred; verde =fverde; azul =fazul; fred =aleatorio (0, 255); fgreen =aleatorio (0, 255); fblue =aleatorio (0, 255); snakeSpeed ​​=snakeSpeed ​​/ 1.1; } else {leds [f] .setRGB (fred, fgreen, fblue); FastLED.show (); }} muerte vacía () {tamaño de serpiente =2; snakeSpeed ​​=500; rojo =255; verde =0; azul =0; } color vacío (booleano sw) {if (! sw) {rojo =aleatorio (0,255); verde =aleatorio (0,255); azul =aleatorio (0,255); }} bucle vacío () {color (digitalRead (swPin)); newDirection =Snakedirection (lastDirection, analogRead (pinX), analogRead (pinY)); lastDirection =snakeMove (nuevaDirección); comida (newDirection); delay (snakeSpeed);} 

Esquemas


Proceso de manufactura

  1. Controlador de juego Arduino
  2. Juego Arduino Pong en Matrix 24x16 con MAX7219
  3. Arduino Nano Tetris Game en una matriz casera de 16x8
  4. ¡Arduino con Bluetooth para controlar un LED!
  5. Matriz LED + Pantalla de puerta con sensor de movimiento [Arduino Holiday]
  6. Arduino Cuadrúpedo
  7. Pixel Chaser Game
  8. Reloj Flip Arduino de matriz de un solo LED
  9. Mezclador de colores Arduino RGB
  10. Controlar una matriz de LED con Arduino Uno
  11. Juego DIY Arduino 1D Pong con tira de LED WS2812