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

Jogo de matriz Snake LED 16x16

Componentes e suprimentos

Arduino UNO
× 1
RGB LED Pixel Matrix, NeoPixel NeoMatrix
Não tenho certeza sobre este. eu comprei minha matriz de led no aliexpress. O link está aqui http://ali.pub/4wxs2s
× 1
Fios de jumpers (genérico)
× 1
Joystick analógico (genérico)
× 1
Breadboard (genérico)
× 1

Sobre este projeto


Olá! Estou aprendendo oportunidades de arduino. E decidi copiar o clássico jogo de arcade da cobra do meu antigo nokia. Então aqui está.

Usei matriz LED 16x16, joystick e Arduino UNO. não foi fácil, cada led está conectado de forma consistente. Portanto, a lógica de movimento é um pouco complicada.

Aqui você pode controlar o personagem da cobra. Coma alguma comida saborosa, cresça e morra. O código do programa está pronto para ser atualizado.

Se divirta e aproveite. Se você gosta, não pense duas vezes para assinar meu youtube e instagram :) Eles estão em russo, mas vou fazer legendas em breve.








Código

  • Código
Código C / C ++
 #include  // configurações da matriz # define NUM_LEDS 256 # define DATA_PIN 3 # define BRIGHTNESS 8 // configurações do joystick # define pinX A2 // ось X джойстика # define pinY A1 // ось Y джойстика # define swPin 2 // кнопка джойстикаint snake [256]; // array de elementos de cobraint snakeSize =2; // tamanho real da cobra int snakeSpeed ​​=500; int row; // linha numberint col; // coluna numberint lastDirection =135; // inicia directionint i, newDirection, OlddX =1, OlddY, f; int red, green, blue, fred, fgreen, fblue; // leds colorsCRGB [NUM_LEDS]; void setup () {red =random (0, 255); verde =aleatório (0, 255); azul =aleatório (0, 255); fred =aleatório (127, 255); fgreen =aleatório (127, 255); f azul =aleatório (127, 255); Serial.begin (9600); pinMode (pinX, INPUT); pinMode (pinY, INPUT); pinMode (swPin, INPUT); digitalWrite (swPin, HIGH); FastLED.addLeds  (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); para (i =0; i <=255; i ++) {cobra [i] =0; } para (i =0; i <=snakeSize; i ++) {snake [i] =lastDirection + i; } f =aleatório (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; } if (dY ==0 &&dX ==0 &&OlddY! =dY) {dY =OlddY; } int newDirection =last; if (dX! =0) {// movendo na direção X if (linha &1) {if (col ==0 &&dX ==1) {newDirection =last -15; } else if (col ==15 &&dX ==-1) {newDirection =last +15; } else newDirection =last + dX; // четная} else {if (col ==0 &&dX ==1) {newDirection =last +15; } else if (col ==15 &&dX ==-1) {newDirection =last -15; } else newDirection =last - dX; // не четная}} if (dY <0) {// movendo na direção Y PARA BAIXO 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) {// movendo na direção Y UP if (row ==0 &&dY ==1) {newDirection =255 - col;} else if (row &1) {newDirection =last - (última - 16 * linha) - (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) {death (); }} FastLED.clear (); para (i =tamanho da cobra; i> =1; i -) {cobra [i] =cobra [i-1]; } snake [0] =snakeDirection; para (i =0; i <=255; i ++) {if (cobra [i]) {leds [cobra [i]]. setRGB (vermelho, verde, azul); }} FastLED.show (); linha =(int) (snakeDirection / 16); // número da linha if (linha &1) {col =(linha + 1) * 16 - snakeDirection - 1; } else {col =snakeDirection - linha * 16; } return snakeDirection;} void food (int comido) {if (comido ==f) {snakeSize ++; f =aleatório (0, 255); vermelho =fred; verde =fgreen; blue =fblue; fred =aleatório (0, 255); fgreen =aleatório (0, 255); f azul =aleatório (0, 255); snakeSpeed ​​=snakeSpeed ​​/ 1.1; } else {leds [f] .setRGB (fred, fgreen, fblue); FastLED.show (); }} void death () {snakeSize =2; snakeSpeed ​​=500; vermelho =255; verde =0; azul =0; } void color (boolean sw) {if (! sw) {red =random (0,255); verde =aleatório (0,255); azul =aleatório (0,255); }} void loop () {color (digitalRead (swPin)); newDirection =Snakedirection (lastDirection, analogRead (pinX), analogRead (pinY)); lastDirection =snakeMove (newDirection); comida (nova direção); atraso (snakeSpeed);} 

Esquemas


Processo de manufatura

  1. Controlador de jogo Arduino
  2. Jogo Arduino Pong em Matriz 24x16 com MAX7219
  3. Jogo Arduino Nano Tetris em Matriz 16x8 caseira
  4. Arduino com Bluetooth para controlar um LED!
  5. Matriz LED + Display da porta do sensor de movimento [Arduino Holiday]
  6. Arduino Quadruped
  7. Jogo Pixel Chaser
  8. Relógio giratório Arduino de matriz de LED único
  9. Arduino RGB Color Mixer
  10. Controlando uma matriz de LED com Arduino Uno