proyecto arduino esquivar meteoritos tutorial

Minijuego con Arduino: "Esquiva los meterioritos!"

Se trata de uno de los juegos más famosos del mundo. Consiste en esquivar los meteoritos que van cayendo del cielo, pero ¡hay un problema! cada vez caen más y más rápido, ¿la solución? moverte más rápido.

¿Te ves capaz? Pues te animo a realizar este proyecto, para el cual necesitarás una matriz LED de 8x8 y 2 botones para moverte hacia los lados.

Si te interesa como realizar este proyecto de forma muy fácil y rápida, quédate en esta pagina.

Explicación y funcionamiento del minijuego

El funcionamiento de este proyecto es muy sencillo: debemos de tratar esquivar los máximos meteoritos posibles. Fácil ¿no? Pues bien, el problema esta que a medida que pasa el tiempo, cada vez caen más meteoritos y más rápido, por lo que cada vez se hace mas difícil esquivarlos.

Para movernos debemos de pulsar 2 botones, con uno nos movemos hacia la izquierda y con el otro hacia la derecha, de esta forma es posible esquivar todos los meteoritos que van cayendo.

Esto es un proyecto con Arduino muy interesante, ya que pese a que el código de programación es bastante complejo, el montaje del proyecto es muy sencillo. Además, al realizar este proyecto, aprenderemos el funcionamiento de las matrices de LEDs 8x8.

Materiales empleados para realizar el proyecto

Los materiales para realizar este proyecto son muy sencillos y no debería de ser ningún problema conseguirlos, aun así, para que te sea más fácil, aquí tienes una lista con todos los componentes.

A continuación tienes una lista con los enlaces de compra en diferentes sitios.

Kit iniciación ArduinoKit iniciación ArduinoESUS
Placa Arduino UnoPlaca Arduino UnoESUS
Cables Macho HembraCables Macho HembraESUS
ProtoboardProtoboardESUS
Matriz LED 8x8Matriz LED 8x8ESUS
Botones ElectrónicaBotones ElectrónicaESUS

Si tienes alguna duda sobre los materiales que se utilizan en este proyecto, no dudes en dejar un comentario, te responderemos lo antes posible.

Video con explicación paso a paso del proyecto

Si lo que buscas es ver de una forma mucho más detallada de como realizar este proyecto desde el inicio hasta el final y una explicación del código, a continuación se muestra el video con dicho contenido, mucho mas visual y fácil de comprender. Y recuerda, si te gusta esta clase de contenido, no olvides suscribirte 😉

Esquema de conexiones de Arduino para el montaje del proyecto

Para que te sea más fácil montar este proyecto, aquí tienes el esquema de conexiones. Todas las conexiones de este esquema corresponden con el código de programación que hay justo abajo, así que asegúrate de que todas están tal y como se muestra en esta imagen.

Esquema conexiones esquivar meteoritos minijuego arduino

Código de Arduino para la programación del minijuego

A continuación se muestra el código de programación desarrollado específicamente para este proyecto. Los pines que puedes encontrar en el código son los mismos que encontrarás en el esquema de conexiones previamente mostrado.

Si quieres una explicación más detallada de las diferentes partes del código empleado para programar este proyecto y de su funcionamiento, te recomiendo que te veas el video que te hemos dejado más arriba.

Lo que debes de hacer para utilizar este código es muy sencillo, simplemente tienes que copiarlo y pegarlo en tu compilador de Arduino (por ejemplo, Arduino IDE). Si no lo tienes instalado, haz click aquí para ver un tutorial sobre como instalártelo de forma totalmente gratuita.

Si tienes cualquier duda, deja un comentario en esta pagina y te responderemos lo antes posible.

//Canal de YouTube -> RobotUNO
//Proyecto esquivar meteoritos en matriz led

#include "LedControl.h"
LedControl lc=LedControl(12,11,10,1);
unsigned long delaytime=1000;
String scoreString;
int score;
int hundreds;
String scoreStr;
String scoreArr[] = {"" ,"" ,"" };
int pinLeft = 2;
int pinRight = 3;
volatile unsigned long buttonPressed;
int buttonDelay = 150; 
volatile bool gameOver = false;
int tick;
int tickCounter = 1;
unsigned long now;
int ship;
int columns[] = {0,0,0,0,0,0,0,0};
int randomInt;

void setup() {
  gameOver = false;
  hundreds = 0;
  scoreArr[0] = "";
  scoreArr[1] = "";
  scoreArr[2] = "";
  score = 0;
  tick = 300;
  tickCounter = 1;
  ship = 3;
  now = millis();
  buttonPressed = millis();
  randomSeed(analogRead(15));
  for(int i = 0; i<8; i++)
    columns[i] = 0;;
  lc.shutdown(0,false);
  lc.setIntensity(0,1);
  lc.clearDisplay(0);
  pinMode(pinLeft, INPUT_PULLUP);
  pinMode(pinRight, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(pinLeft), left, FALLING);
  attachInterrupt(digitalPinToInterrupt(pinRight), right, FALLING);
}

void left()
{
  if(millis() - buttonPressed > buttonDelay)
  {
        if(ship != 0)
        ship--;
      else
        ship = 7;
      lc.clearDisplay(0);
      buttonPressed = millis();
  }
  if(gameOver == true){
  gameOver = false;
  setup();
  }
}

void right()
{
    if(millis() - buttonPressed > buttonDelay)
    {
      if(ship != 7)
        ship++;
      else
        ship = 0;
      lc.clearDisplay(0);
       buttonPressed = millis();
    }
  if(gameOver == true){
  gameOver = false;
  setup();
  }   
}

void loop() { 
  if(millis() - now > tick){
    score++;
    now = millis();

    if(tickCounter == 1){
       tick = tick/1.02;
      randomInt = random(0, 8);
      if(columns[randomInt] == 0){  
        columns[randomInt] = 1;
      }
    }
    if(tickCounter != 4)
      tickCounter++;
     else
      tickCounter = 1;
    for(int i = 0; i<8; i++){
      if(columns[i] == 10)
        columns[i] = 0;
      if(columns[i] != 0)
        columns[i]++;
    }

    lc.clearDisplay(0);
  }
  lc.setLed(0, 7, ship, true);
  for(int i = 0; i<8; i++){
    if(columns[i] > 0)
      lc.setLed(0, columns[i]-2, i, true);
      lc.setLed(0, columns[i]-3, i, true);
  }
  if(columns[ship] == 10 or columns[ship] == 9){
    lc.clearDisplay(0);
    for(int i = 0; i<4; i++){
      lc.setLed(0,7,ship+i,true);
      lc.setLed(0,7,ship-i,true);
      lc.setLed(0,7-i,ship+i,true);
      lc.setLed(0,7-i,ship-i,true);
      lc.setLed(0,7-1.5*i,ship,true);
      unsigned long time = millis();
      int randomSound=1000;
      while(millis() - time <= 250)  {  
        randomSound--;
        tone(9, random(randomSound, 1000));
      lc.clearDisplay(0);
      noTone(9);
    }
    delay(500);
    scoreStr = String(score);
    scoreArr[0] = scoreStr.charAt(0);
    scoreArr[1] = scoreStr.charAt(1);
    scoreArr[2] = scoreStr.charAt(2);
    if(score < 100){
        for(int i = 0; i<2; i++){
          if(scoreArr[i] == "0")
            draw0(1+i*4);
          if(scoreArr[i] == "1")
            draw1(1+i*4);
          if(scoreArr[i] == "2")
            draw2(1+i*4);
          if(scoreArr[i] == "3")
            draw3(1+i*4);
          if(scoreArr[i] == "4")
            draw4(1+i*4);
          if(scoreArr[i] == "5")
            draw5(1+i*4);
          if(scoreArr[i] == "6")
            draw6(1+i*4);
          if(scoreArr[i] == "7")
            draw7(1+i*4);
          if(scoreArr[i] == "8")
            draw8(1+i*4);
          if(scoreArr[i] == "9")
            draw9(1+i*4);
        }
        }
    else{
        for(int i = 1; i<3; i++){
          if(scoreArr[i] == "0")
            draw0(1+(i-1)*4));
          if(scoreArr[i] == "1")
            draw1(1+(i-1)*4);
          if(scoreArr[i] == "2")
            draw2(1+(i-1)*4);
          if(scoreArr[i] == "3")
            draw3(1+(i-1)*4);
          if(scoreArr[i] == "4")
            draw4(1+(i-1)*4);
          if(scoreArr[i] == "5")
            draw5(1+(i-1)*4);
          if(scoreArr[i] == "6")
            draw6(1+(i-1)*4);
          if(scoreArr[i] == "7")
            draw7(1+(i-1)*4);
          if(scoreArr[i] == "8")
            draw8(1+(i-1)*4);
          if(scoreArr[i] == "9")
            draw9(1+(i-1)*4);
        }
        for(int i = 1; i<10; i++){
          if(scoreArr[0] == String(i))
            hundreds = i;
        }
        for(int i = 1; i <= hundreds; i++){
          lc.setLed(0,0,i-1,true);
          lc.setLed(0,1,i-1,true);
          delay(200);          
        }
    }
   gameOver = true;
    while(gameOver == true){
      }
  }
}

void draw1(int position){
    lc.setColumn(0,0+position,B00001000);
    lc.setColumn(0,1+position,B00011111);
}

void draw2(int position){
    lc.setColumn(0,0+position,B00010111);
    lc.setColumn(0,1+position,B00010101);
    lc.setColumn(0,2+position,B00011101);  
}
void draw3(int position){
    lc.setColumn(0,0+position,B00010001);
    lc.setColumn(0,1+position,B00010101);
    lc.setColumn(0,2+position,B00011111);  
}
void draw4(int position){
    lc.setColumn(0,0+position,B00011100);
    lc.setColumn(0,1+position,B00000100);
    lc.setColumn(0,2+position,B00011111);  
}
void draw5(int position){
    lc.setColumn(0,0+position,B00011101);
    lc.setColumn(0,1+position,B00010101);
    lc.setColumn(0,2+position,B00010111);  
}
void draw6(int position){
    lc.setColumn(0,0+position,B00011111);
    lc.setColumn(0,1+position,B00010101);
    lc.setColumn(0,2+position,B00010111);  
}
void draw7(int position){
    lc.setColumn(0,0+position,B00010000);
    lc.setColumn(0,1+position,B00010011);
    lc.setColumn(0,2+position,B00011100);  
}
void draw8(int position){
    lc.setColumn(0,0+position,B00011111);
    lc.setColumn(0,1+position,B00010101);
    lc.setColumn(0,2+position,B00011111);  
}
void draw9(int position){
    lc.setColumn(0,0+position,B00011101);
    lc.setColumn(0,1+position,B00010101);
    lc.setColumn(0,2+position,B00011111);  
}
void draw0(int position){
    lc.setColumn(0,0+position,B00011111);
    lc.setColumn(0,1+position,B00010001);
    lc.setColumn(0,2+position,B00011111);  
}
proyecto con arduino uno robot uno diana punteria laser

Minijuego con Arduino: "Diana laser"

¿Tienes buena puntería? Bueno, no importa, con este proyecto hecho con Arduino seguro que la mejoras. Por si, ni mas ni menos que este mini juego trata de realizar una diana que detecte un laser, para así poder practicar nuestra puntería y nuestro pulso. 

Este proyecto incluye diferentes modos de juego, los cuales nos ayudaran a mejorar nuestra puntería.

Si te interesa como realizar este proyecto de forma muy fácil y rápida, quédate en esta pagina. 

Explicación y funcionamiento del minijuego

El objetivo de este proyecto es el siguiente: debemos de intentar que el laser toque la fotorresistencia, que en este caso es nuestra diana. Cada vez que el laser incida sobre la fotorresistencia, el contador sumará uno. Cuando le demos 5 veces (se puede cambiar este valor) se acabará la partida.

Otro modo de juego es intentar aguantar el máximo tiempo posible con la luz del laser sobre la fotorresistencia. Cada 0.5 segundos el led rojo se encenderá y una vez que se encienda 5 veces, el juego se acaba.

Como he comentado antes, todos estos valores se pueden cambiar en el código de programación de una forma muy sencilla, por defecto viene el numero 5, pero este se puede cambiar y poner el valor que deseemos.

Es un proyecto muy interesante con Arduino ya que nos permite entender el funcionamiento de las fotorresistencias así como la utilización de contadores dentro del código de programación. Sin duda un minijuego muy recomendable.

Materiales empleados en la realización del proyecto

Los materiales para realizar este proyecto son muy sencillos y no debería de ser ningún problema conseguirlos, aun así, para que te sea más fácil, aquí tienes una lista con todos los componentes.

Kit iniciación ArduinoKit iniciación ArduinoESUS
Placa Arduino UnoPlaca Arduino UnoESUS
Kit de LEDsKit de LEDsESUS
Cables Macho HembraCables Macho HembraESUS
ProtoboardProtoboardESUS

Si tienes alguna duda sobre los materiales que se utilizan en este proyecto, no dudes en dejar un comentario, te responderemos lo antes posible.

Video paso a paso con la explicación del proyecto

Si lo que buscas es ver de una forma mucho más detallada de como realizar este proyecto desde el inicio hasta el final y una explicación del código, a continuación se muestra el video con dicho contenido, mucho mas visual y fácil de comprender. Y recuerda, si te gusta esta clase de contenido, no olvides suscribirte 😉

Esquema de conexiones Arduino para realizar el proyecto

Para que te sea más fácil montar este proyecto, aquí tienes el esquema de conexiones. Todas las conexiones de este esquema corresponden con el código de programación que hay justo abajo, así que asegúrate de que todas están tal y como se muestra en esta imagen. 

esquema Fritzing minijuego diana laser arduino

Código de Arduino para la programación del minijuego

A continuación se muestra el código de programación desarrollado específicamente para este proyecto. Los pines que puedes encontrar en el código son los mismos que encontrarás en el esquema de conexiones previamente mostrado.

Si quieres una explicación más detallada de las diferentes partes del código empleado para programar este proyecto y de su funcionamiento, te recomiendo que te veas el video que te hemos dejado más arriba.

Lo que debes de hacer para utilizar este código es muy sencillo, simplemente tienes que copiarlo y pegarlo en tu compilador de Arduino (por ejemplo, Arduino IDE). Si no lo tienes instalado, haz click aquí para ver un tutorial sobre como instalártelo de forma totalmente gratuita.

Si tienes cualquier duda, deja un comentario en esta pagina y te responderemos lo antes posible.

//Canal de YouTube -> RobotUNO
//Entrenamiento punteria con un laser

#define led_rojo 11
#define led_verde 12
int sensor=0, contador=0;

int valor = 0;  
void setup() { 
  Serial.begin(9600);
  
  pinMode(led_rojo,OUTP
  UT);
  pinMode(led_verde,OUTPUT);
  pinMode(sensor,INPUT);
} 
void loop() {
  sensor = analogRead(A0);
  Serial.print(sensor);
  Serial.print("\n");

  if(sensor>500){ //CALIBRAR EL SENSOR
    digitalWrite(led_rojo,HIGH);
    delay(500);
    digitalWrite(led_rojo,LOW);
    contador++;
  }

  if(contador==5){
    digitalWrite(led_verde,HIGH);
  }
  
  delay(100);
}
proyecto con arduino carrera encender un led

Juego con Arduino: "Carrera para encender un LED"

¿Eres una persona competitiva? Pues aquí tienes el minijuego perfecto para ti. Con este juego podrás retar a tus amigos para ver quien es mas rápido a la hora de pulsar un botón muchas veces. 

PREPARADOS. LISTOS. YAA!!!! COMIENZA LA CARRERA

Explicación y funcionamiento del juego

El funcionamiento de este juego es muy sencillo, consiste en pulsar muchas veces un botón hasta que se encienda un LED. La dificultad esta en que hay que intentar encender el led antes que tu oponente. Para ello se ha programado de tal forma que el primero que consiga pulsar 10 veces el botón, se encenderá su LED y ganará.

Pero eso no es todo, este juego te permite también jugar tu solo, para ello deberás cronometrarte cuanto tardas en encender el LED e intentar mejorar el tiempo. Por ultimo, también puedes jugar pulsando cada botón con una mano diferente y viendo con cual lo enciendes antes.

En definitiva me parece un proyecto con Arduino muy interesante para todos aquellos que quieran conocer el funcionamiento de un botón y como leer el numero de veces que se pulsa con Arduino.

Materiales empleados en el proyecto

Los materiales para realizar este proyecto son muy sencillos y no debería de ser ningún problema conseguirlos, aun así, para que te sea más fácil, aquí tienes una lista con todos los componentes.

A continuación tienes una lista con los enlaces de compra.

Kit iniciación ArduinoKit iniciación ArduinoESUS
Placa Arduino UnoPlaca Arduino UnoESUS
Cables Macho HembraCables Macho HembraESUS
Botones ElectrónicaBotones ElectrónicaESUS
Kit de LEDsKit de LEDsESUS
ProtoboardProtoboardESUS

Si tienes alguna duda sobre los materiales que se utilizan en este proyecto, no dudes en dejar un comentario, te responderemos lo antes posible.

Video explicación del proyecto

Si lo que buscas es ver de una forma mucho más detallada de como realizar este proyecto desde el inicio hasta el final y una explicación del código, a continuación se muestra el video con dicho contenido, mucho mas visual y fácil de comprender. Y recuerda, si te gusta esta clase de contenido, no olvides suscribirte 😉

Esquema de conexiones Arduino para montar el proyecto

Para que te sea más fácil montar este proyecto, aquí tienes el esquema de conexiones. Todas las conexiones de este esquema corresponden con el código de programación que hay justo abajo, así que asegúrate de que todas están tal y como se muestra en esta imagen.

esquema de conexiones proyecto con arduino minijuego carrera encender led

Código de Arduino para la programación del proyecto

A continuación se muestra el código de programación desarrollado específicamente para este proyecto. Los pines que puedes encontrar en el código son los mismos que encontrarás en el esquema de conexiones previamente mostrado.

Si quieres una explicación más detallada de las diferentes partes del código empleado para programar este proyecto y de su funcionamiento, te recomiendo que te veas el video que te hemos dejado más arriba.

Lo que debes de hacer para utilizar este código es muy sencillo, simplemente tienes que copiarlo y pegarlo en tu compilador de Arduino (por ejemplo, Arduino IDE). Si no lo tienes instalado, haz click aquí para ver un tutorial sobre como instalártelo de forma totalmente gratuita.

Si tienes cualquier duda, deja un comentario en esta pagina y te responderemos lo antes posible.

//Canal de YouTube -> RobotUNO
//Carrera con leds

#define button1 8
#define button2 4
#define led1 9
#define led2 5

int goal = 10, win=0, flag1=0, flag2=0;
int state1 = 0;
int state2 = 0;

int contador1 = 0;
int contador2 = 0;

void setup(){
  pinMode(button1, INPUT);
  pinMode(button2, INPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT); 
}

void loop(){
  state1 = digitalRead(button1);
  state2 = digitalRead(button2);
  
  if(state1 == HIGH && flag1==0){
    contador1++;
    flag1=1;
  }
  if(state1==LOW && flag1==1){
    flag1=0;
  }
  if(state2==HIGH && flag2==0){
    contador2++;
    flag2=1;
  }
    if(state2==LOW && flag2==1){
    flag2=0;
  }

  if(contador1 == goal && win==0){
    for(int i=0;i<10;i++){
      digitalWrite(led1,HIGH);
      delay(50);
      digitalWrite(led1,LOW);
      delay(50);
    }
    digitalWrite(led1,HIGH);
    win=1;
  }
  if(contador2 == goal && win==0){
    for(int i=0;i<10;i++){
      digitalWrite(led2,HIGH);
      delay(50);
      digitalWrite(led2,LOW);
      delay(50);
    }
    digitalWrite(led2,HIGH);
    win=1;
  }
}

 

snake game con arduino juego serpiente

Juego con Arduino: "Snake game con una matriz 8x8"

Por fin tenemos el tutorial completo de uno de los mini juegos mas famosos del mundo. Ni mas ni menos que el mítico juego de la serpiente que a medida que se va comiendo manzanas va creciendo. Este juego también es muy conocido por su nombre en ingles "Snake Game". 

Bueno bueno, pero eso no es todo, este juego esta realizado solamente con un modulo de leds 8x8. Si, en efecto, el típico que traen todos los kits de Arduino básicos.

Si te interesa como realizar este proyecto de forma muy fácil y rápida, quédate en esta pagina.

Explicación del funcionamiento y objetivos del juego

Bueno, creo que esta vez es un mini juego tan famoso, que no hace falta ni explicar su funcionamiento, pero bueno, vamos a hacerlo por si acaso que seguro que hay alguien que seguro que no sabe de que juego estamos hablando.

El funcionamiento de este juego es muy fácil. Consiste en una serpiente que a medida que va comiendo manzanas va aumentando su tamaño. ¿El objetivo? Ser cada vez más y más grande, hasta que llegue un punto que no quepa en la pantalla, que es cuando se considera que oficialmente el juego esta terminado. La gracia esta en que si te chocas con tu propio cuerpo, pierdes y te toca volver a empezar de 0.

¿Parece fácil eh? Pues te reto a que intentes pasártelo, ya que cuanto más grande es la serpiente, más fácil es quedarse encerrado sin salida y acabar chocándote con tu propio cuerpo.

Bueno, ¿Estas listo? VAMOS AL LIO!

Materiales necesarios para la realización del proyecto

Los materiales para realizar este proyecto son muy sencillos y no debería de ser ningún problema conseguirlos, aun así, para que te sea más fácil, aquí tienes una lista con todos los componentes.

A continuación tienes una lista con los enlaces de compra:

Kit iniciación ArduinoKit iniciación ArduinoESUS
Placa Arduino UnoPlaca Arduino UnoESUS
JoystickJoystickESUS
Matriz LED 8x8Matriz LED 8x8ESUS
Cables Macho HembraCables Macho HembraESUS
BuzzerBuzzerESUS

Video explicación del proyecto

Si lo que buscas es ver de una forma mucho más detallada de como realizar este proyecto desde el inicio hasta el final y una explicación del código, a continuación se muestra el video con dicho contenido, mucho mas visual y fácil de comprender. Y recuerda, si te gusta esta clase de contenido, no olvides suscribirte 😉

Esquema de conexiones Arduino para montar minijuego snake

Para que te sea más fácil montar este proyecto, aquí tienes el esquema de conexiones. Todas las conexiones de este esquema corresponden con el código de programación que hay justo abajo, así que asegúrate de que todas están tal y como se muestra en esta imagen. 

esquema conexiones arduino snake game juego serpiente

Código de programación de Arduino para el juego de la serpiente

A continuación se muestra el código de programación desarrollado específicamente para este proyecto. Los pines que puedes encontrar en el código son los mismos que encontrarás en el esquema de conexiones previamente mostrado.

Si quieres una explicación más detallada de las diferentes partes del código empleado para programar este proyecto y de su funcionamiento, te recomiendo que te veas el video que te hemos dejado más arriba.Lo que debes de hacer para utilizar este código es muy sencillo, simplemente tienes que copiarlo y pegarlo en tu compilador de Arduino (por ejemplo, Arduino IDE). Si no lo tienes instalado, haz click aquí para ver un tutorial sobre como instalártelo de forma totalmente gratuita.Si tienes cualquier duda, deja un comentario en esta pagina y te responderemos lo antes posible.

//Canal de YouTube -> 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);
        }
      }
    }
  }
}
minijuego snake game

Juego con Arduino: "Skate game pantalla LCD"

¿Has jugado alguna vez con un skate? Bueno, sea sí o no tu respuesta, este juego es para ti. Esquivar obstáculos, pasar de nivel, batir récords, aprender a programar, aprender sobre pantallas LCD mientras juegas. Suena bien, ¿Verdad? Pues adelante con tutorial.

Si te interesa como realizar este proyecto de forma muy fácil y rápida, quédate en esta pagina.

Explicación, Objetivo y Funcionamiento del juego

El funcionamiento y los objetivos con este minijuego son muy sencillos. El juego consiste en esquivar los obstáculos que van apareciendo en la pantalla, cada vez a mayor velocidad.

Para ello debemos pulsar un botón, el cual hará que nuestro personaje en skate salte y esquive el obstáculos, pero claro, no todo es tan fácil, porque habrá que calcular cuanto y cuando pulsamos el botón, ya que después de cada obstáculo, SIEMPRE VIENEN MÁS. 

¿Te gusta la idea? Pues no solo es eso. Al hacer este proyecto, también aprenderás el funcionamiento de las pantallas LCD, que tienen muchísimas aplicaciones en Arduino. Me parece algo genial y que todo el mundo debería, al menos, conocer su funcionamiento.

VAMOS AL LIO!

Materiales empleados en el proyecto

Los materiales para realizar este proyecto son muy sencillos y no debería de ser ningún problema conseguirlos, aun así, para que te sea más fácil, aquí tienes una lista con todos los componentes.

A continuación tienes una lista con los enlaces de compra.

Kit iniciación ArduinoKit iniciación ArduinoESUS
Placa Arduino UnoPlaca Arduino UnoESUS
Cables Macho HembraCables Macho HembraESUS
Botones ElectrónicaBotones ElectrónicaESUS
ProtoboardProtoboardESUS

Video paso a paso con la explicación del proyecto

Si lo que buscas es ver de una forma mucho más detallada de como realizar este proyecto desde el inicio hasta el final y una explicación del código, a continuación se muestra el video con dicho contenido, mucho mas visual y fácil de comprender. Y recuerda, si te gusta esta clase de contenido, no olvides suscribirte 😉

Esquema de conexiones Arduino para montar el proyecto

Para que te sea más fácil montar este proyecto, aquí tienes el esquema de conexiones. Todas las conexiones de este esquema corresponden con el código de programación que hay justo abajo, así que asegúrate de que todas están tal y como se muestra en esta imagen. 

esquema conexiones arduino skate game pantalla lcd

Código de Arduino para la programación del proyecto

A continuación se muestra el código de programación desarrollado específicamente para este proyecto. Los pines que puedes encontrar en el código son los mismos que encontrarás en el esquema de conexiones previamente mostrado.

Si quieres una explicación más detallada de las diferentes partes del código empleado para programar esta grúa y de su funcionamiento, te recomiendo que te veas el video que te hemos dejado más arriba.

Lo que debes de hacer para utilizar este código es muy sencillo, simplemente tienes que copiarlo y pegarlo en tu compilador de Arduino (por ejemplo, Arduino IDE). Si no lo tienes instalado, haz click aquí para ver un tutorial sobre como instalártelo de forma totalmente gratuita.

Si tienes cualquier duda, deja un comentario en esta pagina y te responderemos lo antes posible.

//Canal -> RobotUNO
//Minijuego con pantalla LCD
#include <LiquidCrystal.h>//libreria de la pantalla 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Configura los pines de salida para la lcd
byte letra1[8] = { B01110, B00100, B11111, B01110, B01010, B01010, B11111, B01010 };
byte letra2[8] = { B01110, B00100, B11111, B01110, B11011, B00000, B11111, B11111 };
byte letra6[8] = { B01110, B10101, B11111, B01110, B01010, B01010, B11111, B01010 };
byte letra0[8] = { B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00000 };
byte letra3[8] = { B00000, B00000, B00000, B11111, B11111, B11111, B11111, B11111 };
byte letra4[8] = { B00000, B11111, B11111, B11111, B11111, B11111, B11111, B11111 };
byte letra5[8] = { B01110, B11111, B11111, B11111, B11111, B11111, B11111, B11111 };
int x=15;
int y=1;
int obstaculos=0;
int vel=300;
int puntaje=0;
int GameOver=3;
void setup(){
  lcd.begin(16, 2);
  lcd.createChar(1, letra1);
  lcd.createChar(2, letra2);
  lcd.createChar(3, letra3);
  lcd.createChar(4, letra4);
  lcd.createChar(5, letra5);
  lcd.createChar(0, letra0);
  lcd.createChar(6, letra6);
}
void loop(){
  lcd.setCursor(7, 0); //Posición del nombre del canal 
  lcd.print("RobotUNO");
  lcd.setCursor(0, 0); //Coloca el numero 0 
  lcd.print(obstaculos);
  lcd.setCursor(x,y);
  lcd.write(byte(3));
  delay(vel);
  lcd.setCursor(x,y);
  lcd.write(byte(4));
  delay(vel);
  lcd.setCursor(x,y);
  lcd.write(byte(5));
  delay(vel);
  lcd.clear();
  lcd.setCursor(GameOver, 1); 
  lcd.setCursor(3, 1);  
  lcd.write(byte(1)); 
  if (digitalRead(7) == HIGH){ 
    lcd.setCursor(3, 1);
    lcd.write(byte(0));
    lcd.setCursor(3, 0);
    lcd.write(byte(2));
  }
     else if(3 == x){
      lcd.clear();
      lcd.setCursor(3, 0);
      lcd.print("Game Over");
      lcd.setCursor(7, 1);
      lcd.write(byte(6));
      delay(3000);
      puntaje=obstaculos;
      lcd.setCursor(3, 1);
      lcd.print("Puntaje:");
      lcd.setCursor(12, 1);
      lcd.print(puntaje);
      delay(6000);
      obstaculos=0;
     }
   x=x-1;              
  if (x<=0) {  
     x=15;                        
  }
 vel = random(1,200);
if(GameOver == x){ 
  lcd.clear();
  obstaculos++;
}
}
miniatura simon dice

Cómo realizar el juego "Simón dice!" con Arduino

¿Simón dice? Simón dice, ¿Conocías este juego? Conocías este juego, ¿Has jugado? Has jugado, ¿Paro? Paro. Vale, ya paro, pero esto no es más que una demostración de como funcione este famoso mini juego. En este post te enseñaremos como realizar este mítico juego haciendo uso de un controlador Arduino.

Si te interesa como realizar este proyecto de forma muy fácil y rápida, quédate en esta pagina. ¿Empezamos? Empezamos!

Explicación y funcionamieinto del juego Simón Dice

No me creo que haya alguien que no conoce el funcionamiento de este mini juego, aun así, aquí tienes una explicación de como se juega a Simón Dince usando una placa de Arduino.

Básicamente el juego consiste en memorizar la secuencia de leds que se va generando de forma aleatoria.

Una vez que la secuencia termina llega tu turno, en el cual tienes que replicar pulsando los botones la misma secuencia que se ha mostrado anteriormente. Hasta aquí todo muy bien y muy fácil, ¿no?

Pues bueno, lo difícil llega ahora, ya que cada secuencia que aciertas, la siguiente no solo va mas rápida, sino que también es mas larga. ¿Cuántas secuencias lograrás completar? ¿Te costará mucho? ¿Ganarás a tus amigos?

Comprueba todo esto realizando el proyecto en Arduino y poniéndote a prueba! Vamos allá.

Metariales y componentes empleados en la realización del proyecto

Si sólo necesitas alguno de los componentes para realizar este producto. A continuación tienes una lista con los diferentes componentes para que no pierdas el tiempo buscando y comparando las mejores ofertas.

Si tienes alguna duda sobre los materiales que se utilizan en este proyecto, no dudes en dejar un comentario, te responderemos lo antes posible.

Kit iniciación ArduinoKit iniciación ArduinoESUS
Placa Arduino UnoPlaca Arduino UnoESUS
Cables Macho HembraCables Macho HembraESUS
Botones ElectrónicaBotones ElectrónicaESUS
BuzzerBuzzerESUS
Kit de resistenciasKit de resistenciasESUS
Kit de LEDsKit de LEDsESUS

Video paso a paso del proyecto

Si lo que buscas es ver de una forma mucho más detallada de como realizar este proyecto desde el inicio hasta el final y una explicación del código, a continuación se muestra el video con dicho contenido, mucho mas visual y fácil de comprender. Y recuerda, si te gusta esta clase de contenido, no olvides suscribirte 😉

Esquema de conexiones Arduino para minijuego Simon Dice

Queremos ponertelo muy fácil y accesibnle para que, independientemente de tu nivel con Arduino, puedas montar este minijuego. Es por ello que, para que te sea más fácil de montar este proyecto, aquí tienes el esquema de conexiones para el juego de Simon Dice.

Todas las conexiones de este esquema se corresponden con el código de programación que hay justo debajo, así que asegúrate de que todas están tal y como se muestra en esta imagen.

esquema arduino simon dice minijuego

Código de Arduino para la programación del proyecto

A continuación se muestra el código de Arduino desarrollado específicamente para este mini juego de Simon Dice. Los pines usados en el código se corresponden con los pines que encontrarás en el esquema de conexiones previamente mostrado.Si quieres una explicación más detallada de las diferentes partes del código empleado para programar esta grúa y de su funcionamiento, te recomiendo que te veas el video que te hemos dejado más arriba.

Si tienes dudas sobre cómo usar o instalar el entorno de programación empleado para Arduino, te dejamos un link de comó descargar el IDE de Arduino

//Canal de YouTube -> RobotUNO
//Juego Simon dice
#define   BUZZER   7
#define   ENTRADA_A  13
#define   ENTRADA_B  12
#define   ENTRADA_C  11
#define   ENTRADA_D  10
#define   SALIDA_A   2
#define   SALIDA_B   3
#define   SALIDA_C   4
#define   SALIDA_D   5
int melodia[ ] = {262, 196, 196, 220, 196, 0, 247, 262};
int duracionNotas[] = {4, 8, 8, 4, 4, 4, 4, 4};
int nivelActual = 1;
int velocidad = 500;
const int NIVEL_MAX = 100;
int secuencia[NIVEL_MAX];
int secuenciaUsuario[NIVEL_MAX];
void setup(){
   pinMode(ENTRADA_D, INPUT);
   pinMode(ENTRADA_C, INPUT);
   pinMode(ENTRADA_B, INPUT);
   pinMode(ENTRADA_A, INPUT);
   pinMode(SALIDA_A, OUTPUT);
   pinMode(SALIDA_B, OUTPUT);
   pinMode(SALIDA_C, OUTPUT);
   pinMode(SALIDA_D, OUTPUT);
   digitalWrite(SALIDA_A, LOW);
   digitalWrite(SALIDA_B, LOW);
   digitalWrite(SALIDA_C, LOW);
   digitalWrite(SALIDA_D, LOW);
}
void loop(){
   if(nivelActual == 1){
      generaSecuencia();
      muestraSecuencia();
      leeSecuencia();
   }
   if(nivelActual != 1){
      muestraSecuencia();
      leeSecuencia();
   }
}
void muestraSecuencia(){
   digitalWrite(SALIDA_A, LOW);
   digitalWrite(SALIDA_B, LOW);
   digitalWrite(SALIDA_C, LOW);
   digitalWrite(SALIDA_D, LOW);
   for(int i = 0; i < nivelActual; i++){
      if( secuencia[i] == SALIDA_A ){
         tone(BUZZER, 200);
         delay(200);
         noTone(BUZZER);
      }
      if( secuencia[i] == SALIDA_B ){
         tone(BUZZER, 300);
         delay(200);
         noTone(BUZZER);
      }
      if( secuencia[i] == SALIDA_C ){
         tone(BUZZER, 400);
         delay(200);
         noTone(BUZZER);
      }
      if( secuencia[i] == SALIDA_D ){
         tone(BUZZER, 500);
         delay(200);
         noTone(BUZZER);
      }
      digitalWrite(secuencia[i], HIGH);
      delay(velocidad);
      digitalWrite(secuencia[i], LOW);
      delay(200);
   }
}
void leeSecuencia(){
   int flag = 0;
   for(int i = 0; i < nivelActual; i++){
      flag = 0;
      while(flag == 0){
         if(digitalRead(ENTRADA_D) == LOW){
            digitalWrite(SALIDA_D, HIGH);
            tone(BUZZER, 500);
            delay(300);
            noTone(BUZZER);
            secuenciaUsuario[i] = SALIDA_D;
            flag = 1;
            delay(200);
            if(secuenciaUsuario[i] != secuencia[i]){
               secuenciaError();
               return;
            }
            digitalWrite(SALIDA_D, LOW);
         }
         if(digitalRead(ENTRADA_C) == LOW){
            digitalWrite(SALIDA_C, HIGH);
            tone(BUZZER, 400);
            delay(300);
            noTone(BUZZER);
            secuenciaUsuario[i] = SALIDA_C;
            flag = 1;
            delay(200);
            if(secuenciaUsuario[i] != secuencia[i]){
               secuenciaError();
               return;
            }
            digitalWrite(SALIDA_C, LOW);
         }
         if(digitalRead(ENTRADA_B) == LOW){
            digitalWrite(SALIDA_B, HIGH);
            tone(BUZZER, 300);
            delay(300);
            noTone(BUZZER);
            secuenciaUsuario[i] = SALIDA_B;
            flag = 1;
            delay(200);
            if(secuenciaUsuario[i] != secuencia[i]){
               secuenciaError();
               return;
            }
            digitalWrite(SALIDA_B, LOW);
         }
         if(digitalRead(ENTRADA_A) == LOW){
            digitalWrite(SALIDA_A, HIGH);
            tone(BUZZER, 200);
            delay(300);
            noTone(BUZZER);
            secuenciaUsuario[i] = SALIDA_A;
            flag = 1;
            delay(200);
            if(secuenciaUsuario[i] != secuencia[i]){
               secuenciaError();
               return;
            }
            digitalWrite(SALIDA_A, LOW);
         }
      }
   }
   secuenciaCorrecta();
}
void generaSecuencia(){
   randomSeed(millis());
   for(int i = 0; i < NIVEL_MAX; i++){
      secuencia[i] = random(2,6);
   }
}
void melodiaError(){
   for(int i = 0; i < 8; i++){
      int duracionNota = 1000/duracionNotas[i];
      tone(BUZZER, melodia[i],duracionNotas);
      int pausaEntreNotas = duracionNota * 1.30;
      delay(pausaEntreNotas);
      noTone(BUZZER);
   }
}
void secuenciaError(){
   digitalWrite(SALIDA_A, HIGH);
   digitalWrite(SALIDA_B, HIGH);
   digitalWrite(SALIDA_C, HIGH);
   digitalWrite(SALIDA_D, HIGH);
   delay(250);
   digitalWrite(SALIDA_A, LOW);
   digitalWrite(SALIDA_B, LOW);
   digitalWrite(SALIDA_C, LOW);
   digitalWrite(SALIDA_D, LOW);
   delay(250);
   melodiaError();
   nivelActual = 1;
   velocidad = 500;
}
void secuenciaCorrecta(){
   if(nivelActual < NIVEL_MAX);
      nivelActual++;
   velocidad -= 50;
   delay(200);
}

Lo que debes de hacer para utilizar este código es muy sencillo, simplemente tienes que copiarlo y pegarlo en tu compilador de Arduino (por ejemplo, Arduino IDE). Si no lo tienes instalado, haz click aquí para ver un tutorial sobre como instalártelo de forma totalmente gratuita.Si tienes cualquier duda, deja un comentario en esta pagina y te responderemos lo antes posible.

pingpong con arduino tutorial completo

Juego con Arduino: "Ping-Pong"

Y otro juego más por aquí. En este caso se trata de un juego con Arduino que simula el PING-PONG. Es ideal para jugar con tus amigos y ver quien tiene mayores reflejos! Te reto!

Explicación, Objetivo y Funcionamiento del juego

El funcionamiento de este minijuego es muy muy sencillo. Este minijuego esta pensado para jugar 2 personas, aunque también puedes jugar tu solo pulsando ambos botones.

El mini juego consiste en una fila de leds, la cual en cada extremo tiene un led de color amarillo y otro de color rojo. La finalidad es pulsar el botón cuando el led amarillo se encienda, sin que llegue nunca a encenderse el led rojo, ya se si este se enciende, se acaba el juego. 

Al pulsar el botón cuando esta en el led amarillo, la "pelota" rebota hacia el otro lado, haciendo que tu contrincante sea el encargado de pulsar el botón cuando se encienda su led de color amarillo, para así devolverte la "pelota".

Materiales empleados en el proyecto

Los materiales para realizar este proyecto son muy sencillos y no debería de ser ningún problema conseguirlos, aun así, para que te sea más fácil, aquí tienes una lista con todos los componentes.A continuación tienes una lista con los enlaces de compra en diferentes sitios.

Kit iniciación ArduinoKit iniciación ArduinoESUS
Placa Arduino UnoPlaca Arduino UnoESUS
ProtoboardProtoboardESUS
Kit de resistenciasKit de resistenciasESUS
Kit de LEDsKit de LEDsESUS
Botones ElectrónicaBotones ElectrónicaESUS
Cables Macho HembraCables Macho HembraESUS

Si tienes alguna duda sobre los materiales que se utilizan en este proyecto, no dudes en dejar un comentario, te responderemos lo antes posible.

Video explicación del proyecto

Si lo que buscas es ver de una forma mucho más detallada de como realizar este proyecto desde el inicio hasta el final y una explicación del código, a continuación se muestra el video con dicho contenido, mucho mas visual y fácil de comprender. Y recuerda, si te gusta esta clase de contenido, no olvides suscribirte 😉

Esquema de conexiones Arduino para montar el proyecto

Para que te sea más fácil montar este proyecto, aquí tienes el esquema de conexiones. Todas las conexiones de este esquema corresponden con el código de programación que hay justo abajo, así que asegúrate de que todas están tal y como se muestra en esta imagen. 

esquema Fritzing ping pong bb

El color de los leds no importa, puedes poner los colores que quieras, aun así, te recomiendo utilizar esta combinación de colores ya que es muy intuitiva, pero si quieres puedes dejar volar tu imaginación!

Código de Arduino para la programación del proyecto

A continuación se muestra el código de programación desarrollado específicamente para este proyecto. Los pines que puedes encontrar en el código son los mismos que encontrarás en el esquema de conexiones previamente mostrado.

Si quieres una explicación más detallada de las diferentes partes del código empleado para programar esta grúa y de su funcionamiento, te recomiendo que te veas el video que te hemos dejado más arriba.

Lo que debes de hacer para utilizar este código es muy sencillo, simplemente tienes que copiarlo y pegarlo en tu compilador de Arduino (por ejemplo, Arduino IDE).

Si no lo tienes instalado, haz click aquí para ver un tutorial sobre como instalártelo de forma totalmente gratuita.Si tienes cualquier duda, deja un comentario en esta pagina y te responderemos lo antes posible.

//Canal YouTube -> RobotUNO
//Proyecto Ping pong
#define rojo1 A2
#define amarillo2 A1
#define verde3 A0
#define verde4 2
#define verde5 3
#define verde6 4
#define verde7 5
#define verde8 6
#define verde9 7
#define verde10 8
#define verde11 9
#define verde12 10
#define verde13 11
#define amarillo14 12
#define rojo15 13
int BOTON_IZQ;
int BOTON_DER;
int aux=7, vel=400;
int direccion_der=1;
int direccion_izq=0;
void setup() {
  pinMode(rojo1,OUTPUT);
  pinMode(amarillo2,OUTPUT);
  pinMode(verde3,OUTPUT);
  pinMode(verde4,OUTPUT);
  pinMode(verde5,OUTPUT);
  pinMode(verde6,OUTPUT);
  pinMode(verde7,OUTPUT);
  pinMode(verde8,OUTPUT);
  pinMode(verde9,OUTPUT);
  pinMode(verde10,OUTPUT);
  pinMode(verde11,OUTPUT);
  pinMode(verde12,OUTPUT);
  pinMode(verde13,OUTPUT);
  pinMode(amarillo14,OUTPUT);
  pinMode(rojo15,OUTPUT);
  
  pinMode(A5,INPUT);
  pinMode(A4,INPUT);
}
void loop() {
  BOTON_IZQ=digitalRead(A5);
  BOTON_DER=digitalRead(A4);
  if (aux==2 && BOTON_IZQ==1){
    aux++;
    direccion_der=1;
    direccion_izq=0;
    PELOTA();
    vel=vel-50;
  }
  else if (aux==14 && BOTON_DER==1){
    aux--;
    direccion_der=0;
    direccion_izq=1;
    PELOTA();
  }
  else if (direccion_der==1){
    aux++;
    PELOTA();
  }
  else if (direccion_izq==1){
    aux--;
    PELOTA();
  } 
  delay(vel);
}
void PELOTA(){
  switch (aux) {
  case 1: //pierdes el juego
    digitalWrite(rojo1,HIGH);
    digitalWrite(amarillo2,LOW);
  break;
  case 2: //amarillo izquierda
    digitalWrite(rojo1,LOW);
    digitalWrite(amarillo2,HIGH);
    digitalWrite(verde3,LOW);
  break;
  case 3:
    digitalWrite(amarillo2,LOW);
    digitalWrite(verde3,HIGH);
    digitalWrite(verde4,LOW);
  break;
  case 4:
    digitalWrite(verde3,LOW);
    digitalWrite(verde4,HIGH);
    digitalWrite(verde5,LOW);
  break;
  case 5:
    digitalWrite(verde4,LOW);
    digitalWrite(verde5,HIGH);
    digitalWrite(verde6,LOW);
  break;
  case 6:
    digitalWrite(verde5,LOW);
    digitalWrite(verde6,HIGH);
    digitalWrite(verde7,LOW);
  break;
  case 7:
    digitalWrite(verde6,LOW);
    digitalWrite(verde7,HIGH);
    digitalWrite(verde8,LOW);
  break;
  case 8:
    digitalWrite(verde7,LOW);
    digitalWrite(verde8,HIGH);
    digitalWrite(verde9,LOW);
  break;
  case 9:
    digitalWrite(verde8,LOW);
    digitalWrite(verde9,HIGH);
    digitalWrite(verde10,LOW);
  break;
  case 10:
    digitalWrite(verde9,LOW);
    digitalWrite(verde10,HIGH);
    digitalWrite(verde11,LOW);
  break;
  case 11:
    digitalWrite(verde10,LOW);
    digitalWrite(verde11,HIGH);
    digitalWrite(verde12,LOW);
  break;
  case 12:
    digitalWrite(verde11,LOW);
    digitalWrite(verde12,HIGH);
    digitalWrite(verde13,LOW);
  break;
  case 13:
    digitalWrite(verde12,LOW);
    digitalWrite(verde13,HIGH);
    digitalWrite(amarillo14,LOW);
  break;
  case 14: //amarillo derecha
    digitalWrite(verde13,LOW);
    digitalWrite(amarillo14,HIGH);
    digitalWrite(rojo15,LOW);
  break;
  case 15: //pierdes el juego
    digitalWrite(rojo15,HIGH);
    digitalWrite(amarillo14,LOW);
  break;
  
  default:
    digitalWrite(rojo15,HIGH);
    digitalWrite(rojo1,HIGH);
  break;
}
}
laberinto con arduino

Juego con Arduino: "¡NO TOQUES EL CABLE!"

Aquí tienes el tutorial del mítico juego "No toques el cable"! Este proyecto ha sido realizado completamente con Arduino. El minijuego de no tocar el cable es muy sencillo de realizar y de programación muy básica. A continuación te explicamos paso a paso como realizarlo.

Explicación, Objetivo y Funcionamiento del juego

El funcionamiento de este famoso mini juego es muy sencillo. El objetivo es pasar un alambre del principio al final sin llegar a tocar nunca el alambre. Si lo tocas, en la versión convencional te da una pequeña descarga electica, pero en este caso lo que pasa es que se enciende una luz y un buzzer emite un sonido.

Además, se incluye en display led el cual se encarga de contar cuantas veces has tocado el cable.

Materiales empleados en la realización del proyecto

Los materiales para realizar este proyecto son muy sencillos y no debería de ser ningún problema conseguirlos, aun así, para que te sea mas fácil, aquí tienes una lista con todos los componentes.

A continuación tienes una lista con los enlaces de compra.

Kit iniciación ArduinoKit iniciación ArduinoESUS
Placa Arduino UnoPlaca Arduino UnoESUS
BuzzerBuzzerESUS
ProtoboardProtoboardESUS
Cables Macho HembraCables Macho HembraESUS

Si tienes alguna duda sobre los materiales que se utilizan en este proyecto, no dudes en dejar un comentario, te responderemos lo antes posible.

Video explicación del proyecto

Si lo que buscas es ver de una forma mucho más detallada de como realizar este proyecto desde el inicio hasta el final y una explicación del código, a continuación se muestra el video con dicho contenido, mucho mas visual y fácil de comprender. Y recuerda, si te gusta esta clase de contenido, no olvides suscribirte 😉

Esquema de conexiones Arduino para montar el proyecto

Para que te sea más fácil montar este proyecto, aquí tienes el esquema de conexiones. Todas las conexiones de este esquema corresponden con el código de programación que hay justo abajo, así que asegúrate de que todas están tal y como se muestra en esta imagen. 

esquema minijuego no toques el cable bb

En la parte inferior de esta imagen, se muestran dos cables rojos. El más largo corresponde con el alambre que se debe de tratar de llevar de un punto al otro, mientras que el cable mas corto con una anilla en el final, corresponde con el cable que sujetamos con la mano.

Código de Arduino para la programación del proyecto

A continuación se muestra el código de programación desarrollado específicamente para este proyecto. Los pines que puedes encontrar en el código son los mismos que encontrarás en el esquema de conexiones previamente mostrado.

Si quieres una explicación más detallada de las diferentes partes del código empleado para programar esta grúa y de su funcionamiento, te recomiendo que te veas el video que te hemos dejado más arriba.

Si tienes dudas sobre cómo usar o instalar el entorno de programación empleado para Arduino, te dejamos un link de comó descargar el IDE de Arduino

Si tienes cualquier duda, deja un comentario en esta pagina y te responderemos lo antes posible.

//Creador: RobotUNO
//Minijuego: No toques el cable 

#define a 2
#define b 3
#define c 4
#define d 5
#define e 6
#define f 7
#define g 8
int tocar;
int fallos;
int pause;

void setup() {
  pinMode(12,INPUT);
  pinMode(13,OUTPUT);
  fallos=0;
  pause=0;
}

void loop() {
  tocar = digitalRead(12);
  if(tocar == HIGH && pause==0){
    digitalWrite(13,HIGH);
    fallos++;
    pause=1;
  }
  else{
    digitalWrite(13,LOW);
  }
  //Contador de fallos
  switch(fallos){
    case 0:
    digitalWrite(a, HIGH);
    digitalWrite(b, HIGH);
    digitalWrite(c, HIGH);
    digitalWrite(d, HIGH);
    digitalWrite(e, HIGH);
    digitalWrite(f, HIGH);
    digitalWrite(g, LOW);
    break;
    case 1:
    digitalWrite(a, LOW);
    digitalWrite(b, HIGH);
    digitalWrite(c, HIGH);
    digitalWrite(d, LOW);
    digitalWrite(e, LOW);
    digitalWrite(f, LOW);
    digitalWrite(g, LOW);
    break;
    case 2:
    digitalWrite(a, HIGH);
    digitalWrite(b, HIGH);
    digitalWrite(c, LOW);
    digitalWrite(d, HIGH);
    digitalWrite(e, HIGH);
    digitalWrite(f, LOW);
    digitalWrite(g, HIGH);
    break;    
    case 3:
    digitalWrite(a, HIGH);
    digitalWrite(b, HIGH);
    digitalWrite(c, HIGH);
    digitalWrite(d, HIGH);
    digitalWrite(e, LOW);
    digitalWrite(f, LOW);
    digitalWrite(g, HIGH);
    break;    
    case 4:
    digitalWrite(a, LOW);
    digitalWrite(b, HIGH);
    digitalWrite(c, HIGH);
    digitalWrite(d, LOW);
    digitalWrite(e, LOW);
    digitalWrite(f, HIGH);
    digitalWrite(g, HIGH);
    break;    
    case 5:
    digitalWrite(a, HIGH);
    digitalWrite(b, LOW);
    digitalWrite(c, HIGH);
    digitalWrite(d, HIGH);
    digitalWrite(e, LOW);
    digitalWrite(f, HIGH);
    digitalWrite(g, HIGH);
    break;    
    case 6:
    digitalWrite(a, HIGH);
    digitalWrite(b, LOW);
    digitalWrite(c, HIGH);
    digitalWrite(d, HIGH);
    digitalWrite(e, HIGH);
    digitalWrite(f, HIGH);
    digitalWrite(g, HIGH);
    break;    
    case 7:
    digitalWrite(a, HIGH);
    digitalWrite(b, HIGH);
    digitalWrite(c, HIGH);
    digitalWrite(d, LOW);
    digitalWrite(e, LOW);
    digitalWrite(f, LOW);
    digitalWrite(g, LOW);
    break;    
    case 8:
    digitalWrite(a, HIGH);
    digitalWrite(b, HIGH);
    digitalWrite(c, HIGH);
    digitalWrite(d, HIGH);
    digitalWrite(e, HIGH);
    digitalWrite(f, HIGH);
    digitalWrite(g, HIGH);
    break;    
    case 9:
    digitalWrite(a, HIGH);
    digitalWrite(b, HIGH);
    digitalWrite(c, HIGH);
    digitalWrite(d, HIGH);
    digitalWrite(e, LOW);
    digitalWrite(f, HIGH);
    digitalWrite(g, HIGH);
    break;   
    default: 
    digitalWrite(a, HIGH);
    digitalWrite(b, LOW);
    digitalWrite(c, LOW);
    digitalWrite(d, HIGH);
    digitalWrite(e, LOW);
    digitalWrite(f, LOW);
    digitalWrite(g, HIGH);
  }
  if(pause==1){
    delay(100);
    pause=0;
    digitalWrite(13,LOW);
    delay(400);
  }
}
matriz LED automática

Proyecto "Matriz LED automática con Arduino"

Bienvenidos a un nuevo proyecto con Arduino, en este proyecto veremos como podemos crear una matriz LED automática con Arduino, la cual programaremos para que realice distintas animaciones, además, hablaremos de los diferentes materiales empleados en su construcción, se mostrará un esquema de conexiones y finalmente podréis encontrar el código para poder programar la matriz de LED de forma automática.

Materiales empleados para la realización del proyecto

A continuación veremos los diferentes materiales que se van a utilizar para realizar nuestra matriz LED automática con Arduino y una breve descripción de los mismos. Además, para todos aquellos que estén interesados en realizar el proyecto, pueden pinchar en las imágenes y os llevará a una web donde poder adquirir dichos materiales.

Placa de Arduino UNO: Es el cerebro de nuestro proyecto, encargada de controlar todos los procesos del mismo mediante el código que encontrarás más adelante.

Matriz LED: Como su propio nombre indica, se trata de una matriz la cual podremos iluminar como nosotros queramos mediante el uso de un pequeño controlador que lleva incorporada.

Protoboard: Tabla con orificios (pines) la cual está conectada internamente y usaremos para realizar nuestras conexiones para el proyecto.

Cables con pines: Estos cables tienen unos pines (macho o hembra) los cuales nos permitirán hacer las conexiones entre los diferentes elementos ya mencionados.

Componentes necesarios para el proyecto

Kit iniciación ArduinoKit iniciación ArduinoESUS
Placa Arduino UnoPlaca Arduino UnoESUS
Cables Macho HembraCables Macho HembraESUS
ProtoboardProtoboardESUS
Matriz LED 8x8Matriz LED 8x8ESUS

Video explicación paso a paso del proyecto

Si lo que buscas es ver de una forma mucho más detallada de como realizar este proyecto desde el inicio hasta el final y una explicación del código, a continuación se muestra el video con dicho contenido, mucho mas visual y fácil de comprender. Y recuerda, si te gusta esta clase de contenido, no olvides suscribirte 😉

Esquema de conexiones Arduino para la construcción de la matriz LED automática

Una de las partes más importantes a la hora de realizar nuestro montaje de la matriz LED pasa por conectar correctamente los diferentes elementos. Con el fin de evitar errores de montaje o conexiones erróneas, a continuación te dejamos el esquema de conexiones empleado para este proyecto, con este esquema de conexiones es posible usar el código que puedes encontrar al final del post sin necesidad de hacer ninguna modificación.

matriz DEL automática

Código de Arduino para la programación de la matriz LED automática

A continuación se muestra el código de programación desarrollado específicamente para este proyecto. Los pines que puedes encontrar en el código son los mismos que encontrarás en el esquema de conexiones previamente mostrado.

Si quieres una explicación más detallada de las diferentes partes del código empleado para programar la matriz LED y de su funcionamiento, te recomiendo que te veas el video que te hemos dejado más arriba.

Si tienes dudas sobre cómo usar o instalar el entorno de programación empleado para Arduino, te dejamos un link de comó descargar el IDE de Arduino

//Canal de YouTube -> Robot UNO
//Matriz LED automática con Arduino

#include "LedControl.h"

LedControl lc=LedControl(12,10,11,1);

void setup() {
  lc.shutdown(0,false);
  /* Set the brightness to a medium values */
  lc.setIntensity(0,8);
  /* and clear the display */
  lc.clearDisplay(0);
}

void loop() { 
  int filas, col;
  for(filas=0;filas<8;filas++) {
    for(col=0;col<8;col++) {
      lc.setLed(0,filas,col,true);
      delay(100);
      }
   } 
   for(col=0;col<8;col++){
    for(filas=0;filas<8;filas++){
      lc.setLed(0,filas,col,false);
      delay(100);
    }
  }
  for(filas=0;filas<8;filas++) {
    for(col=0;col<8;col=col+2) {
      lc.setLed(0,filas,col,true);
      delay(100);
      }
   }
   for(col=0;col<8;col++){
    for(filas=0;filas<8;filas=filas+2){
      lc.setLed(0,filas,col,false);
      delay(100);
    }
  }
}
ruleta aleatoria arduino

Proyecto "Ruleta de números aleatorios"

Bienvenidos a un nuevo proyecto con Arduino, en este proyecto veremos como podemos crear una ruleta con Arduino, la cual girará señalando números aleatorios, además, hablaremos de los diferentes materiales empleados en su construcción, se mostrará un esquema de conexiones y finalmente podréis encontrar el código para poder controlar la ruleta para que escoja números aleatorios.

Materiales empleados para realizar el proyecto

A continuación veremos los diferentes materiales que se van a utilizar para que realicéis la ruleta y como hacer que gire con Arduino y una breve descripción de los misms. Además, para todos aquellos que estén interesados en realizar el proyecto, pueden pinchar en las imágenes y os llevará a una web donde poder adquirir dichos materiales.

Placa de Arduino UNO: Es el cerebro de nuestro proyecto, encargada de controlar todos los procesos del mismo mediante el código que encontrarás más adelante.

Motor paso a paso: Mediante impulsos eléctricos, es posible controlar el giro del motor, el cual se efectúa de una forma discreta.

Protoboard: Tabla con orificios (pines) la cual está conectada internamente y usaremos para realizar nuestras conexiones para el proyecto.

Palos de helado: Usaremos estos palos para la aguja de la ruleta.

Cables con pines: Estos cables tienen unos pines (macho o hembra) los cuales nos permitirán hacer las conexiones entre los diferentes elementos ya mencionados.

Componentes necesarios para este proyecto

Kit iniciación ArduinoKit iniciación ArduinoESUS
Placa Arduino UnoPlaca Arduino UnoESUS
Motor paso a pasoMotor paso a pasoESUS
Cables Macho HembraCables Macho HembraESUS
ProtoboardProtoboardESUS
Palitos de heladoPalitos de heladoESUS

Video explicación del proyecto

Si lo que buscas es ver de una forma mucho más detallada de como realizar este proyecto desde el inicio hasta el final y una explicación del código, a continuación se muestra el video con dicho contenido, mucho mas visual y fácil de comprender. Y recuerda, si te gusta esta clase de contenido, no olvides suscribirte 😉

Esquema de conexiones Arduino para la construcción de la ruleta

Una de las partes más importantes a la hora de realizar nuestro montaje de la ruleta de números aleatorios pasa por conectar correctamente los diferentes elementos. Con el fin de evitar errores de montaje o conexiones erróneas, a continuación te dejamos el esquema de conexiones empleado para este proyecto, con este esquema de conexiones es posible usar el código que puedes encontrar al final del post sin necesidad de hacer ninguna modificación.

esquema de conexiones ruleta aleatoria

Código de Arduino para la programación de la ruleta de números aleatorios

A continuación se muestra el código de programación desarrollado específicamente para este proyecto. Los pines que puedes encontrar en el código son los mismos que encontrarás en el esquema de conexiones previamente mostrado.

Si quieres una explicación más detallada de las diferentes partes del código empleado para programar esta ruleta y de su funcionamiento, te recomiendo que te veas el video que te hemos dejado más arriba.

Si tienes dudas sobre cómo usar o instalar el entorno de programación empleado para Arduino, te dejamos un link de comó descargar el IDE de Arduino

//Canal de YouTube -> Robot UNO
//Ruleta de números aleatorios

#include <Stepper.h>

Stepper motor1(2048, 8, 10, 9, 11);

void setup() {
  motor1.setSpeed(15);
}

void loop() {
  int x;
  x=random(2048,2048*2);
  motor1.step(x);
  delay(5000);
}