Advertisement
Guest User

Arduino Bomb 0.1

a guest
Feb 25th, 2012
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.61 KB | None | 0 0
  1. #include <LiquidCrystal.h>;
  2. //Buttons
  3. int BT_UP = 50;
  4. int BT_DOWN = 44;
  5. int BT_RIGHT = 42;
  6. int BT_LEFT = 48;
  7. int BT_RED = 52;    
  8. int BT_DEFUSER = 40;   // not implemented
  9.  
  10. //leds
  11. const int ledVerde = 9;
  12. const int ledRojo = 8 ;
  13. const int ledDefuser = 2;
  14. //
  15.  
  16. //LSD
  17. LiquidCrystal lcd(53, 51, 49, 47, 45, 43);
  18.  
  19. //TIME INTS
  20. int MINUTOSJUEGO = 15;
  21. int MINUTOSBOMBA = 7;
  22. int SEGUNDOSACTIVAR = 15;
  23.  
  24. // SOUND TONES
  25. int tonoPitido = 3000;
  26. int tonoAlarma1 = 700;
  27. int tonoAlarma2 = 2600;
  28. int tonoActivada = 1330;
  29.  
  30. void setup(){
  31.  
  32.   lcd.begin(16, 2);
  33.   lcd.print("Iniciando");
  34.   pinMode(BT_UP, INPUT);  
  35.   pinMode(BT_DOWN, INPUT);    
  36.   pinMode(BT_RIGHT, INPUT);
  37.   pinMode(BT_LEFT, INPUT);  
  38.   pinMode(BT_RED, INPUT);  
  39.   pinMode(BT_DEFUSER, INPUT);  
  40.  
  41.   // CONFIGURE THE BARS OF PROGRESS BAR
  42.   byte bar1[8] = {
  43.     B10000,
  44.     B10000,
  45.     B10000,
  46.     B10000,
  47.     B10000,
  48.     B10000,
  49.     B10000,
  50.   };
  51.   byte bar2[8] = {
  52.     B11000,
  53.     B11000,
  54.     B11000,
  55.     B11000,
  56.     B11000,
  57.     B11000,
  58.     B11000,
  59.   };
  60.   byte bar3[8] = {
  61.     B11100,
  62.     B11100,
  63.     B11100,
  64.     B11100,
  65.     B11100,
  66.     B11100,
  67.     B11100,
  68.   };
  69.   byte bar4[8] = {
  70.     B11110,
  71.     B11110,
  72.     B11110,
  73.     B11110,
  74.     B11110,
  75.     B11110,
  76.     B11110,
  77.   };
  78.   byte bar5[8] = {
  79.     B11111,
  80.     B11111,
  81.     B11111,
  82.     B11111,
  83.     B11111,
  84.     B11111,
  85.     B11111,
  86.   };
  87.   lcd.createChar(0,bar1);
  88.   lcd.createChar(1,bar2);
  89.   lcd.createChar(2,bar3);
  90.   lcd.createChar(3,bar4);
  91.   lcd.createChar(4,bar5);
  92.  
  93. }
  94.  
  95. // initialize the library with the numbers of the interface pins
  96. void loop(){
  97.   menuPrincipal();
  98.   }
  99.  
  100. void menuPrincipal(){   //MAIN MENU
  101.  
  102.   //Draw menu
  103.   lcd.clear();
  104.   lcd.setCursor(0, 0);
  105.   int i=0;
  106.   char* menu1[]={
  107.     "Juego Custom","Juego Rapido", "Configuracion"  }; // HERE YOU CAN ADD MORE ITEMS ON THE MAIN MENU
  108.   lcd.print(menu1[i]);
  109.  
  110.   while(1){  
  111.  
  112.     if(digitalRead(BT_UP)== HIGH && i>0){
  113.       tone(11,2400,30);
  114.       i--;
  115.       lcd.clear();  
  116.       lcd.print(menu1[i]);
  117.       delay(500);
  118.  
  119.     }
  120.     if(digitalRead(BT_DOWN)== HIGH && i<2){
  121.       tone(11,2400,30);
  122.       i++;
  123.       lcd.clear();  
  124.       lcd.print(menu1[i]);
  125.       delay(500);
  126.     }
  127.  
  128.     if(digitalRead(BT_RED)== HIGH){
  129.       tone(11,2400,30);
  130.       lcd.clear();
  131.       switch (i){
  132.  
  133.       case 0:
  134.         configJuegoRapido();
  135.         break;
  136.  
  137.       case 1:
  138.         configJuegoRapido();
  139.         break;
  140.  
  141.       case 2:
  142.         config();
  143.         break;        
  144.  
  145.       }
  146.     }
  147.   }
  148. }
  149.  
  150. void juegoCustom(){
  151.  
  152.   juego();
  153. }
  154.  
  155. void config(){
  156.  
  157.   // need to implement a read and write config function... to terminate this option
  158.  
  159.   while(1){
  160.     lcd.setCursor(0,0);
  161.     lcd.print("config menu");
  162.     delay(50);
  163.   }
  164. }
  165.  
  166. void game(){
  167.   delay(500);
  168.   while(digitalRead(BT_RED)== LOW){
  169.     lcd.clear();
  170.     lcd.setCursor(0,0);
  171.     lcd.print("JUEGO LISTO");
  172.     lcd.setCursor(0,1);
  173.     lcd.print("PARA INICIAR");
  174.     delay(500);
  175.     lcd.clear();
  176.     lcd.setCursor(0,1);
  177.     lcd.print("BOTON ROJO");
  178.     lcd.setCursor(0,1);
  179.     lcd.print("PARA COMENZAR");
  180.     delay(500);
  181.   }
  182.  
  183.   lcd.clear();
  184.   lcd.setCursor(0,0);
  185.   lcd.print("INICIANDO JUEGO");
  186.   lcd.setCursor(0,1);
  187.   tone(11,2000,100);
  188.   lcd.print(" EN 5 ");
  189.   delay(1000);
  190.   lcd.clear();
  191.   lcd.setCursor(0,0);
  192.   lcd.print("INICIANDO JUEGO");
  193.   lcd.setCursor(0,1);
  194.   tone(11,2000,100);
  195.   lcd.print(" EN 4 ");
  196.   delay(1000);
  197.   lcd.clear();
  198.   lcd.setCursor(0,0);
  199.   lcd.print("INICIANDO JUEGO");
  200.   lcd.setCursor(0,1);
  201.   tone(11,2000,100);
  202.   lcd.print(" EN 3 ");
  203.   delay(1000);
  204.   lcd.clear();
  205.   lcd.setCursor(0,0);
  206.   lcd.print("INICIANDO JUEGO");
  207.   lcd.setCursor(0,1);
  208.   tone(11,2000,100);
  209.   lcd.print(" EN 2 ");
  210.   delay(1000);
  211.   lcd.clear();
  212.   lcd.setCursor(0,0);
  213.   lcd.print("INICIANDO JUEGO");
  214.   lcd.setCursor(3,1);
  215.   tone(11,2000,100);
  216.   lcd.print(MINUTOSJUEGO);
  217.   lcd.print(":00.000");
  218.   delay(1000);
  219.   lcd.clear();
  220.   lcd.setCursor(0,0);
  221.   lcd.print("TIEMPO DE MISION");
  222.   int minutos=MINUTOSJUEGO-1;
  223.   unsigned long iTiempo=millis();
  224.   unsigned long aTiempo;
  225.   while(1){  // this is the important code, is a little messy but works good.
  226.  
  227.     if(((millis()- iTiempo)%1000)>= 0 && (millis()- iTiempo)%1000 <= 20)
  228.     {
  229.       analogWrite(ledVerde, 255);
  230.     }
  231.     if(((millis()- iTiempo)%1000)>= 50 && (millis()- iTiempo)%1000 <= 100)
  232.  
  233.     {    
  234.       analogWrite(ledVerde,0);
  235.     }
  236.  
  237.     lcd.setCursor(0,0);
  238.     lcd.print("TIEMPO DE MISION");
  239.     aTiempo=millis()- iTiempo;
  240.     lcd.setCursor(3,1);
  241.     if(minutos-aTiempo/60000==0 && 59-((aTiempo/1000)%60)==0)
  242.     {
  243.       lcd.clear();
  244.       while(1){
  245.  
  246.         lcd.setCursor(0,0);
  247.         lcd.print("JUEGO TERMINADO!");
  248.         lcd.setCursor(0,1);
  249.         lcd.print("GANAN A-TERROR");  
  250.        
  251.         for(int i = 1000; i>200; i--){
  252.  
  253.           tone(11,i);
  254.           delay(5);
  255.  
  256.         }
  257.  
  258.         noTone(11);
  259.         delay(5000);
  260.         lcd.clear();
  261.         menuPrincipal();
  262.       }
  263.     }
  264.  
  265.     if((minutos-aTiempo/60000)<10){
  266.       lcd.print("0");
  267.       lcd.print(minutos-aTiempo/60000);
  268.     }
  269.     else
  270.     {
  271.       lcd.print(minutos-aTiempo/60000);
  272.     }
  273.     lcd.print(":");
  274.     if((59-((aTiempo/1000)%60))<10){
  275.  
  276.       lcd.print("0");
  277.       lcd.print(59-((aTiempo/1000)%60));
  278.     }
  279.     else {
  280.       lcd.print(59-((aTiempo/1000)%60));
  281.     }
  282.     lcd.print(".");
  283.     lcd.print(millis()%1000);
  284.  
  285.     if(digitalRead(BT_RED)== HIGH)
  286.     {
  287.       lcd.clear();
  288.       lcd.setCursor(0,0);
  289.       lcd.print("ACTIVANDO BOMBA");
  290.       lcd.setCursor(0,1);
  291.       unsigned int porcentaje=0;
  292.       unsigned long xTiempo=millis();
  293.       while(digitalRead(BT_RED)== HIGH)
  294.       {
  295.         if(((millis()- xTiempo)%1000)>= 0 && (millis()- xTiempo)%1000 <= 20)
  296.         {
  297.           analogWrite(ledRojo, 255);
  298.           tone(11,tonoAlarma1,200);
  299.         }
  300.         if(((millis()- xTiempo)%1000)>= 480 && (millis()- xTiempo)%1000 <= 500)
  301.         {
  302.           tone(11,tonoAlarma2,200);
  303.           analogWrite(ledRojo,0);
  304.         }
  305.        
  306.         unsigned long segundos=(millis()- xTiempo);
  307.         porcentaje=(segundos*100)/(SEGUNDOSACTIVAR*1000);
  308.         drawPorcent(porcentaje);
  309.         if(porcentaje >= 100)
  310.         {
  311.           juegoBomba();
  312.         }
  313.       }
  314.       lcd.clear();
  315.       analogWrite(ledRojo, 0);
  316.     }
  317.   }
  318. }
  319. void juegoBomba(){
  320.   lcd.clear();
  321.   lcd.setCursor(0,0);
  322.   lcd.print(" DETONACION EN");
  323.   delay(1000);
  324.   int minutos=MINUTOSBOMBA-1;
  325.   unsigned long iTiempo=millis();
  326.   unsigned long aTiempo;
  327.   int largoTono = 50;
  328.   while(1){
  329.  
  330.     if(((millis()- iTiempo)%1000)>= 0 && (millis()- iTiempo)%1000 <= 20)
  331.     {
  332.       analogWrite(ledRojo, 255);
  333.       tone(11,tonoActivada,largoTono);
  334.     }
  335.     if(((millis()- iTiempo)%1000)>= 190 && (millis()- iTiempo)%1000 <= 200){analogWrite(ledRojo,0);}
  336.     if(((millis()- iTiempo)%1000)>= 245 && (millis()- iTiempo)%1000 <= 255 && minutos-aTiempo/60000<2)tone(11,tonoActivada,largoTono);
  337.     if(((millis()- iTiempo)%1000)>= 495 && (millis()- iTiempo)%1000 <= 510 && minutos-aTiempo/60000<4)tone(11,tonoActivada,largoTono);
  338.     if(((millis()- iTiempo)%1000)>= 745 && (millis()- iTiempo)%1000 <= 760 && minutos-aTiempo/60000<2)tone(11,tonoActivada,largoTono);
  339.    
  340.     if( minutos-aTiempo/60000==0 && 59-((aTiempo/1000)%60) < 10)largoTono = 200;
  341.     lcd.setCursor(0,0);
  342.     lcd.print(" DETONACION EN ");
  343.     aTiempo=millis()- iTiempo;
  344.     lcd.setCursor(3,1);
  345.     if(minutos-aTiempo/60000==0 && 59-((aTiempo/1000)%60)==0)
  346.     {
  347.       lcd.clear();
  348.  
  349.       while(1){
  350.  
  351.         lcd.setCursor(0,0);
  352.         lcd.print("LOS TERRORISTAS");
  353.         lcd.setCursor(0,1);
  354.         lcd.print("GANAN LA PARTIDA");
  355.  
  356.         for(int i = 200; i>0; i--)
  357.         {
  358.           tone(11,i);
  359.           delay(20);
  360.         }
  361.         noTone(11);
  362.         delay(5000);
  363.         lcd.clear();
  364.         menuPrincipal();
  365.       }
  366.     }
  367.  
  368.     if((minutos-aTiempo/60000)<10)
  369.     {
  370.       lcd.print("0");
  371.       lcd.print(minutos-aTiempo/60000);
  372.     }
  373.     else
  374.     {
  375.       lcd.print(minutos-aTiempo/60000);
  376.     }
  377.     lcd.print(":");
  378.     if((59-((aTiempo/1000)%60))<10)
  379.     {
  380.       lcd.print("0");
  381.       lcd.print(59-((aTiempo/1000)%60));
  382.     }
  383.     else
  384.     {
  385.       lcd.print(59-((aTiempo/1000)%60));
  386.     }
  387.     lcd.print(".");
  388.     lcd.print(millis()%1000);
  389.  
  390.     if(digitalRead(BT_RED)== HIGH)
  391.     {
  392.       lcd.clear();
  393.       analogWrite(ledRojo, 0);
  394.       lcd.setCursor(0,0);
  395.       lcd.print("Desactivando...");
  396.       lcd.setCursor(0,1);
  397.       unsigned int porcentaje=0;
  398.       unsigned long xTiempo=millis();
  399.       while(digitalRead(BT_RED)== HIGH)
  400.       {
  401.         if(((millis()- xTiempo)%1000)>= 0 && (millis()- xTiempo)%1000 <= 20)
  402.         {
  403.           analogWrite(ledVerde, 255);
  404.           tone(11,tonoAlarma1,200);
  405.         }
  406.         if(((millis()- xTiempo)%1000)>= 480 && (millis()- xTiempo)%1000 <= 500)
  407.         {
  408.           tone(11,tonoAlarma2,200);
  409.           analogWrite(ledVerde,0);
  410.         }
  411.         unsigned long segundos=(millis()- xTiempo);
  412.         porcentaje=(segundos*100)/(SEGUNDOSACTIVAR*1000);
  413.         drawPorcent(porcentaje);  
  414.         if(porcentaje >= 100)
  415.         {
  416.           lcd.clear();
  417.           while(1){
  418.             lcd.setCursor(0,0);
  419.             lcd.print("BOMBA DESACTIVADA");
  420.             lcd.setCursor(0,1);
  421.             lcd.print("AT GANA PARTIDA");
  422.             analogWrite(ledVerde, 255);
  423.             delay(10000);
  424.             menuPrincipal();
  425.           }
  426.         }
  427.       }
  428.  
  429.       lcd.clear();
  430.       analogWrite(ledRojo, 0);
  431.     }
  432.   }
  433. }
  434.  
  435. void drawPorcent(int porcent){
  436.   int i=1;
  437.   int aDibujar=(80*porcent)/100;
  438.   lcd.setCursor(0,1);
  439.  
  440.   while(aDibujar>=5){
  441.     if(aDibujar>=5)
  442.     {
  443.       lcd.write(4);
  444.       aDibujar-=5;
  445.     }
  446.     if(aDibujar<5)
  447.     {
  448.  
  449.       switch(aDibujar){
  450.       case 0:
  451.         break;
  452.       case 1:
  453.         lcd.write(0);
  454.         break;
  455.       case 2:
  456.         lcd.write(1);
  457.         break;
  458.       case 3:
  459.         lcd.write(2);
  460.         break;
  461.       case 4:
  462.         lcd.write(3);
  463.         break;
  464.       }
  465.     }
  466.   }
  467. }
  468.  
  469. void configJuegoRapido(){
  470.  
  471.   lcd.clear();
  472.   lcd.setCursor(0,0);
  473.   lcd.print("Tiempo Juego :");
  474.   lcd.setCursor(0,1);
  475.   delay(800);
  476.   while(digitalRead(BT_RED)== LOW){
  477.     lcd.setCursor(0,1);  
  478.     lcd.print(MINUTOSJUEGO);  
  479.     lcd.print(" minutos");
  480.  
  481.     if(digitalRead(BT_LEFT)== HIGH && MINUTOSJUEGO>1){
  482.       tone(11,2400,30);
  483.       MINUTOSJUEGO--;
  484.       delay(300);
  485.     }
  486.     if(digitalRead(BT_RIGHT)== HIGH && MINUTOSJUEGO<180){
  487.       tone(11,2400,30);
  488.       MINUTOSJUEGO++;
  489.       delay(300);
  490.     }
  491.   }
  492.   tone(11,2400,30);
  493.   lcd.clear();
  494.   lcd.setCursor(0,0);
  495.   lcd.print("Tiempo Bomba :");
  496.   lcd.setCursor(0,1);
  497.   delay(800);
  498.  
  499.   while(digitalRead(BT_RED)== LOW){
  500.     lcd.setCursor(0,1);  
  501.     lcd.print(MINUTOSBOMBA);  
  502.     lcd.print(" minutos");
  503.  
  504.     if(digitalRead(BT_LEFT)== HIGH && MINUTOSBOMBA>1){
  505.       tone(11,2400,30);
  506.       MINUTOSBOMBA--;
  507.       delay(300);
  508.     }
  509.     if(digitalRead(BT_RIGHT)== HIGH && MINUTOSBOMBA<20){
  510.       tone(11,2400,30);
  511.       MINUTOSBOMBA++;
  512.       delay(300);
  513.     }
  514.   }
  515.   tone(11,2400,30);
  516.   lcd.clear();
  517.   lcd.setCursor(0,0);
  518.   lcd.print("Tiempo Activar :");
  519.   lcd.setCursor(0,1);
  520.   delay(800);
  521.  
  522.   while(digitalRead(BT_RED)== LOW){
  523.     lcd.setCursor(0,1);  
  524.     lcd.print(SEGUNDOSACTIVAR);  
  525.     lcd.print(" segundos");
  526.  
  527.     if(digitalRead(BT_LEFT)== HIGH && SEGUNDOSACTIVAR>5){
  528.       tone(11,2400,30);
  529.       SEGUNDOSACTIVAR--;
  530.       delay(300);
  531.     }
  532.     if(digitalRead(BT_RIGHT)== HIGH && SEGUNDOSACTIVAR<30){
  533.       SEGUNDOSACTIVAR++;
  534.       tone(11,2400,30);
  535.       delay(300);
  536.     }
  537.   }
  538.   tone(11,2400,30);
  539.   lcd.clear();
  540.   game();  
  541. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement