quinta-feira, 25 de abril de 2013

1º Projeto - Bomba para Airsoft

Airsoft e um jogo onde os participantes usam armas de brinquedo semelhante ao paintball e fazem uma simulação de combate. Esta "bomba" e na verdade um dispertador ^^
Este primeiro projeto e bem simples, vamos utilizar um display lcd como menu, push buttons para selecionar as opções, led e um buzzer (para alertar que a contagem acabou e a bomba foi detonada).

Materiais:


  • Arduino Uno
  • Display LCD 16x2
  • 4 push buttons
  • Buzzer 5v
  • Led alto brilho vermelho
  • Potenciometro de 10k ohm para ajustar o brilho do display (cursorlight)
  • 7 resistores limitadores de corrente
  • Fonte de alimentação externa
  



Código:

#include <LiquidCrystal.h>  



LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // entradas do lcd

 int buttonPushCounter = 0;    // declara a variável contadora
 int cutwire = 0;                      // push button que desativa a bomba
 int cutwire1 = 0;                    // push button que detona a bomba
 int buttonState7 = 0;           // push button que seleciona o tempo
 int buttonState8 = 0;        // push button que ativa a bomba
 int lastButtonState = 0;     // variavel para o ultimo estado do botão
 int redled = 9;                    // led 
 int buzzer = 13;                  // buzzer
 void setup(){
  
   pinMode(7, INPUT);        //entrada
   
   pinMode(8, INPUT);           
   
   pinMode(6, INPUT);         
   
   pinMode(10, INPUT);         
   
   pinMode(redled, OUTPUT);      //saida
   
   pinMode(buzzer,OUTPUT);
   
   lcd.begin(16,2);      // inicia o display com 16 colunas e 2 linhas
   
   lcd.setCursor(0,0);   // define a posição do cursor
   
   lcd.print("Tempo:");  
   
 }
 void loop(){
   
   buttonState7 = digitalRead(7); // verifica o estado dos push buttons
   buttonState8 = digitalRead(8);
   cutwire = digitalRead(6);
   cutwire1 = digitalRead(10);
   
   if (buttonState7 != lastButtonState) {   //verifica se o estado do botão foi //alterado
     
     if (buttonState7 == HIGH) 
      
     {
      buttonPushCounter+=300;  // incrementar um valor de 300
      delay(300);
      lcd.setCursor(7,1);                
      lcd.print(buttonPushCounter); // printa o contador
        
      delay(100);
     }
   }
      buttonState8 = digitalRead(8);  // verifica se o botão foi pressionado 
      
      if(buttonState8 == HIGH){        //se sim inicia um laço 
        while(buttonPushCounter != 0){
        buttonPushCounter = buttonPushCounter - 1; // enquanto o contador for //menor que 0 subtrai 1
        
        digitalWrite(redled, HIGH);  // led aceso 
        delay(500); //durante 500millisegundos
        digitalWrite(redled, LOW); // led apagado
        delay(500);  //durante 500 millisegundos formando o laço de 1 em 1 //segundo
        
        lcd.setCursor(0,0);
        lcd.print("Detonacao em:");
        lcd.setCursor(7,1);
        lcd.print(buttonPushCounter);
        if (buttonPushCounter < 10)     // se a contagem for menor que 10
              { 
                 
             lcd.setCursor(8,1);
          
              lcd.print("  ");  // apaga o digito "sobrando"
         }  
         if (buttonPushCounter < 100)
         
         {
             lcd.setCursor(9,1);
          
              lcd.print("  ");
         }  
         if (buttonPushCounter < 1000)
         
         {
             lcd.setCursor(10,1);
          
              lcd.print("  ");
         } 
        if (buttonPushCounter < 10000)        
         {
             lcd.setCursor(11,1);
          
              lcd.print("  ");

       }
                      
           cutwire = digitalRead(6);
       
       if (cutwire == HIGH && buttonPushCounter > 0) {  //verifica se o botão //desativador foi precionado e se a contagem e maior que 0
         lcd.setCursor(0,0);
           lcd.print("  ");
           lcd.setCursor(1,0);
           lcd.print("  ");
           lcd.setCursor(0,1);
           lcd.print("  ");
           lcd.setCursor(3,0);          
         lcd.print("Desativado ");   
          break;
       }
         cutwire1 = digitalRead(10);
         
         if(cutwire1 == HIGH || buttonPushCounter <= 0){      //verifica se o botão //detonador foi precionado ou se a contagem chegou a zero
           
           lcd.setCursor(0,0);
           lcd.print("  ");
           lcd.setCursor(1,0);
           lcd.print("  ");
           lcd.setCursor(0,1);
           lcd.print("  ");
           
           lcd.setCursor(2,0);          
         lcd.print("Terroristas ");       
         lcd.setCursor(3,1);
         lcd.print("Venceram");
         for(int buzzer = 0;buzzer < 20 ; buzzer++){  
           lcd.noDisplay();  // display desligado
         delay(250);
         lcd.display(); // display ligado
         delay(250);
           tone(13,1500); 
         delay(500);
       noTone(13);
       delay(500);
         }     
         break;             
       }             
       }    
    }              
 }
E isso ai galera o codigo e bem simples, vou deixar o link dele no http://pastebin.com/FiR6Lug1 e finalizo com um video:

Quero agradecer meu amigo meganha por ter me dado a dica de criar o blog!!

9 comentários:

  1. Pode sim amigo, porem vai precisar de um shild ethernet e uma pagina própria para acionamento e deflagração, dai vc pode acessar ela de qlq dispositivo que tenha acesso a internet, computadores, notes, smartphones e etc. Lembre-se que se trata de um simulador para jogos de airsoft, um meio praticado apenas para diversão de seus jogadores.

    ResponderExcluir
  2. E a propósito, no video mostra a bomba com apenas dois botões, no seu esquema tem 4, pq?

    ResponderExcluir
  3. Olá, seria muito complicado incluir no projeto a deflagração da bomba pelo corte de um fio? Exemplo: seriam 04 fios, a cada acionamento da bomba um desses fios (randomicamente) seria o responsável por fazer parar o relógio (contagem) e a detonação. Acaso se cortasse o fio errado, a bomba seria detonada. Vi uma assim nesse vídeo: https://www.youtube.com/watch?v=5qG2MddBU2s

    ResponderExcluir
  4. BOM DIA AMIGO QUANTO VC COBRA PARA FAZER UM DESCE MAIS NA PLACA
    GRATO OBRIGADO

    ResponderExcluir
    Respostas
    1. Fazendo a plca de circuito impresso sairia em torno de R$300 reais!!

      Excluir
  5. boa noite acabo de construir no simulador, fica u buzzer tocando e uma imagem escrito terroristas vencerao
    como fazer para configurar o timer ?

    ResponderExcluir
  6. acabei de resolver a duvida
    gostaria de saber qual a sequencia de armar a bomba, notei que acionou pela chave depois acionou uma segunda chave que não estou descobrindo o que seria

    ResponderExcluir