Guiding for coding buttons on several places.

Hi guys! I need some help with how to make my code. This is my first time for writing a “bigger” project on my own and it´s starting to become something.
I´m aiming to make a “Simulated Bomb” for AirSoft games. I´m going to use a Arduino Uno and a Adafruit RGB LCD Shield to keep it as simple as I can. So far I have written code for setting the time with Up and Down buttons and “arming the bomb” whit the Select button.
But now comes my problem. To make it fair on the enemies they should have a chance to disarm the bomb. I want to use the Up, Down, Left and Right buttons for this, but Up and Down are already in use for the function of setting the time. So how do I make to be able to use them again?
I also want to make it random witch button that disarm the bomb, this code I have written but I don´t know if its the best way the I have made.

I would like to get some guiding in how I can fix this or where I can read on how to make something like this.

Beware of ugly like hell coding :wink:

#include <Wire.h>                 
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>

Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();

#define RED 0x1               
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7

int timer = 30;                             

long randNumber;                             


void setup()

{
Serial.begin(9600);

lcd.begin(16, 2);

lcd.print("Status = Unarmed");
lcd.setBacklight(GREEN);
  lcd.setCursor(0, 1);
  lcd.print(timer);
  
randomSeed(analogRead(0));
randNumber = random(0, 5);
}

uint8_t i=0;
void loop()

{
  //while (Serial.available() == 0);
  
  //int val = Serial.read() - '0';

 // lcd.setCursor(0, 1);
 // lcd.print(millis()/100);
  
  //uint8_t buttons = lcd.readButtons();
  uint8_t buttons = lcd.readButtons();
  
  if (buttons) {
    lcd.clear();
    if (buttons & BUTTON_SELECT) 
    {
    Serial.println("1");
    lcd.setCursor(0, 0);
    lcd.print("Status = Armed");
    lcd.setBacklight(RED);
    for(;timer > 0; --timer)
    {
    delay(1000);
    lcd.setCursor(0, 1);
    lcd.print(timer);
      if (timer < 10)
        {
        lcd.setCursor(1, 1);
        lcd.print("   ");
        }
      if (timer < 100)
        {
         lcd.setCursor(2, 1);
         lcd.print("    "); 
        }
        //randNumber = random(0, 5);
       lcd.setCursor(15, 1);                             // as you can see i have made an bad attempt to make the disarm function but this did not work well...
       lcd.print(randNumber);
       if (randNumber = 0)
       {
         if (buttons & BUTTON_UP)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("     Peew!     ");
          lcd.setCursor(0, 1);
          lcd.print("  You made it!  "); 
         }
         if (buttons & BUTTON_DOWN & BUTTON_LEFT & BUTTON_RIGHT)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("You better run!!");
          lcd.setCursor(0, 1);
          lcd.print("Now 10s left ;)");
          delay(2000);
          timer = 10;
          lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("Status = Armed");
              lcd.setBacklight(RED);
              for(;timer > 0; --timer)
              {
                delay(1000);
                lcd.setCursor(0, 1);
                lcd.print(timer);
                if (timer < 10)
                {
                  lcd.setCursor(1, 1);
                  lcd.print("   ");
                }
              }
            }                                                           // here ends my failure. 
       
       
    }
    }
    if (buttons & BUTTON_UP)
    {
    timer = timer ++;
    delay(200);
    lcd.print("Status = Unarmed");
    lcd.setCursor(0, 1);
    lcd.print(timer);
    }
    if (buttons & BUTTON_DOWN)
    {
    timer = timer --;
    delay(200);
    lcd.print("Status = Unarmed");
    lcd.setCursor(0, 1);
    lcd.print(timer);    
    }
  }
 
if (timer < 1)
  {
   lcd.clear();
   lcd.setCursor(0, 0);
   lcd.print("    BOOOOM!!    ");
   lcd.setCursor(0, 1);
   lcd.print("You got smacked!");
   delay(10000);
  }
}
}

//Richard

but Up and Down are already in use for the function of setting the time. So how do I make to be able to use them again?

You have a Boolean called armed, when this is false you use the buttons for setting the time. When the time is set you change this variable to true. Then when the buttons are pressed and this variable is true you use those buttons for the alternate purpose.

Hmm I´m not really following now. Have looked up on Booleans but don´t really get where my boolean are and how to change it. Sorry for stupid questions but I´m still learning. Or I know I can change booleans with && || !. But don´t get where my boolean is.

What Mike meant was that you need to have a boolean, called armed, that you set or check. You do not currently have one, so you need to add it.

Ahaa. Well lets make one then and see what happens :slight_smile:

Okay I have gotten a bit forward now. I have added boolean armed to the code, put out some if (boolean = true/false); statements. I can sett the time again but it does not detect if I press any of the buttons in the “armed mode”.

This is how the code looks now, I have written some " ******** " where the boolean is added so it will be a bit more easy to find them. I have also made code for all of the possible disarm buttons to see if that would help med (it didn´t ;))

#include <Wire.h>
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>

Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();

#define RED 0x1
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7

int timer = 30;

long randNumber;

boolean armed = false;                    ************************************************************************************************************************

void setup()

{
Serial.begin(9600);

lcd.begin(16, 2);

lcd.print("Status = Unarmed");
lcd.setBacklight(GREEN);
  lcd.setCursor(0, 1);
  lcd.print(timer);
  
randomSeed(analogRead(0));
randNumber = random(0, 4);
}

uint8_t i=0;
void loop()

{
  uint8_t buttons = lcd.readButtons();

if (armed = true);                   *****************************************************************************************************************************
{
  if (buttons) {
    lcd.clear();
    if (buttons & BUTTON_SELECT) 
    {
    Serial.println("1");
    lcd.setCursor(0, 0);
    lcd.print("Status = Armed");
    lcd.setBacklight(RED);
    for(;timer > 0; --timer)
    {
    delay(1000);
    lcd.setCursor(0, 1);
    lcd.print(timer);
      if (timer < 10)
        {
        lcd.setCursor(1, 1);
        lcd.print("   ");
        }
      if (timer < 100)
        {
         lcd.setCursor(2, 1);
         lcd.print("    "); 
        }
       lcd.setCursor(15, 1);
       lcd.print(randNumber);
       armed = true;                              ****************************************************************************************************************************************
       if (randNumber = 0)  //---
       {
         if (buttons & BUTTON_UP)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("     Peew!     ");
          lcd.setCursor(0, 1);
          lcd.print("  You made it!  "); 
         }
         if (buttons & BUTTON_DOWN & BUTTON_LEFT & BUTTON_RIGHT)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("You better run!!");
          lcd.setCursor(0, 1);
          lcd.print("Now 10s left ;)");
          delay(2000);
          timer = 10;
          lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("Status = Armed");
              lcd.setBacklight(RED);
              for(;timer > 0; --timer)
              {
                delay(1000);
                lcd.setCursor(0, 1);
                lcd.print(timer);
                if (timer < 10)
                {
                  lcd.setCursor(1, 1);
                  lcd.print("   ");
                }
              }
            }
          }
       if (randNumber = 1)  //---
       {
         if (buttons & BUTTON_DOWN)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("     Peew!     ");
          lcd.setCursor(0, 1);
          lcd.print("  You made it!  "); 
         }
         if (buttons & BUTTON_UP & BUTTON_LEFT & BUTTON_RIGHT)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("You better run!!");
          lcd.setCursor(0, 1);
          lcd.print("Now 10s left ;)");
          delay(2000);
          timer = 10;
          lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("Status = Armed");
              lcd.setBacklight(RED);
              for(;timer > 0; --timer)
              {
                delay(1000);
                lcd.setCursor(0, 1);
                lcd.print(timer);
                if (timer < 10)
                {
                  lcd.setCursor(1, 1);
                  lcd.print("   ");
                }
              }
            }
          }    //---
       if (randNumber = 2)  //---
       {
         if (buttons & BUTTON_LEFT)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("     Peew!     ");
          lcd.setCursor(0, 1);
          lcd.print("  You made it!  "); 
         }
         if (buttons & BUTTON_DOWN & BUTTON_UP & BUTTON_RIGHT)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("You better run!!");
          lcd.setCursor(0, 1);
          lcd.print("Now 10s left ;)");
          delay(2000);
          timer = 10;
          lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("Status = Armed");
              lcd.setBacklight(RED);
              for(;timer > 0; --timer)
              {
                delay(1000);
                lcd.setCursor(0, 1);
                lcd.print(timer);
                if (timer < 10)
                {
                  lcd.setCursor(1, 1);
                  lcd.print("   ");
                }
              }
            }
          }
       if (randNumber = 3)  //---
       {
         if (buttons & BUTTON_RIGHT)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("     Peew!     ");
          lcd.setCursor(0, 1);
          lcd.print("  You made it!  "); 
         }
         if (buttons & BUTTON_DOWN & BUTTON_LEFT & BUTTON_UP)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("You better run!!");
          lcd.setCursor(0, 1);
          lcd.print("Now 10s left ;)");
          delay(2000);
          timer = 10;
          lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("Status = Armed");
              lcd.setBacklight(RED);
              for(;timer > 0; --timer)
              {
                delay(1000);
                lcd.setCursor(0, 1);
                lcd.print(timer);
                if (timer < 10)
                {
                  lcd.setCursor(1, 1);
                  lcd.print("   ");
                }
              }
            }
          }
    }
  }    
  }
}
  if (armed = false);            ******************************************************************************************************************************************************
  {
    if (buttons & BUTTON_UP)
    {
      timer = timer ++;
      delay(200);
      lcd.print("Status = Unarmed");
      lcd.setCursor(0, 1);
      lcd.print(timer);
    }
    if (buttons & BUTTON_DOWN)
    {
      timer = timer --;
      delay(200);
      lcd.print("Status = Unarmed");
      lcd.setCursor(0, 1);
      lcd.print(timer);    
    }
  }  
  
 
if (timer < 1)
  {
   lcd.clear();
   lcd.setCursor(0, 0);
   lcd.print("    BOOOOM!!    ");
   lcd.setCursor(0, 1);
   lcd.print("You got smacked!");
   delay(10000);
  }
  
}
if (armed = true);

should be

if (armed == true);

or

if (armed);

Hmm it didn´t help me. I can see how it should be like you say but it makes no difference when I try it.

Code:
if (armed = true);
should be
Code:
if (armed == true);
or
Code:
if (armed);

Of course, none of those semicolons should be there.

Mea maxima culpa
or, to translate, whoops !

Yeah I tried without them but it kinda makes things wore.

It should look like this on the display +- - - - - - - - - - - +
|Status = Unarmed |
|30 |

And it does if I adjust the timer and still have the semicolon

But if I take them away and then adjust the timer, it looks like this: +- - - - - - - - - - - +
|Status = Unarmed |
|31Status = Unarm |

And it does still not respond to the buttons in the armed mode.
Haha I´m realy lost now.

Post code, or stay lost

As you wish :slight_smile:

#include <Wire.h>
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>

Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();

#define RED 0x1
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7

int timer = 30;

long randNumber;

boolean armed = false;


void setup()

{
Serial.begin(9600);

lcd.begin(16, 2);

lcd.print("Status = Unarmed");
lcd.setBacklight(GREEN);
  lcd.setCursor(0, 1);
  lcd.print(timer);
  
randomSeed(analogRead(0));
randNumber = random(0, 4);
}

uint8_t i=0;
void loop()

{
  uint8_t buttons = lcd.readButtons();
  
if (buttons)
{
 if (buttons & BUTTON_LEFT)
 {
  armed = !false;
 } 
}

if (armed == !false)
{
  if (buttons) {
    lcd.clear();
    if (buttons & BUTTON_SELECT) 
    {
    lcd.setCursor(0, 0);
    lcd.print("Status = Armed");
    lcd.setBacklight(RED);
    for(;timer > 0; --timer)
    {
    delay(1000);
    lcd.setCursor(0, 1);
    lcd.print(timer);
      if (timer < 10)
        {
        lcd.setCursor(1, 1);
        lcd.print("   ");
        }
      if (timer < 100)
        {
         lcd.setCursor(2, 1);
         lcd.print("    "); 
        }
       lcd.setCursor(15, 1);
       lcd.print(randNumber);
       //armed = true;
       if (randNumber == 0)  //---
       {
         if (buttons & BUTTON_UP)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("     Peew!     ");
          lcd.setCursor(0, 1);
          lcd.print("  You made it!  "); 
         }
         if (buttons & BUTTON_DOWN & BUTTON_LEFT & BUTTON_RIGHT)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("You better run!!");
          lcd.setCursor(0, 1);
          lcd.print("Now 10s left ;)");
          delay(2000);
          timer = 10;
          /*lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("Status = Armed");
              lcd.setBacklight(RED);
              for(;timer > 0; --timer)
              {
                delay(1000);
                lcd.setCursor(0, 1);
                lcd.print(timer);
                if (timer < 10)
                {
                  lcd.setCursor(1, 1);
                  lcd.print("   ");
                }
              } */
            }
          }
       if (randNumber == 1)  //---
       {
         if (buttons & BUTTON_DOWN)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("     Peew!     ");
          lcd.setCursor(0, 1);
          lcd.print("  You made it!  "); 
         }
         if (buttons & BUTTON_UP & BUTTON_LEFT & BUTTON_RIGHT)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("You better run!!");
          lcd.setCursor(0, 1);
          lcd.print("Now 10s left ;)");
          delay(2000);
          timer = 10;
          /*lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("Status = Armed");
              lcd.setBacklight(RED);
              for(;timer > 0; --timer)
              {
                delay(1000);
                lcd.setCursor(0, 1);
                lcd.print(timer);
                if (timer < 10)
                {
                  lcd.setCursor(1, 1);
                  lcd.print("   ");
                }
              } */
            }
          }    //---
       if (randNumber == 2)  //---
       {
         if (buttons & BUTTON_LEFT)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("     Peew!     ");
          lcd.setCursor(0, 1);
          lcd.print("  You made it!  "); 
         }
         if (buttons & BUTTON_DOWN & BUTTON_UP & BUTTON_RIGHT)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("You better run!!");
          lcd.setCursor(0, 1);
          lcd.print("Now 10s left ;)");
          delay(2000);
          timer = 10;
          /*lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("Status = Armed");
              lcd.setBacklight(RED);
              for(;timer > 0; --timer)
              {
                delay(1000);
                lcd.setCursor(0, 1);
                lcd.print(timer);
                if (timer < 10)
                {
                  lcd.setCursor(1, 1);
                  lcd.print("   ");
                }
              } */
            }
          }
       if (randNumber == 3)  //---
       {
         if (buttons & BUTTON_RIGHT)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("     Peew!     ");
          lcd.setCursor(0, 1);
          lcd.print("  You made it!  "); 
         }
         if (buttons & BUTTON_DOWN & BUTTON_LEFT & BUTTON_UP)
         {
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("You better run!!");
          lcd.setCursor(0, 1);
          lcd.print("Now 10s left ;)");
          delay(2000);
          timer = 10;
         /* lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("Status = Armed");
              lcd.setBacklight(RED);
              for(;timer > 0; --timer)
              {
                delay(1000);
                lcd.setCursor(0, 1);
                lcd.print(timer);
                if (timer < 10)
                {
                  lcd.setCursor(1, 1);
                  lcd.print("   ");
                }
              } */
            }
          }
    }
  }    
  }
}
if (armed == false)
{
  if (buttons & BUTTON_UP)
  {
    timer = timer ++;
    delay(200);
    lcd.print("Status = Unarmed");
    lcd.setCursor(0, 1);
    lcd.print(timer);
  }
  if (buttons & BUTTON_DOWN)
  {
    timer = timer --;
    delay(200);
    lcd.print("Status = Unarmed");
    lcd.setCursor(0, 1);
    lcd.print(timer);    
  }
}  
  
 
if (timer < 1)
  {
   lcd.clear();
   lcd.setCursor(0, 0);
   lcd.print("    BOOOOM!!    ");
   lcd.setCursor(0, 1);
   lcd.print("You got smacked!");
   delay(10000);
  }
  
}
armed = !false;

Do you have some kind of aversion to writing "true"?

No I do not. But I tired writing "armed = true;" at first. It did not help so I tried some other stuff before I went back here to ask for more help. I am trying to solve the problem as good as I can on my own but I will probably need some help to figure it out.

but I will probably need some help to figure it out.

Do everyone a favour, and apply the auto format tool to your code, then repost it.

Here you go, thx for the tip too. I have also changed the “!false” to “true” again.

#include <Wire.h>
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>

Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();

#define RED 0x1
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7

int timer = 30;

long randNumber;

boolean armed = false;


void setup()

{
  Serial.begin(9600);

  lcd.begin(16, 2);

  lcd.print("Status = Unarmed");
  lcd.setBacklight(GREEN);
  lcd.setCursor(0, 1);
  lcd.print(timer);

  randomSeed(analogRead(0));
  randNumber = random(0, 4);
}

uint8_t i=0;
void loop()

{
  uint8_t buttons = lcd.readButtons();

  if (buttons)
  {
    if (buttons & BUTTON_LEFT)
    {
      armed = true;
    } 
  }

  if (armed == true)
  {
    if (buttons) 
    {
      lcd.clear();
      if (buttons & BUTTON_SELECT) 
      {
        lcd.setCursor(0, 0);
        lcd.print("Status = Armed");
        lcd.setBacklight(RED);
        for(;timer > 0; --timer)
        {
          delay(1000);
          lcd.setCursor(0, 1);
          lcd.print(timer);
          if (timer < 10)
          {
            lcd.setCursor(1, 1);
            lcd.print("   ");
          }
          if (timer < 100)
          {
            lcd.setCursor(2, 1);
            lcd.print("    "); 
          }
          lcd.setCursor(15, 1);
          lcd.print(randNumber);
          //armed = true;
          if (randNumber == 0)  //---
          {
            if (buttons & BUTTON_UP)
            {
              lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("     Peew!     ");
              lcd.setCursor(0, 1);
              lcd.print("  You made it!  "); 
            }
            if (buttons & BUTTON_DOWN & BUTTON_LEFT & BUTTON_RIGHT)
            {
              lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("You better run!!");
              lcd.setCursor(0, 1);
              lcd.print("Now 10s left ;)");
              delay(2000);
              timer = 10;
              /*lcd.clear();
               lcd.setCursor(0, 0);
               lcd.print("Status = Armed");
               lcd.setBacklight(RED);
               for(;timer > 0; --timer)
               {
               delay(1000);
               lcd.setCursor(0, 1);
               lcd.print(timer);
               if (timer < 10)
               {
               lcd.setCursor(1, 1);
               lcd.print("   ");
               }
               } */
            }
          }
          if (randNumber == 1)  //---
          {
            if (buttons & BUTTON_DOWN)
            {
              lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("     Peew!     ");
              lcd.setCursor(0, 1);
              lcd.print("  You made it!  "); 
            }
            if (buttons & BUTTON_UP & BUTTON_LEFT & BUTTON_RIGHT)
            {
              lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("You better run!!");
              lcd.setCursor(0, 1);
              lcd.print("Now 10s left ;)");
              delay(2000);
              timer = 10;
              /*lcd.clear();
               lcd.setCursor(0, 0);
               lcd.print("Status = Armed");
               lcd.setBacklight(RED);
               for(;timer > 0; --timer)
               {
               delay(1000);
               lcd.setCursor(0, 1);
               lcd.print(timer);
               if (timer < 10)
               {
               lcd.setCursor(1, 1);
               lcd.print("   ");
               }
               } */
            }
          }    //---
          if (randNumber == 2)  //---
          {
            if (buttons & BUTTON_LEFT)
            {
              lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("     Peew!     ");
              lcd.setCursor(0, 1);
              lcd.print("  You made it!  "); 
            }
            if (buttons & BUTTON_DOWN & BUTTON_UP & BUTTON_RIGHT)
            {
              lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("You better run!!");
              lcd.setCursor(0, 1);
              lcd.print("Now 10s left ;)");
              delay(2000);
              timer = 10;
              /*lcd.clear();
               lcd.setCursor(0, 0);
               lcd.print("Status = Armed");
               lcd.setBacklight(RED);
               for(;timer > 0; --timer)
               {
               delay(1000);
               lcd.setCursor(0, 1);
               lcd.print(timer);
               if (timer < 10)
               {
               lcd.setCursor(1, 1);
               lcd.print("   ");
               }
               } */
            }
          }
          if (randNumber == 3)  //---
          {
            if (buttons & BUTTON_RIGHT)
            {
              lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("     Peew!     ");
              lcd.setCursor(0, 1);
              lcd.print("  You made it!  "); 
            }
            if (buttons & BUTTON_DOWN & BUTTON_LEFT & BUTTON_UP)
            {
              lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("You better run!!");
              lcd.setCursor(0, 1);
              lcd.print("Now 10s left ;)");
              delay(2000);
              timer = 10;
              /* lcd.clear();
               lcd.setCursor(0, 0);
               lcd.print("Status = Armed");
               lcd.setBacklight(RED);
               for(;timer > 0; --timer)
               {
               delay(1000);
               lcd.setCursor(0, 1);
               lcd.print(timer);
               if (timer < 10)
               {
               lcd.setCursor(1, 1);
               lcd.print("   ");
               }
               } */
            }
          }
        }
      }    
    }
  }
  if (armed == false)
  {
    if (buttons & BUTTON_UP)
    {
      timer = timer ++;
      delay(200);
      lcd.print("Status = Unarmed");
      lcd.setCursor(0, 1);
      lcd.print(timer);
    }
    if (buttons & BUTTON_DOWN)
    {
      timer = timer --;
      delay(200);
      lcd.print("Status = Unarmed");
      lcd.setCursor(0, 1);
      lcd.print(timer);    
    }
  }  


  if (timer < 1)
  {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("    BOOOOM!!    ");
    lcd.setCursor(0, 1);
    lcd.print("You got smacked!");
    delay(10000);
  }

}
if (buttons)
  {
    if (buttons & BUTTON_LEFT)
    {
      armed = true;
    } 
  }

I'm sorry, but I'm a bit like a compiler of thirty years ago, and I hiccup at the first thing that looks odd to me.
Can you explain why you first test to see if "buttons" is non-zero, then test to see if BUTTON_LEFT is set?
The first test is pointless.

Ops I forgot to take that away again, I wanted to see if it would help to do like so. And yes, it was pointless and did not help. Uhm, test if buttons is non-zero? Is that when I write "buttons" in if (buttons & BUTTON_LEFT). It was like that in the example code so I figured that it should be like that. So I could just write it like this: if (BUTTON_LEFT) and skip the buttons part of it?

So I could just write it like this: if (BUTTON_LEFT) and skip the buttons part of it?

No, BUTTON_LEFT will always be true.

The bit wise AND is the important part.