Go Down

Topic: Piedra Papel Tijera (Read 1 time) previous topic - next topic

hombrelobo

Os dejo mi primer proyecto en arduino, comentado para torpes porque al principio he necesitado escribir todo para volver a coger el hilo. No seáis muy crueles,hacia casi 16 años que no escribía código en serio.

Para lcd de 128x64.
Code: [Select]


#include <glcd.h>
#include "fonts/Arial14.h"         // proportional font
#include "fonts/SystemFont5x7.h"   // system font
#include "bitmaps/jankenpon.h"     // bitmap
#include "bitmaps/piedra.h"     // bitmap
#include "bitmaps/papel.h"     // bitmap
#include "bitmaps/tijera.h"     // bitmap
#include "bitmaps/nada.h"     // bitmap
#include "bitmaps/win.h"     // bitmap
#include "bitmaps/lose.h"     // bitmap


int jugador;
int marcadorJugador = 0 ; //declaro marcadores
int marcadorMaquina = 0 ;//declaro marcadores
int maquina; //declaro decision de la maquina 0 1 o 2 que definire mas adelante
int zumbador = 12; //declaro zumbador a la salida 12

void setup ()
{
 GLCD.Init(NON_INVERTED);   // initialise the library
 GLCD.SelectFont(System5x7);       // select fixed width system font

 pinMode(zumbador, OUTPUT); //declaro el zumbador como salida
 GLCD.DrawBitmap(jankenpon, 0,0, BLACK); // pinta en pantalla el logo del jan ken pon
 delay(2000);
 GLCD.ClearScreen();
 digitalWrite (zumbador,LOW);// apago el zumbador
}

void loop(){
 GLCD.CursorTo(0,0);          
 GLCD.Puts("PLAYER=");        
 GLCD.PrintNumber(marcadorJugador);
 GLCD.CursorTo(11,0);            
 GLCD.Puts("ARDUINO=");      
 GLCD.PrintNumber(marcadorMaquina);

 if (marcadorJugador==3){
   GLCD.ClearScreen();
   GLCD.DrawBitmap(win, 0,0, BLACK); //ganaste!
   delay(1000);
   return;
   
 }
 else if (marcadorMaquina==3){
   GLCD.ClearScreen();
   GLCD.DrawBitmap(lose, 0,0, BLACK); // perdiste!
       delay(1000);
          return;
 }
 else{
   maquina=random(0, 3); //numero aleatorio del 0 al 2
   jugador=40;
   delay(1000);
   comienzoJuego();
   delay(1000);
   deteccionBoton();
   delay(1000);
   comprobarEstados();
   delay(1000);
 }
}

void comienzoJuego(){// comienza ciclo de 3 pitidos de la cancion y las palabras en la pantalla
 GLCD.CursorTo(0,7);              // positon cursor  
 GLCD.Puts("                     ");       //escribir en la pantalla "JAN"
 GLCD.DrawBitmap(nada, 10,10, BLACK);
 GLCD.DrawBitmap(nada, 70,10, BLACK);
 digitalWrite (zumbador,HIGH);
 GLCD.CursorTo(8,7);              // positon cursor  
 GLCD.Puts("JAN!");       //escribir en la pantalla "JAN"
 digitalWrite (zumbador,LOW);// apago el zumbador
 delay(1000);//espera segundos

 digitalWrite (zumbador,HIGH);
 GLCD.CursorTo(8,7);              // positon cursor  
 GLCD.Puts("KEN!");       //escribir en la pantalla "KEN"
 digitalWrite (zumbador,LOW);// apago el zumbador
 delay(1000);//espera segundos

 digitalWrite (zumbador,HIGH);
 GLCD.CursorTo(8,7);              // positon cursor  
 GLCD.Puts("PON!");       //escribir en la pantalla "PON"    
 digitalWrite (zumbador,LOW);// apago el zumbador
 delay(1000);//espera segundos

 GLCD.CursorTo(7,7);              // positon cursor  
 GLCD.Puts("LET´S GO!");       //escribir en la pantalla "A JUGAR!!"
 delay(1000);//espera segundos
}

void deteccionBoton(){  // comienza deteccion de entradas
 if (digitalRead(2)==HIGH)
 {
   jugador = 0;
   GLCD.DrawBitmap(piedra, 10,10, BLACK); // pinta en pantalla el logo del jan ken pon
 }
 else if (digitalRead(3)==HIGH)
 {
   jugador = 1;
   GLCD.DrawBitmap(papel, 10,10, BLACK); // pinta en pantalla el logo del jan ken pon
 }
 else if (digitalRead(4)==HIGH)
 {
   jugador = 2;
   GLCD.DrawBitmap(tijera, 10,10, BLACK); // pinta en pantalla el logo del jan ken pon
 }
}
void comprobarEstados (){
 GLCD.CursorTo(0,7);              // positon cursor  
 GLCD.Puts("                     ");       //escribir en la pantalla "JAN"
 if (jugador==40){
   GLCD.CursorTo(0,7);              // positon cursor  
   GLCD.Puts("PLEASE, PUSH A BUTTON");   //
 }
 else if (jugador==0 && maquina==0){ // si piedra es nulo y maquina
   GLCD.DrawBitmap(piedra, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
   delay (500);
   GLCD.CursorTo(8,7);              // positon cursor  
   GLCD.Puts("DRAW");   // imprime en pantalla "EMPATE!"
 }
 else if(jugador==0 && maquina==1){
   GLCD.DrawBitmap(papel, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
   delay (500);
   GLCD.CursorTo(7,7);              // positon cursor  
   GLCD.Puts("YOU LOSE");   // imprime en pantalla "PIERDES!"
   marcadorMaquina= marcadorMaquina + 1;//actualizo marcadores
 }
 else if(jugador==0 && maquina==2){
   GLCD.DrawBitmap(tijera, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
   delay (500);
   GLCD.CursorTo(7,7);              // positon cursor  
   GLCD.Puts("YOU WIN");   // imprime en pantalla "GANAS!"
   marcadorJugador= marcadorJugador + 1; //actualizo marcadores
 }
 else if(jugador==1 && maquina==0){
   GLCD.DrawBitmap(piedra, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
   delay (500);
   GLCD.CursorTo(7,7);              // positon cursor  
   GLCD.Puts("YOU WIN");   // imprime en pantalla "GANAS!"
   marcadorJugador= marcadorJugador + 1; //actualizo marcadores
 }
 else if(jugador==1 && maquina==1){
   GLCD.DrawBitmap(papel, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
   delay (500);
   GLCD.CursorTo(8,7);              // positon cursor  
   GLCD.Puts("DRAW");   // imprime en pantalla "EMPATE!"
 }
 else if(jugador==1 && maquina==2){
   GLCD.DrawBitmap(tijera, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
   delay (500);
   GLCD.CursorTo(7,7);              // positon cursor  
   GLCD.Puts("YOU LOSE");   // imprime en pantalla "PIERDES!"
   marcadorMaquina= marcadorMaquina + 1;//actualizo marcadores
 }
 else if(jugador==2 && maquina==0){
   GLCD.DrawBitmap(piedra, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
   delay (500);
   GLCD.CursorTo(7,7);              // positon cursor  
   GLCD.Puts("YOU LOSE");   // imprime en pantalla "PIERDES!"
   marcadorMaquina= marcadorMaquina + 1;//actualizo marcadores
 }
 else if(jugador==2 && maquina==1){
   GLCD.DrawBitmap(papel, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
   delay (500);
   GLCD.CursorTo(7,7);              // positon cursor  
   GLCD.Puts("YOU WIN");   // imprime en pantalla "GANAS!"
   marcadorJugador= marcadorJugador + 1; //actualizo marcadores
 }
 else if(jugador==2 && maquina==2){
   GLCD.DrawBitmap(tijera, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
   delay (500);
   GLCD.CursorTo(8,7);              // positon cursor  
   GLCD.Puts("DRAW");   // imprime en pantalla "EMPATE!"
 }
}


Os dejo los archivos ".h" por si queréis compilarlo.

Code: [Select]
http://rapidshare.com/files/438352101/jan_ken_pon_103.zip



Victormateu

Muy bueno el programita!!, yo estoy intentado copiarlo(espero que no te importe) es que soy nuevo en esto y no me aclaro mucho.
Podrías postear alguna foto, para ver las conexiones de la pantalla glcd al arduino??

he conseguido que se enchufe la luz de retroiluminación pero no me aclaro con los datasheet que he encontrado en google..

Tengo un arduino mega, y un glcd de 128x64, que creo que es similar al tuyo.

Muchas gracias de antemano
Un saludo!

chico_del_maiz

:)Muy buen programa, muy original.

hombrelobo

en seguida le tiro unas fotos al lcd y las subo.

Os dejo un video del juego:

http://www.youtube.com/watch?v=fuZdkHbeuac&feature=player_embedded

hombrelobo

En la pagina de la libreria te dice como conectarlo, porque al hacer la foto, realmente no se ve nada mas que una maraña de cables.
Ten en cuenta que los pines del lcd se cuentan al REVES, es decir, segun miras el lcd, el de mas a la derecha es el numero 1, repito, el numero 1. Es un error muy común contar los pines desde el otro lado. Seguramente por eso no te funcione. A mi me pasaba lo mismo.

Cualquier cosa dime y te ayudare con mucho gusto. Yo en concreto funciono con la librería GLCD3 Beta.

Salud!

Code: [Select]

How to setup the library for the 128x64 LCD module:

1. Please check the website first:

http://www.arduino.cc/playground/Code/GLCDks0108

2. Download the zip file :

http://www.arduino.cc/playground/uploads/Code/ks0108GLCD.zip

3. If you use arduino-0021, put the "ks0108" folder under arduino-0021\libraries\
somethings like "\arduino-0021\libraries\ks0108"

4. under the "ks0108" , there is a file named "ks0108_Panel.h" , you may need to change the following line:

From : #define EN_DELAY_VALUE 6 // this is the delay value that may need to be hand tuned for slow panels
  To  : #define EN_DELAY_VALUE 8 // this is the delay value that may need to be hand tuned for slow panels

5. Then open the file : \arduino-0021\libraries\ks0108\examples\GLCDexample\GLCDexample.pde  
   by arduino IDE, compile and upload the program to the arduino mega. You can test the arduino KIT now.

PS: There is a GLCD3 Beta library , so after you complete the above instruction and get the lcd working. It is a great fun
to intall the GLCD3 library and other library (Time library for example) . The following link is to the GLCD3 beta library thread.

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1279128237/0

Go Up