✅ SNAKE GAME con MATRIZ LED 8x8 || MINIJUEGO con ARDUINO || [Explicado paso a paso] FACIL
HTML-код
- Опубликовано: 30 янв 2025
- ▶CÓDIGO DE PROGRAMACIÓN + ESQUEMA DE CONEXIONES: www.robotuno.c...
▶LISTA de MATERIALES:
🟣 Pack de servomotores: amzn.to/2KbTCnp
🟠 Motor paso a paso: amzn.to/36WMo0d
🟢 Placa Arduino: amzn.to/2Q9yYbd
🟣 Cables: amzn.to/2X7xwaP
📢 Mi kit de iniciación en ARDUINO: amzn.to/2QbOxPA
+++++++++++++++++++++++++++++
+++++++ REDES SOCIALES +++++++
+++++++++++++++++++++++++++++
✅Instagram: www.instagram....
✅TikTok: / robot_uno
✅Pagina web: www.robotuno.com/
➜COMENTA que te ha parecido y dale a 👍
➜SUSCRIBETE para no perderte ningún vídeo - Наука
👇Más Proyectos de Electronica y Arduino👇
www.robotuno.com/
Hola amigo, necesito el codigo de programacion, ya que estoy haciendo tu ejemplo para un proyecto de la Universidad
👇Más Proyectos de Electronica y Arduino👇
www.robotuno.com/
Buenísimo el vídeo súper entendible, lo voy a probar!! Podrías compartir la programación por favor 😊
Es flipante tu contenido tío, tenes una voz hermosa wapi
Hola, me encanto mucho tu video y quisiera hacerlo. Pero me gustaría ver uno paso a paso del juego pong❤
Hola ... Es un gran proyecto y muy entretenido... Lo voy hacer para la escuela ... Me puedes compartir el código de favor ..🙏
Hola!, muy buen video pero tengo una duda, ¿Cómo conectaría mas matrices de led para hacerlo mas grande? ¿Habría cambios en el código?
bueno, primero que todo, mas matrices led = mayor pines por lo que necesitaras un arduino mega o mas grande, luego necesitaras una bateria mas grande al menos que este usando tu pc como fuente, y si... el codigo cambiaria
Hola , saludos , gracias por compartir el proyecto , ¿se puede hacer con dos matrices led ?
hola, gran trabajo amigo una duda me podrias ayudar ya subi el codigo pero no muevo nada con el joystick
tengo un problema con la libreria de "control Led h" donde se podria descargar o de donde la tengo que sacar?
También sirve si es una matriz de 8x32
El proyecto se podria hacer sin el cosito verde de la matriz?
Olvidalo aun asi me acabo de dar cuenta de q mi matriz es diferente
Pero no se puede??
como hiciste el montaje en la web?
Con fritzing
Disculpa...
Tendrás un mini juegos utilizando al arduino y el visual studios ?
No, lo siento, nunca he utilizado ese programa : (
Hola, buen video... felicidades!!! Me regalarías el código de Arduino? Gracias
Muchísimas Graciaaas!
bro una consulta.... esto se puede hacer sin el protoboard este proyecto?
buen vídeo sigue así nuevo sub.
por supuesto que se puede! en este proyecto solo se utiliza para hacer las conexiones del buzzer y para alimentar los circuitos. Un saludo Bruno y bienvenido al canal!
@@RobotUNO ok muchas gracias
@@RobotUNO tengo un buzer pero con un circuito integrado , funciona igual ?????? , a y el pinpong me sirvio
Un saludo, me gustó mucho este proyecto, lo voy a hacer para mi proyecto de robótica, me puedes pasar la programación, la necesito muchísimo
hola brother excelente proyecto tienes el plano de construcción es que va un poco rapido y me e perdido
No se como hacerlos :( lo siento mucho
Robot UNO si quiere le ayudo pero si sería bueno que explicaras como se conecta brother por que me aveces se genera confucion
Vale, lo tendré en cuenta para futuros videos, muchas gracias!
buenas noches cuando usted pueda podria pasarme los codigos de programacion para realizar dicho minijuego porfavor, muchas gracias
Hola, me podrías pasar el código de programación para poder subirlo a mi proyecto? gracias.
Cuanto cuesta el paquete completo para realizarlo?
Robot UNO, en qué software realizaste el diseño de montaje... Gracias!
arduino ide
Hola, tuve un problema, con ayuda de los comentarios logré que funcione conectado a una PC de escritorio. Lo probé con una notebook y no funciona. Es como si el juego está pero sin los leds prendidos. Que puede ser?
Amigo cuando subo el codigo me da pero una parte de las Led me encienden pero de ahi no me funciona?
Robot uno como me puedo comunicar con usted personalmente gracias 👌🙏
EXCELENTES VIDEOS, LO FELICITO!! UNA PREGUNTA YA SE CONECTO TODO IGUAL Y EL CÓDIGO QUE NOS HIZO FAVOR DE PROPORCIONAR TAMBIÉN TODO IGUAL PERO O SE ESCUCHA COMO TERMINA EL JUEGO AL CONECTAR EL ARDUINO Y LA PANTALLA PRENDE COMPLETA POR UN INSTANTE O DE PLANO NO FUNCIONA, YA CAMBIAMOS EL JOYSTICK Y LA PANTALLA TODO NUEVO Y NADA, ME PODRÍA ILUSTRAR AL RESPECTO, POR FAVOR, GRACIAS
Oye, yo también estaba igual que tu, pero ya me quedo. Hay algunos detalles que tienes que cambiar, me costo un poquito de trabajo, pero si funciona. Si gustas te puedo compartir la información
@@ProfeRafaSTEM Buenas noches! Si xfa, gracias
Pues mira, si observas los pines del diagrama no coinciden con los números en el código que esta en su portal. Por ejemplo en el diagrama los pines que se especifican son 7, 10, 9 y 11, pero en el código son: 8, 10, 11 y 12. Los pines análogos están bien. Y otro número que debes cambiar es en la línea 19; la que dice LedControl 1c = LedControl (DIN, CS, CLK, 0) Si observas en el código original aparece un 1, yo lo cambie por un cero y eso es todo. Espero y te sirva mi información. ¡Saludos!!!
@@ProfeRafaSTEM lo del numero 1 lo encontre pero el resto no lo entiendo que tengo que cambiar?
Si me puedes responder lo agradeceria
cuando pongo un cable en el huequito de 5V de la tarjeta o en el GND y lo conecto al protoboard, mi tarjeta de arduino se apaga y no me deja subirle el codigo, que hago?
Mejor canal de arduino, me pasas el código por favor?
Muchisimas gracias
//Canal de RUclips -> RobotUNO
//Juego snake en pantalla led 8x8
#include "LedControl.h"
//pins
const int SW_pin = 2;
const int X_pin = 0;
const int Y_pin = 1;
const int DIN = 12;
const int CS = 11;
const int CLK = 10;
const int BUZZER = 8;
//variables
const int screenWidth = 8;
const int screenHeight = 8;
int snakeX, snakeY, foodX, foodY, score = 0, snakeSize = 1;
char direction;
int tailX[100], tailY[100];
bool isGameOver = false;
LedControl lc = LedControl(DIN, CS, CLK, 1);
void setup() {
setupPins();
setupLedBoard();
setupSnakePosition();
setupFoodPosition();
}
void setupSnakePosition() {
snakeX = 4;
snakeY = 4;
}
void setupFoodPosition() {
foodX = rand() % screenWidth;
foodY = rand() % screenHeight;
}
void setupLedBoard() {
lc.shutdown(0, false);
lc.setIntensity(0, 1);
lc.clearDisplay(0);
}
void setupPins() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
}
void loop() {
if (isGameOver) {
playGameOverSong();
showGameOverScreen();
} else {
startGame();
}
}
void playGameOverSong() {
tone(BUZZER, 1000, 1000);
delay(100);
tone(BUZZER, 2000, 1000);
delay(100);
tone(BUZZER, 3000, 1000);
delay(100);
tone(BUZZER, 4000, 1000);
delay(100);
tone(BUZZER, 5000, 2000);
}
void playFoodEatenSong() {
tone(BUZZER, 500, 100);
}
void startGame() {
manageGameOver();
setJoystickDirection();
changeSnakeDirection();
manageSnakeOutOfBounds();
manageEatenFood();
manageSnakeTailCoordinates();
drawSnake();
delay(300);
}
void manageGameOver() {
for (int i = 1; i < snakeSize; i++) {
if (tailX[i] == snakeX && tailY[i] == snakeY) {
isGameOver = true;
}
}
}
void manageSnakeOutOfBounds() {
if (snakeX >= screenWidth) {
snakeX = 0;
} else if (snakeX < 0) {
snakeX = screenWidth - 1;
}
if (snakeY >= screenHeight) {
snakeY = 0;
} else if (snakeY < 0) {
snakeY = screenHeight - 1;
}
}
void manageSnakeTailCoordinates() {
int previousX, previousY, prevX, prevY;
previousX = tailX[0];
previousY = tailY[0];
tailX[0] = snakeX;
tailY[0] = snakeY;
for (int i = 1; i < snakeSize; i++) {
prevX = tailX[i];
prevY = tailY[i];
tailX[i] = previousX;
tailY[i] = previousY;
previousX = prevX;
previousY = prevY;
}
}
void manageEatenFood() {
if (snakeX == foodX && snakeY == foodY) {
playFoodEatenSong();
score++;
snakeSize++;
setupFoodPosition();
}
}
void setJoystickDirection() {
if (analogRead(X_pin) > 1000) {
direction = 'u';
} else if (analogRead(X_pin) < 100) {
direction = 'd';
} else if (analogRead(Y_pin) > 1000) {
direction = 'l';
} else if (analogRead(Y_pin) < 100) {
direction = 'r';
}
}
void changeSnakeDirection() {
switch (direction) {
case 'l':
snakeX--;
break;
case 'r':
snakeX++;
break;
case 'u':
snakeY--;
break;
case 'd':
snakeY++;
break;
}
}
void showGameOverScreen() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
showLed(j, i);
delay(50);
}
}
resetVariables();
}
void resetVariables() {
setupSnakePosition();
setupFoodPosition();
direction = ' ';
isGameOver = false;
score = 0;
snakeSize = 1;
}
void showLed(int row, int column) {
lc.setLed(0, row, column, true);
}
void hideLed(int row, int column) {
lc.setLed(0, row, column, false);
}
void drawSnake() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
if (i == snakeY && j == snakeX) {
showLed(snakeX, snakeY);
} else if (i == foodY && j == foodX) {
showLed(foodX, foodY);
} else {
bool isShown = false;
for (int k = 0; k < snakeSize; k++) {
if (tailX[k] == j && tailY[k] == i) {
showLed(j, i);
isShown = true;
}
}
if (!isShown) {
hideLed(j, i);
}
}
}
}
}
Robot UNO abastá
Buen video mi hermano, me podría facilitar la programación?
Puede tener la pantalla LED mas grande ?
me das el codigo de programacion porfa estoy suscrito
Hola, muy buen tutorial. Me encantó. Me pasarías el código xfa
Muchas gracias!! Aqui tienes el codigo!
//Canal de RUclips -> RobotUNO
//Juego snake en pantalla led 8x8
#include "LedControl.h"
//pins
const int SW_pin = 2;
const int X_pin = 0;
const int Y_pin = 1;
const int DIN = 12;
const int CS = 11;
const int CLK = 10;
const int BUZZER = 8;
//variables
const int screenWidth = 8;
const int screenHeight = 8;
int snakeX, snakeY, foodX, foodY, score = 0, snakeSize = 1;
char direction;
int tailX[100], tailY[100];
bool isGameOver = false;
LedControl lc = LedControl(DIN, CS, CLK, 1);
void setup() {
setupPins();
setupLedBoard();
setupSnakePosition();
setupFoodPosition();
}
void setupSnakePosition() {
snakeX = 4;
snakeY = 4;
}
void setupFoodPosition() {
foodX = rand() % screenWidth;
foodY = rand() % screenHeight;
}
void setupLedBoard() {
lc.shutdown(0, false);
lc.setIntensity(0, 1);
lc.clearDisplay(0);
}
void setupPins() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
}
void loop() {
if (isGameOver) {
playGameOverSong();
showGameOverScreen();
} else {
startGame();
}
}
void playGameOverSong() {
tone(BUZZER, 1000, 1000);
delay(100);
tone(BUZZER, 2000, 1000);
delay(100);
tone(BUZZER, 3000, 1000);
delay(100);
tone(BUZZER, 4000, 1000);
delay(100);
tone(BUZZER, 5000, 2000);
}
void playFoodEatenSong() {
tone(BUZZER, 500, 100);
}
void startGame() {
manageGameOver();
setJoystickDirection();
changeSnakeDirection();
manageSnakeOutOfBounds();
manageEatenFood();
manageSnakeTailCoordinates();
drawSnake();
delay(300);
}
void manageGameOver() {
for (int i = 1; i < snakeSize; i++) {
if (tailX[i] == snakeX && tailY[i] == snakeY) {
isGameOver = true;
}
}
}
void manageSnakeOutOfBounds() {
if (snakeX >= screenWidth) {
snakeX = 0;
} else if (snakeX < 0) {
snakeX = screenWidth - 1;
}
if (snakeY >= screenHeight) {
snakeY = 0;
} else if (snakeY < 0) {
snakeY = screenHeight - 1;
}
}
void manageSnakeTailCoordinates() {
int previousX, previousY, prevX, prevY;
previousX = tailX[0];
previousY = tailY[0];
tailX[0] = snakeX;
tailY[0] = snakeY;
for (int i = 1; i < snakeSize; i++) {
prevX = tailX[i];
prevY = tailY[i];
tailX[i] = previousX;
tailY[i] = previousY;
previousX = prevX;
previousY = prevY;
}
}
void manageEatenFood() {
if (snakeX == foodX && snakeY == foodY) {
playFoodEatenSong();
score++;
snakeSize++;
setupFoodPosition();
}
}
void setJoystickDirection() {
if (analogRead(X_pin) > 1000) {
direction = 'u';
} else if (analogRead(X_pin) < 100) {
direction = 'd';
} else if (analogRead(Y_pin) > 1000) {
direction = 'l';
} else if (analogRead(Y_pin) < 100) {
direction = 'r';
}
}
void changeSnakeDirection() {
switch (direction) {
case 'l':
snakeX--;
break;
case 'r':
snakeX++;
break;
case 'u':
snakeY--;
break;
case 'd':
snakeY++;
break;
}
}
void showGameOverScreen() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
showLed(j, i);
delay(50);
}
}
resetVariables();
}
void resetVariables() {
setupSnakePosition();
setupFoodPosition();
direction = ' ';
isGameOver = false;
score = 0;
snakeSize = 1;
}
void showLed(int row, int column) {
lc.setLed(0, row, column, true);
}
void hideLed(int row, int column) {
lc.setLed(0, row, column, false);
}
void drawSnake() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
if (i == snakeY && j == snakeX) {
showLed(snakeX, snakeY);
} else if (i == foodY && j == foodX) {
showLed(foodX, foodY);
} else {
bool isShown = false;
for (int k = 0; k < snakeSize; k++) {
if (tailX[k] == j && tailY[k] == i) {
showLed(j, i);
isShown = true;
}
}
if (!isShown) {
hideLed(j, i);
}
}
}
}
}
@@RobotUNO brother esta programación no se deja subir me dice que hay un error
A mi me deja subirla
Pero no hace nada
Muy chulo!!! Puedes pasarme el código porfa???😁
Hola es un gran proyecto voy a utilizarpara un trabajo de la UNI, puedes compartirme el código de favor
HOLA.. estoy siguiendo tu tutorial para hacer reproducir el juego de gusanito... pero me encuentro que con un obstaculo ya que el probrla no me corre y me dice que el código no esta en la biblioteca... podrias ayudarme por favor es tu trabajo escolar... y necesito una buena nota ya que es un trabajo de autoaprendizaje ... GRADEZCO TU COLABORACION... atentamente una seguidora
revise las conexiones el voltaje y no me funciono, parece que si carga el codigo pero se quedan los leds del display apagados y no ocurre nada, ni siquiera el buzzer suena
Hola.. Suscrito desde ya.. Gracias por tu aporte.. Quiero implementarlo.. Me. Podrías ayudar con el código de programación por favor
esta bueno tu video se podría hacer un video explicando el codigo
Si, a partir de ahora voy a explicar todos los codigos de programacion en los videos.
Agradeciendo por video muy genial. Un favor me puedes enviar el código gracias. 👍✌️
Muchisimas gracias Elias, aqui tienes el codigo!!
//Canal de RUclips -> RobotUNO
//Juego snake en pantalla led 8x8
#include "LedControl.h"
//pins
const int SW_pin = 2;
const int X_pin = 0;
const int Y_pin = 1;
const int DIN = 12;
const int CS = 11;
const int CLK = 10;
const int BUZZER = 8;
//variables
const int screenWidth = 8;
const int screenHeight = 8;
int snakeX, snakeY, foodX, foodY, score = 0, snakeSize = 1;
char direction;
int tailX[100], tailY[100];
bool isGameOver = false;
LedControl lc = LedControl(DIN, CS, CLK, 1);
void setup() {
setupPins();
setupLedBoard();
setupSnakePosition();
setupFoodPosition();
}
void setupSnakePosition() {
snakeX = 4;
snakeY = 4;
}
void setupFoodPosition() {
foodX = rand() % screenWidth;
foodY = rand() % screenHeight;
}
void setupLedBoard() {
lc.shutdown(0, false);
lc.setIntensity(0, 1);
lc.clearDisplay(0);
}
void setupPins() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
}
void loop() {
if (isGameOver) {
playGameOverSong();
showGameOverScreen();
} else {
startGame();
}
}
void playGameOverSong() {
tone(BUZZER, 1000, 1000);
delay(100);
tone(BUZZER, 2000, 1000);
delay(100);
tone(BUZZER, 3000, 1000);
delay(100);
tone(BUZZER, 4000, 1000);
delay(100);
tone(BUZZER, 5000, 2000);
}
void playFoodEatenSong() {
tone(BUZZER, 500, 100);
}
void startGame() {
manageGameOver();
setJoystickDirection();
changeSnakeDirection();
manageSnakeOutOfBounds();
manageEatenFood();
manageSnakeTailCoordinates();
drawSnake();
delay(300);
}
void manageGameOver() {
for (int i = 1; i < snakeSize; i++) {
if (tailX[i] == snakeX && tailY[i] == snakeY) {
isGameOver = true;
}
}
}
void manageSnakeOutOfBounds() {
if (snakeX >= screenWidth) {
snakeX = 0;
} else if (snakeX < 0) {
snakeX = screenWidth - 1;
}
if (snakeY >= screenHeight) {
snakeY = 0;
} else if (snakeY < 0) {
snakeY = screenHeight - 1;
}
}
void manageSnakeTailCoordinates() {
int previousX, previousY, prevX, prevY;
previousX = tailX[0];
previousY = tailY[0];
tailX[0] = snakeX;
tailY[0] = snakeY;
for (int i = 1; i < snakeSize; i++) {
prevX = tailX[i];
prevY = tailY[i];
tailX[i] = previousX;
tailY[i] = previousY;
previousX = prevX;
previousY = prevY;
}
}
void manageEatenFood() {
if (snakeX == foodX && snakeY == foodY) {
playFoodEatenSong();
score++;
snakeSize++;
setupFoodPosition();
}
}
void setJoystickDirection() {
if (analogRead(X_pin) > 1000) {
direction = 'u';
} else if (analogRead(X_pin) < 100) {
direction = 'd';
} else if (analogRead(Y_pin) > 1000) {
direction = 'l';
} else if (analogRead(Y_pin) < 100) {
direction = 'r';
}
}
void changeSnakeDirection() {
switch (direction) {
case 'l':
snakeX--;
break;
case 'r':
snakeX++;
break;
case 'u':
snakeY--;
break;
case 'd':
snakeY++;
break;
}
}
void showGameOverScreen() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
showLed(j, i);
delay(50);
}
}
resetVariables();
}
void resetVariables() {
setupSnakePosition();
setupFoodPosition();
direction = ' ';
isGameOver = false;
score = 0;
snakeSize = 1;
}
void showLed(int row, int column) {
lc.setLed(0, row, column, true);
}
void hideLed(int row, int column) {
lc.setLed(0, row, column, false);
}
void drawSnake() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
if (i == snakeY && j == snakeX) {
showLed(snakeX, snakeY);
} else if (i == foodY && j == foodX) {
showLed(foodX, foodY);
} else {
bool isShown = false;
for (int k = 0; k < snakeSize; k++) {
if (tailX[k] == j && tailY[k] == i) {
showLed(j, i);
isShown = true;
}
}
if (!isShown) {
hideLed(j, i);
}
}
}
}
}
@@RobotUNO El texto que copies aparecerá automáticamente aquí
No se me prenden todos los leds del 8x8 ya voy comprando dos de los mismos y no funcionan
Quizas sea otro modelo y alguna conexion sea diferente.
bro ay un herror en el codigo de programacion
Hola me podrías pasar el código de programación para poder subirlo a mi proyecto, es para la escuela??? porfa necesito aprobar 😅
Soy subscriptor nuevo ❤
Hola amigo, necesito el codigo de programacion, ya que estoy haciendo tu ejemplo para un proyecto de la Universidad, me lo pasas porfa?
Buenas noches cómo me puedo comunicar con la persona que realizó el proyecto con arduino gracias 👌👌
Recomiendo q lo agan con 3.3voltios si lo ponen en 5 la placa se calienta y no enciende
Muchas gracias por el consejo!
Como hago eso @alexteutla4325
Hola
Muy buen proyecto!! podrías hacerme el favor de pasarme la programación
Me podrias pasar el código de programación porfavor
Muy buen proyecto
Me pasas el código?
Muchas gracias Julian! en el comentario de abajo te dejo el codigo. Un saludo!
//Canal de RUclips -> RobotUNO
//Juego snake en pantalla led 8x8
#include "LedControl.h"
//pins
const int SW_pin = 2;
const int X_pin = 0;
const int Y_pin = 1;
const int DIN = 12;
const int CS = 11;
const int CLK = 10;
const int BUZZER = 8;
//variables
const int screenWidth = 8;
const int screenHeight = 8;
int snakeX, snakeY, foodX, foodY, score = 0, snakeSize = 1;
char direction;
int tailX[100], tailY[100];
bool isGameOver = false;
LedControl lc = LedControl(DIN, CS, CLK, 1);
void setup() {
setupPins();
setupLedBoard();
setupSnakePosition();
setupFoodPosition();
}
void setupSnakePosition() {
snakeX = 4;
snakeY = 4;
}
void setupFoodPosition() {
foodX = rand() % screenWidth;
foodY = rand() % screenHeight;
}
void setupLedBoard() {
lc.shutdown(0, false);
lc.setIntensity(0, 1);
lc.clearDisplay(0);
}
void setupPins() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
}
void loop() {
if (isGameOver) {
playGameOverSong();
showGameOverScreen();
} else {
startGame();
}
}
void playGameOverSong() {
tone(BUZZER, 1000, 1000);
delay(100);
tone(BUZZER, 2000, 1000);
delay(100);
tone(BUZZER, 3000, 1000);
delay(100);
tone(BUZZER, 4000, 1000);
delay(100);
tone(BUZZER, 5000, 2000);
}
void playFoodEatenSong() {
tone(BUZZER, 500, 100);
}
void startGame() {
manageGameOver();
setJoystickDirection();
changeSnakeDirection();
manageSnakeOutOfBounds();
manageEatenFood();
manageSnakeTailCoordinates();
drawSnake();
delay(300);
}
void manageGameOver() {
for (int i = 1; i < snakeSize; i++) {
if (tailX[i] == snakeX && tailY[i] == snakeY) {
isGameOver = true;
}
}
}
void manageSnakeOutOfBounds() {
if (snakeX >= screenWidth) {
snakeX = 0;
} else if (snakeX < 0) {
snakeX = screenWidth - 1;
}
if (snakeY >= screenHeight) {
snakeY = 0;
} else if (snakeY < 0) {
snakeY = screenHeight - 1;
}
}
void manageSnakeTailCoordinates() {
int previousX, previousY, prevX, prevY;
previousX = tailX[0];
previousY = tailY[0];
tailX[0] = snakeX;
tailY[0] = snakeY;
for (int i = 1; i < snakeSize; i++) {
prevX = tailX[i];
prevY = tailY[i];
tailX[i] = previousX;
tailY[i] = previousY;
previousX = prevX;
previousY = prevY;
}
}
void manageEatenFood() {
if (snakeX == foodX && snakeY == foodY) {
playFoodEatenSong();
score++;
snakeSize++;
setupFoodPosition();
}
}
void setJoystickDirection() {
if (analogRead(X_pin) > 1000) {
direction = 'u';
} else if (analogRead(X_pin) < 100) {
direction = 'd';
} else if (analogRead(Y_pin) > 1000) {
direction = 'l';
} else if (analogRead(Y_pin) < 100) {
direction = 'r';
}
}
void changeSnakeDirection() {
switch (direction) {
case 'l':
snakeX--;
break;
case 'r':
snakeX++;
break;
case 'u':
snakeY--;
break;
case 'd':
snakeY++;
break;
}
}
void showGameOverScreen() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
showLed(j, i);
delay(50);
}
}
resetVariables();
}
void resetVariables() {
setupSnakePosition();
setupFoodPosition();
direction = ' ';
isGameOver = false;
score = 0;
snakeSize = 1;
}
void showLed(int row, int column) {
lc.setLed(0, row, column, true);
}
void hideLed(int row, int column) {
lc.setLed(0, row, column, false);
}
void drawSnake() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
if (i == snakeY && j == snakeX) {
showLed(snakeX, snakeY);
} else if (i == foodY && j == foodX) {
showLed(foodX, foodY);
} else {
bool isShown = false;
for (int k = 0; k < snakeSize; k++) {
if (tailX[k] == j && tailY[k] == i) {
showLed(j, i);
isShown = true;
}
}
if (!isShown) {
hideLed(j, i);
}
}
}
}
}
si la pantalla led no les enciende no es problema de corriente o voltaje es un pequeño error en el codigo solo cambien esta linea
LedControl lc = LedControl(DIN, CLK, CS, 1);
in en la intensidad de la pantalla pongan
lc.setIntensity(0, 8);
y asunto arreglado
Osea como?
@@manuelcamacho4514 EN LA PARTE DEL CODIGO SOLO CAMBIALE LA POSICION DEL LED CONTROL Y EL BRILLO EN LA FUNCION, BUSCA LA LINEA DEL CODIGO QUE TE MENCIONO
Hola quisiera el Código oara realizarlo saludos
Cómo se llama la librería?
Hola me pasas el codigo de programacion por favor
el diagrama de conexión
esta mal
Cual es el error?
@@RobotUNO Yo te lo he indicado en varios comentarios si lo revisas a lo mejor se puede editar y añadir los arreglos.
Hola buenas noches me puedes pasar la programación
Muchas gracias por el video me puedes pasar el código. Saludos
Cómo se llama la cosita que hace ruido?
Hola ya estoy suscrita, me puedes pasar el código de programación.?
Hola como estas me puedes ayudar con el código, es que estoy enseñándole a mis estudiantes el uso de arduino.
Como puedo integrar esa programación a un 16x16?
Podrías pasarme el código de programación pero yo solo tengo el driver máxim sin modulo
Claro! aqui lo tienes!
//Canal de RUclips -> RobotUNO
//Juego snake en pantalla led 8x8
#include "LedControl.h"
//pins
const int SW_pin = 2;
const int X_pin = 0;
const int Y_pin = 1;
const int DIN = 12;
const int CS = 11;
const int CLK = 10;
const int BUZZER = 8;
//variables
const int screenWidth = 8;
const int screenHeight = 8;
int snakeX, snakeY, foodX, foodY, score = 0, snakeSize = 1;
char direction;
int tailX[100], tailY[100];
bool isGameOver = false;
LedControl lc = LedControl(DIN, CS, CLK, 1);
void setup() {
setupPins();
setupLedBoard();
setupSnakePosition();
setupFoodPosition();
}
void setupSnakePosition() {
snakeX = 4;
snakeY = 4;
}
void setupFoodPosition() {
foodX = rand() % screenWidth;
foodY = rand() % screenHeight;
}
void setupLedBoard() {
lc.shutdown(0, false);
lc.setIntensity(0, 1);
lc.clearDisplay(0);
}
void setupPins() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
}
void loop() {
if (isGameOver) {
playGameOverSong();
showGameOverScreen();
} else {
startGame();
}
}
void playGameOverSong() {
tone(BUZZER, 1000, 1000);
delay(100);
tone(BUZZER, 2000, 1000);
delay(100);
tone(BUZZER, 3000, 1000);
delay(100);
tone(BUZZER, 4000, 1000);
delay(100);
tone(BUZZER, 5000, 2000);
}
void playFoodEatenSong() {
tone(BUZZER, 500, 100);
}
void startGame() {
manageGameOver();
setJoystickDirection();
changeSnakeDirection();
manageSnakeOutOfBounds();
manageEatenFood();
manageSnakeTailCoordinates();
drawSnake();
delay(300);
}
void manageGameOver() {
for (int i = 1; i < snakeSize; i++) {
if (tailX[i] == snakeX && tailY[i] == snakeY) {
isGameOver = true;
}
}
}
void manageSnakeOutOfBounds() {
if (snakeX >= screenWidth) {
snakeX = 0;
} else if (snakeX < 0) {
snakeX = screenWidth - 1;
}
if (snakeY >= screenHeight) {
snakeY = 0;
} else if (snakeY < 0) {
snakeY = screenHeight - 1;
}
}
void manageSnakeTailCoordinates() {
int previousX, previousY, prevX, prevY;
previousX = tailX[0];
previousY = tailY[0];
tailX[0] = snakeX;
tailY[0] = snakeY;
for (int i = 1; i < snakeSize; i++) {
prevX = tailX[i];
prevY = tailY[i];
tailX[i] = previousX;
tailY[i] = previousY;
previousX = prevX;
previousY = prevY;
}
}
void manageEatenFood() {
if (snakeX == foodX && snakeY == foodY) {
playFoodEatenSong();
score++;
snakeSize++;
setupFoodPosition();
}
}
void setJoystickDirection() {
if (analogRead(X_pin) > 1000) {
direction = 'u';
} else if (analogRead(X_pin) < 100) {
direction = 'd';
} else if (analogRead(Y_pin) > 1000) {
direction = 'l';
} else if (analogRead(Y_pin) < 100) {
direction = 'r';
}
}
void changeSnakeDirection() {
switch (direction) {
case 'l':
snakeX--;
break;
case 'r':
snakeX++;
break;
case 'u':
snakeY--;
break;
case 'd':
snakeY++;
break;
}
}
void showGameOverScreen() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
showLed(j, i);
delay(50);
}
}
resetVariables();
}
void resetVariables() {
setupSnakePosition();
setupFoodPosition();
direction = ' ';
isGameOver = false;
score = 0;
snakeSize = 1;
}
void showLed(int row, int column) {
lc.setLed(0, row, column, true);
}
void hideLed(int row, int column) {
lc.setLed(0, row, column, false);
}
void drawSnake() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
if (i == snakeY && j == snakeX) {
showLed(snakeX, snakeY);
} else if (i == foodY && j == foodX) {
showLed(foodX, foodY);
} else {
bool isShown = false;
for (int k = 0; k < snakeSize; k++) {
if (tailX[k] == j && tailY[k] == i) {
showLed(j, i);
isShown = true;
}
}
if (!isShown) {
hideLed(j, i);
}
}
}
}
}
Alguien me ayuda!!
Me dice que el "LedControl.h" no existe. Que hago??
Me podrías pasar el código porfavor... Exelente proyecto, mi hijo está iniciando gracias ...
Hola me interesa saber el código de programación me lo podrías pasar ?? estoy suscrito
Hola puedes pasarme el código de programación
hola, buen video... pero nunca funciona la matriz de led, realice la conexion, coloque el codigo. descargue la libreria LedControl. se escuchaba el parlante cuando comia(lo hacia sin ver y cuando moria que es un sonido prolongado) y despues de eso recien se enciende todas las luces led de la matriz y se reeinicia apagandolas todas... espero que puedas respnder...gracias.
Hola como lei por ahi dicen porque 5 voltios es mucho, intentalo con el 3.3 voltios
@@urielsanchez4478 Gracias.. lo intentare.
@@g.9843 de nada
@@g.9843 te finciono??
Funciono*
Si ers eso, es la primera que dale LedControl
bro tienes el diagrama esquemático por favor
Buenas, podrías pasar la programación para ArduinoBlocks? Gracias!
Compa buenas noches, creo que la falla que me sale es por la librería
hola me das un consejo para mejorar mi canal
Hazlo por que te gusta, no por el dinero ni nada. RUclips ya no es como antes
@@RobotUNO gracias este es el mejor canal
Hola , q tal me podrá pasar la programación porfavor 🥺🥺
Hola, no me funciona el código.
Has instalado las librerias correspondientes? quizas sea eso
Que librería es?
Hola, a mi tampoco me funcionaba con las librerias puestas y he encontrado errores en el dibujo hay cables que no estan conectados en el sitio donde los conecta en el directo VCC siempre va al 5V y GND con GND después los pines del cuadro de leds tmb son diferentes en el diagrama El DIN va al 12, el CS va al 10 y el CLK va al 11. Revisa eso y te funcionara parte de ir al apartado gestionar librerias y buscar la de Ledcontrol y descargarla
@@annettaa2 Vale, muchísimas gracias
La programación sería la misma si la haces sin la protoboar
Me podrías dar la programación ?, Sirve igual que con una matriz led de 16x16
Habria que cambiar algunos parametros en la programacion. Aqui tienes el codigo!
//Canal de RUclips -> RobotUNO
//Juego snake en pantalla led 8x8
#include "LedControl.h"
//pins
const int SW_pin = 2;
const int X_pin = 0;
const int Y_pin = 1;
const int DIN = 12;
const int CS = 11;
const int CLK = 10;
const int BUZZER = 8;
//variables
const int screenWidth = 8;
const int screenHeight = 8;
int snakeX, snakeY, foodX, foodY, score = 0, snakeSize = 1;
char direction;
int tailX[100], tailY[100];
bool isGameOver = false;
LedControl lc = LedControl(DIN, CS, CLK, 1);
void setup() {
setupPins();
setupLedBoard();
setupSnakePosition();
setupFoodPosition();
}
void setupSnakePosition() {
snakeX = 4;
snakeY = 4;
}
void setupFoodPosition() {
foodX = rand() % screenWidth;
foodY = rand() % screenHeight;
}
void setupLedBoard() {
lc.shutdown(0, false);
lc.setIntensity(0, 1);
lc.clearDisplay(0);
}
void setupPins() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
}
void loop() {
if (isGameOver) {
playGameOverSong();
showGameOverScreen();
} else {
startGame();
}
}
void playGameOverSong() {
tone(BUZZER, 1000, 1000);
delay(100);
tone(BUZZER, 2000, 1000);
delay(100);
tone(BUZZER, 3000, 1000);
delay(100);
tone(BUZZER, 4000, 1000);
delay(100);
tone(BUZZER, 5000, 2000);
}
void playFoodEatenSong() {
tone(BUZZER, 500, 100);
}
void startGame() {
manageGameOver();
setJoystickDirection();
changeSnakeDirection();
manageSnakeOutOfBounds();
manageEatenFood();
manageSnakeTailCoordinates();
drawSnake();
delay(300);
}
void manageGameOver() {
for (int i = 1; i < snakeSize; i++) {
if (tailX[i] == snakeX && tailY[i] == snakeY) {
isGameOver = true;
}
}
}
void manageSnakeOutOfBounds() {
if (snakeX >= screenWidth) {
snakeX = 0;
} else if (snakeX < 0) {
snakeX = screenWidth - 1;
}
if (snakeY >= screenHeight) {
snakeY = 0;
} else if (snakeY < 0) {
snakeY = screenHeight - 1;
}
}
void manageSnakeTailCoordinates() {
int previousX, previousY, prevX, prevY;
previousX = tailX[0];
previousY = tailY[0];
tailX[0] = snakeX;
tailY[0] = snakeY;
for (int i = 1; i < snakeSize; i++) {
prevX = tailX[i];
prevY = tailY[i];
tailX[i] = previousX;
tailY[i] = previousY;
previousX = prevX;
previousY = prevY;
}
}
void manageEatenFood() {
if (snakeX == foodX && snakeY == foodY) {
playFoodEatenSong();
score++;
snakeSize++;
setupFoodPosition();
}
}
void setJoystickDirection() {
if (analogRead(X_pin) > 1000) {
direction = 'u';
} else if (analogRead(X_pin) < 100) {
direction = 'd';
} else if (analogRead(Y_pin) > 1000) {
direction = 'l';
} else if (analogRead(Y_pin) < 100) {
direction = 'r';
}
}
void changeSnakeDirection() {
switch (direction) {
case 'l':
snakeX--;
break;
case 'r':
snakeX++;
break;
case 'u':
snakeY--;
break;
case 'd':
snakeY++;
break;
}
}
void showGameOverScreen() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
showLed(j, i);
delay(50);
}
}
resetVariables();
}
void resetVariables() {
setupSnakePosition();
setupFoodPosition();
direction = ' ';
isGameOver = false;
score = 0;
snakeSize = 1;
}
void showLed(int row, int column) {
lc.setLed(0, row, column, true);
}
void hideLed(int row, int column) {
lc.setLed(0, row, column, false);
}
void drawSnake() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
if (i == snakeY && j == snakeX) {
showLed(snakeX, snakeY);
} else if (i == foodY && j == foodX) {
showLed(foodX, foodY);
} else {
bool isShown = false;
for (int k = 0; k < snakeSize; k++) {
if (tailX[k] == j && tailY[k] == i) {
showLed(j, i);
isShown = true;
}
}
if (!isShown) {
hideLed(j, i);
}
}
}
}
}
@@RobotUNO Cual seria la programación para que la comida de la serpiente salga de otro color ??
Estas matrices estan compuestas por leds de color rojo, asi que es algo imposible :(
Hola bro, una pregunta, el código no me lo acepta. Por cierto nuevo suscripitor, ;)
Cual es el error?? has instalado la libreria?
@@RobotUNO si ya la instale, es la parte, #include "LedControl.h", me carga error
disculpa bro, fue mi error, pero gracias y buen video
El mio si es la librería ¿Puedes ayudarme en eso?
Hola necesito el código
Holaaaaa, encontré lo que buscaba, m podrías ayudar con el código? :')
bro tengo un problema q el punto se mueve solo sin q yo toque nda (como en modo automatico), tienes alguna solucion?
No se a que se puede deber. Solo puedo decirte que compruebes si el montaje esta bien hecho. Te paso otra vez el codigo de programacion por si fuese eso... Un saludo.
//Canal de RUclips -> RobotUNO
//Juego snake en pantalla led 8x8
#include "LedControl.h"
//pins
const int SW_pin = 2;
const int X_pin = 0;
const int Y_pin = 1;
const int DIN = 12;
const int CS = 11;
const int CLK = 10;
const int BUZZER = 8;
//variables
const int screenWidth = 8;
const int screenHeight = 8;
int snakeX, snakeY, foodX, foodY, score = 0, snakeSize = 1;
char direction;
int tailX[100], tailY[100];
bool isGameOver = false;
LedControl lc = LedControl(DIN, CS, CLK, 1);
void setup() {
setupPins();
setupLedBoard();
setupSnakePosition();
setupFoodPosition();
}
void setupSnakePosition() {
snakeX = 4;
snakeY = 4;
}
void setupFoodPosition() {
foodX = rand() % screenWidth;
foodY = rand() % screenHeight;
}
void setupLedBoard() {
lc.shutdown(0, false);
lc.setIntensity(0, 1);
lc.clearDisplay(0);
}
void setupPins() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
}
void loop() {
if (isGameOver) {
playGameOverSong();
showGameOverScreen();
} else {
startGame();
}
}
void playGameOverSong() {
tone(BUZZER, 1000, 1000);
delay(100);
tone(BUZZER, 2000, 1000);
delay(100);
tone(BUZZER, 3000, 1000);
delay(100);
tone(BUZZER, 4000, 1000);
delay(100);
tone(BUZZER, 5000, 2000);
}
void playFoodEatenSong() {
tone(BUZZER, 500, 100);
}
void startGame() {
manageGameOver();
setJoystickDirection();
changeSnakeDirection();
manageSnakeOutOfBounds();
manageEatenFood();
manageSnakeTailCoordinates();
drawSnake();
delay(300);
}
void manageGameOver() {
for (int i = 1; i < snakeSize; i++) {
if (tailX[i] == snakeX && tailY[i] == snakeY) {
isGameOver = true;
}
}
}
void manageSnakeOutOfBounds() {
if (snakeX >= screenWidth) {
snakeX = 0;
} else if (snakeX < 0) {
snakeX = screenWidth - 1;
}
if (snakeY >= screenHeight) {
snakeY = 0;
} else if (snakeY < 0) {
snakeY = screenHeight - 1;
}
}
void manageSnakeTailCoordinates() {
int previousX, previousY, prevX, prevY;
previousX = tailX[0];
previousY = tailY[0];
tailX[0] = snakeX;
tailY[0] = snakeY;
for (int i = 1; i < snakeSize; i++) {
prevX = tailX[i];
prevY = tailY[i];
tailX[i] = previousX;
tailY[i] = previousY;
previousX = prevX;
previousY = prevY;
}
}
void manageEatenFood() {
if (snakeX == foodX && snakeY == foodY) {
playFoodEatenSong();
score++;
snakeSize++;
setupFoodPosition();
}
}
void setJoystickDirection() {
if (analogRead(X_pin) > 1000) {
direction = 'u';
} else if (analogRead(X_pin) < 100) {
direction = 'd';
} else if (analogRead(Y_pin) > 1000) {
direction = 'l';
} else if (analogRead(Y_pin) < 100) {
direction = 'r';
}
}
void changeSnakeDirection() {
switch (direction) {
case 'l':
snakeX--;
break;
case 'r':
snakeX++;
break;
case 'u':
snakeY--;
break;
case 'd':
snakeY++;
break;
}
}
void showGameOverScreen() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
showLed(j, i);
delay(50);
}
}
resetVariables();
}
void resetVariables() {
setupSnakePosition();
setupFoodPosition();
direction = ' ';
isGameOver = false;
score = 0;
snakeSize = 1;
}
void showLed(int row, int column) {
lc.setLed(0, row, column, true);
}
void hideLed(int row, int column) {
lc.setLed(0, row, column, false);
}
void drawSnake() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
if (i == snakeY && j == snakeX) {
showLed(snakeX, snakeY);
} else if (i == foodY && j == foodX) {
showLed(foodX, foodY);
} else {
bool isShown = false;
for (int k = 0; k < snakeSize; k++) {
if (tailX[k] == j && tailY[k] == i) {
showLed(j, i);
isShown = true;
}
}
if (!isShown) {
hideLed(j, i);
}
}
}
}
}
Como lo solucionaste amigo? Tengo el mismo problema
@@pdfsbanda8300 resulto q uno de los pines del stick estaba da;ado, lo solucione conectandolo de una forma distinta, aunq ahora mismo noo recuerdo como, espero te haya servido
@@elbarril447 pero usaste el mismo codigo de programacion? No le cambiaste nada? Gracias amigo
alguien me ayuda el código le da error ayúdame
Podrías pasar el código...
hola buen video, podrias pasarme la programacion de este minijuego?
Mándame el código, por cierto me encanto el vídeo bro
Muchas gracias Gabriel! Aqui tienes el codigo!
//Canal de RUclips -> RobotUNO
//Juego snake en pantalla led 8x8
#include "LedControl.h"
//pins
const int SW_pin = 2;
const int X_pin = 0;
const int Y_pin = 1;
const int DIN = 12;
const int CS = 11;
const int CLK = 10;
const int BUZZER = 8;
//variables
const int screenWidth = 8;
const int screenHeight = 8;
int snakeX, snakeY, foodX, foodY, score = 0, snakeSize = 1;
char direction;
int tailX[100], tailY[100];
bool isGameOver = false;
LedControl lc = LedControl(DIN, CS, CLK, 1);
void setup() {
setupPins();
setupLedBoard();
setupSnakePosition();
setupFoodPosition();
}
void setupSnakePosition() {
snakeX = 4;
snakeY = 4;
}
void setupFoodPosition() {
foodX = rand() % screenWidth;
foodY = rand() % screenHeight;
}
void setupLedBoard() {
lc.shutdown(0, false);
lc.setIntensity(0, 1);
lc.clearDisplay(0);
}
void setupPins() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
}
void loop() {
if (isGameOver) {
playGameOverSong();
showGameOverScreen();
} else {
startGame();
}
}
void playGameOverSong() {
tone(BUZZER, 1000, 1000);
delay(100);
tone(BUZZER, 2000, 1000);
delay(100);
tone(BUZZER, 3000, 1000);
delay(100);
tone(BUZZER, 4000, 1000);
delay(100);
tone(BUZZER, 5000, 2000);
}
void playFoodEatenSong() {
tone(BUZZER, 500, 100);
}
void startGame() {
manageGameOver();
setJoystickDirection();
changeSnakeDirection();
manageSnakeOutOfBounds();
manageEatenFood();
manageSnakeTailCoordinates();
drawSnake();
delay(300);
}
void manageGameOver() {
for (int i = 1; i < snakeSize; i++) {
if (tailX[i] == snakeX && tailY[i] == snakeY) {
isGameOver = true;
}
}
}
void manageSnakeOutOfBounds() {
if (snakeX >= screenWidth) {
snakeX = 0;
} else if (snakeX < 0) {
snakeX = screenWidth - 1;
}
if (snakeY >= screenHeight) {
snakeY = 0;
} else if (snakeY < 0) {
snakeY = screenHeight - 1;
}
}
void manageSnakeTailCoordinates() {
int previousX, previousY, prevX, prevY;
previousX = tailX[0];
previousY = tailY[0];
tailX[0] = snakeX;
tailY[0] = snakeY;
for (int i = 1; i < snakeSize; i++) {
prevX = tailX[i];
prevY = tailY[i];
tailX[i] = previousX;
tailY[i] = previousY;
previousX = prevX;
previousY = prevY;
}
}
void manageEatenFood() {
if (snakeX == foodX && snakeY == foodY) {
playFoodEatenSong();
score++;
snakeSize++;
setupFoodPosition();
}
}
void setJoystickDirection() {
if (analogRead(X_pin) > 1000) {
direction = 'u';
} else if (analogRead(X_pin) < 100) {
direction = 'd';
} else if (analogRead(Y_pin) > 1000) {
direction = 'l';
} else if (analogRead(Y_pin) < 100) {
direction = 'r';
}
}
void changeSnakeDirection() {
switch (direction) {
case 'l':
snakeX--;
break;
case 'r':
snakeX++;
break;
case 'u':
snakeY--;
break;
case 'd':
snakeY++;
break;
}
}
void showGameOverScreen() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
showLed(j, i);
delay(50);
}
}
resetVariables();
}
void resetVariables() {
setupSnakePosition();
setupFoodPosition();
direction = ' ';
isGameOver = false;
score = 0;
snakeSize = 1;
}
void showLed(int row, int column) {
lc.setLed(0, row, column, true);
}
void hideLed(int row, int column) {
lc.setLed(0, row, column, false);
}
void drawSnake() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
if (i == snakeY && j == snakeX) {
showLed(snakeX, snakeY);
} else if (i == foodY && j == foodX) {
showLed(foodX, foodY);
} else {
bool isShown = false;
for (int k = 0; k < snakeSize; k++) {
if (tailX[k] == j && tailY[k] == i) {
showLed(j, i);
isShown = true;
}
}
if (!isShown) {
hideLed(j, i);
}
}
}
}
}
Cuál es el código ?
Buen día, me puede pasar el código por favor.
Puedes pasar la programación por favor 😁😁😁😁
Tengo Arduino uno y el programa me arroja el error :
^~~~~~~~~~~~~~
compilation terminated.
exit status 1
LedControl.h: No such file or directory
eso es porque tienes que descargar una librería que te permita controlar la matriz la cual se llama "LedControl.h" y la podes descargar desde la pág. oficial de Arduino, y para la instalación de la librería se debe hacer lo siguiente:
debes abrir el programa de Arduino
2do te vas al apartado superior donde dice "Programa"
luego le clickas donde dice "incluir librería"
desde ahí tocas la opción "Añadir Biblioteca .zip …"
eso te va a abrir una pestaña en la que podrás seleccionar e instalar la librería que se encuentra en el zip que descargaste anteriormente de la pág. oficial de Arduino.
Me gusto el proyecto me puedes enviar el código me
me falla el codigo
Código?
me ouedes pasar el codigo?
CLARO!!! aqui lo tienes!
//Canal de RUclips -> RobotUNO
//Juego snake en pantalla led 8x8
#include "LedControl.h"
//pins
const int SW_pin = 2;
const int X_pin = 0;
const int Y_pin = 1;
const int DIN = 12;
const int CS = 11;
const int CLK = 10;
const int BUZZER = 8;
//variables
const int screenWidth = 8;
const int screenHeight = 8;
int snakeX, snakeY, foodX, foodY, score = 0, snakeSize = 1;
char direction;
int tailX[100], tailY[100];
bool isGameOver = false;
LedControl lc = LedControl(DIN, CS, CLK, 1);
void setup() {
setupPins();
setupLedBoard();
setupSnakePosition();
setupFoodPosition();
}
void setupSnakePosition() {
snakeX = 4;
snakeY = 4;
}
void setupFoodPosition() {
foodX = rand() % screenWidth;
foodY = rand() % screenHeight;
}
void setupLedBoard() {
lc.shutdown(0, false);
lc.setIntensity(0, 1);
lc.clearDisplay(0);
}
void setupPins() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
}
void loop() {
if (isGameOver) {
playGameOverSong();
showGameOverScreen();
} else {
startGame();
}
}
void playGameOverSong() {
tone(BUZZER, 1000, 1000);
delay(100);
tone(BUZZER, 2000, 1000);
delay(100);
tone(BUZZER, 3000, 1000);
delay(100);
tone(BUZZER, 4000, 1000);
delay(100);
tone(BUZZER, 5000, 2000);
}
void playFoodEatenSong() {
tone(BUZZER, 500, 100);
}
void startGame() {
manageGameOver();
setJoystickDirection();
changeSnakeDirection();
manageSnakeOutOfBounds();
manageEatenFood();
manageSnakeTailCoordinates();
drawSnake();
delay(300);
}
void manageGameOver() {
for (int i = 1; i < snakeSize; i++) {
if (tailX[i] == snakeX && tailY[i] == snakeY) {
isGameOver = true;
}
}
}
void manageSnakeOutOfBounds() {
if (snakeX >= screenWidth) {
snakeX = 0;
} else if (snakeX < 0) {
snakeX = screenWidth - 1;
}
if (snakeY >= screenHeight) {
snakeY = 0;
} else if (snakeY < 0) {
snakeY = screenHeight - 1;
}
}
void manageSnakeTailCoordinates() {
int previousX, previousY, prevX, prevY;
previousX = tailX[0];
previousY = tailY[0];
tailX[0] = snakeX;
tailY[0] = snakeY;
for (int i = 1; i < snakeSize; i++) {
prevX = tailX[i];
prevY = tailY[i];
tailX[i] = previousX;
tailY[i] = previousY;
previousX = prevX;
previousY = prevY;
}
}
void manageEatenFood() {
if (snakeX == foodX && snakeY == foodY) {
playFoodEatenSong();
score++;
snakeSize++;
setupFoodPosition();
}
}
void setJoystickDirection() {
if (analogRead(X_pin) > 1000) {
direction = 'u';
} else if (analogRead(X_pin) < 100) {
direction = 'd';
} else if (analogRead(Y_pin) > 1000) {
direction = 'l';
} else if (analogRead(Y_pin) < 100) {
direction = 'r';
}
}
void changeSnakeDirection() {
switch (direction) {
case 'l':
snakeX--;
break;
case 'r':
snakeX++;
break;
case 'u':
snakeY--;
break;
case 'd':
snakeY++;
break;
}
}
void showGameOverScreen() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
showLed(j, i);
delay(50);
}
}
resetVariables();
}
void resetVariables() {
setupSnakePosition();
setupFoodPosition();
direction = ' ';
isGameOver = false;
score = 0;
snakeSize = 1;
}
void showLed(int row, int column) {
lc.setLed(0, row, column, true);
}
void hideLed(int row, int column) {
lc.setLed(0, row, column, false);
}
void drawSnake() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
if (i == snakeY && j == snakeX) {
showLed(snakeX, snakeY);
} else if (i == foodY && j == foodX) {
showLed(foodX, foodY);
} else {
bool isShown = false;
for (int k = 0; k < snakeSize; k++) {
if (tailX[k] == j && tailY[k] == i) {
showLed(j, i);
isShown = true;
}
}
if (!isShown) {
hideLed(j, i);
}
}
}
}
}
@@RobotUNO muchas graicas
@@RobotUNO tengo una duda,ami no me sale ""LedControl.h" como le puedo hacer?
tienes que instalarte la libreria
Hola me podrías dar el código?
buem proyecto me encanto me pasarias el el codigo porfa
hola el codigo porfavor
me podrias pasar la libreria
Aqui tienes el codigo Eduardo!
//Canal de RUclips -> RobotUNO
//Juego snake en pantalla led 8x8
#include "LedControl.h"
//pins
const int SW_pin = 2;
const int X_pin = 0;
const int Y_pin = 1;
const int DIN = 12;
const int CS = 11;
const int CLK = 10;
const int BUZZER = 8;
//variables
const int screenWidth = 8;
const int screenHeight = 8;
int snakeX, snakeY, foodX, foodY, score = 0, snakeSize = 1;
char direction;
int tailX[100], tailY[100];
bool isGameOver = false;
LedControl lc = LedControl(DIN, CS, CLK, 1);
void setup() {
setupPins();
setupLedBoard();
setupSnakePosition();
setupFoodPosition();
}
void setupSnakePosition() {
snakeX = 4;
snakeY = 4;
}
void setupFoodPosition() {
foodX = rand() % screenWidth;
foodY = rand() % screenHeight;
}
void setupLedBoard() {
lc.shutdown(0, false);
lc.setIntensity(0, 1);
lc.clearDisplay(0);
}
void setupPins() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
}
void loop() {
if (isGameOver) {
playGameOverSong();
showGameOverScreen();
} else {
startGame();
}
}
void playGameOverSong() {
tone(BUZZER, 1000, 1000);
delay(100);
tone(BUZZER, 2000, 1000);
delay(100);
tone(BUZZER, 3000, 1000);
delay(100);
tone(BUZZER, 4000, 1000);
delay(100);
tone(BUZZER, 5000, 2000);
}
void playFoodEatenSong() {
tone(BUZZER, 500, 100);
}
void startGame() {
manageGameOver();
setJoystickDirection();
changeSnakeDirection();
manageSnakeOutOfBounds();
manageEatenFood();
manageSnakeTailCoordinates();
drawSnake();
delay(300);
}
void manageGameOver() {
for (int i = 1; i < snakeSize; i++) {
if (tailX[i] == snakeX && tailY[i] == snakeY) {
isGameOver = true;
}
}
}
void manageSnakeOutOfBounds() {
if (snakeX >= screenWidth) {
snakeX = 0;
} else if (snakeX < 0) {
snakeX = screenWidth - 1;
}
if (snakeY >= screenHeight) {
snakeY = 0;
} else if (snakeY < 0) {
snakeY = screenHeight - 1;
}
}
void manageSnakeTailCoordinates() {
int previousX, previousY, prevX, prevY;
previousX = tailX[0];
previousY = tailY[0];
tailX[0] = snakeX;
tailY[0] = snakeY;
for (int i = 1; i < snakeSize; i++) {
prevX = tailX[i];
prevY = tailY[i];
tailX[i] = previousX;
tailY[i] = previousY;
previousX = prevX;
previousY = prevY;
}
}
void manageEatenFood() {
if (snakeX == foodX && snakeY == foodY) {
playFoodEatenSong();
score++;
snakeSize++;
setupFoodPosition();
}
}
void setJoystickDirection() {
if (analogRead(X_pin) > 1000) {
direction = 'u';
} else if (analogRead(X_pin) < 100) {
direction = 'd';
} else if (analogRead(Y_pin) > 1000) {
direction = 'l';
} else if (analogRead(Y_pin) < 100) {
direction = 'r';
}
}
void changeSnakeDirection() {
switch (direction) {
case 'l':
snakeX--;
break;
case 'r':
snakeX++;
break;
case 'u':
snakeY--;
break;
case 'd':
snakeY++;
break;
}
}
void showGameOverScreen() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
showLed(j, i);
delay(50);
}
}
resetVariables();
}
void resetVariables() {
setupSnakePosition();
setupFoodPosition();
direction = ' ';
isGameOver = false;
score = 0;
snakeSize = 1;
}
void showLed(int row, int column) {
lc.setLed(0, row, column, true);
}
void hideLed(int row, int column) {
lc.setLed(0, row, column, false);
}
void drawSnake() {
for (int i = 0; i < screenHeight; i++) {
for (int j = 0; j < screenWidth; j++) {
if (i == snakeY && j == snakeX) {
showLed(snakeX, snakeY);
} else if (i == foodY && j == foodX) {
showLed(foodX, foodY);
} else {
bool isShown = false;
for (int k = 0; k < snakeSize; k++) {
if (tailX[k] == j && tailY[k] == i) {
showLed(j, i);
isShown = true;
}
}
if (!isShown) {
hideLed(j, i);
}
}
}
}
}
La libreria ledcontrol.h la puedes encontrar en el propio programa de arduino. Un saludo,.
@@RobotUNO hice todo bro , pero no enciende el matrix cuando saco los cablecitos del arduino DIN,CS,CLIK, SE ENCIENDE TODA LA PANTALLA , CUAL PUEDE SER MI ERROR GRACIAS
No me funciono el código
Cual de todos?? tienes instaladas las librerias?
@@RobotUNO tengo instalada el programa meter el código pero no me va el código
@@RobotUNO me interesa mucho tu proyecto y la verdad no se si abra un forma de comunicarse con Tigo
Puedes hablarme por correo electronico si quieres "manualidadesyarmas@gmail.com"
Has instalado la libreria "LedControl.h"?? Se hace desde la aplicacion de arduino IDE
Necesito el código
Nesecito la programación
Necesito el código porff
me regalas el codigo , gracias