DigitalRead() problems

So I set up an LCD and it seems to be working fine. But.....
I set Digitalpin7 to read, and I connected the 3v source to one pin of a button, the other pin going to digital 7.
When I run the program, it shows the "Hey Browski" (button pressed) message instead of the "Hey Dude" (not pressed) message.
Please help!

#include <LiquidCrystal.h> //Import the LCD library
//Include^
//Init
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); /*Initialize the LCD and
                                        tell it which pins is
                                        to be used for communicating*/

//Global Var
#define contra 9 //Define the pin that controls the contrast of the screen
#define bri 10 //Define the pin the controls the brightness of the screen
//Both pins are PWM so you can analogWrite to them and have them output a variable value

  byte heart[8] = {
  0b00000,
  0b01010,
  0b11111,
  0b11111,
  0b11111,
  0b01110,
  0b00100,
  0b00000
};
byte armsDown[8] = {
  0b00100,
  0b01010,
  0b00100,
  0b00100,
  0b01110,
  0b10101,
  0b00100,
  0b01010
};

byte armsUp[8] = {
  0b00100,
  0b01010,
  0b00100,
  0b10101,
  0b01110,
  0b00100,
  0b00100,
  0b01010
};

void setup() {//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  // put your setup code here, to run once:
  lcd.begin(16, 2); //Tell the LCD that it is a 16x2 LCD
  pinMode(contra, OUTPUT); //set pin 9 to OUTPUT
  pinMode(bri, OUTPUT); //Set pin 10 to OUTPUT
  pinMode(7, INPUT);
  digitalWrite(7, LOW);
  //pinMode-ing OUTPUT makes the specified pin output power
  digitalWrite(contra, LOW); /*outputs no power to the contrast pin.
                            this lets you see the words*/
  analogWrite(bri, 255); //Outputs full power to the screen brightness LED
  lcd.createChar(0, armsDown);
  lcd.createChar(1, armsUp);
  
  lcd.setCursor(0,0);
  lcd.print("Hey Guys!");
  lcd.setCursor(0, 1);

}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void loop() {//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  if(digitalRead(7) == HIGH) {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Hey Browski!");
    lcd.setCursor(0, 1);
    lcd.write(byte(1));
    delay(50);
    }else{
      lcd.setCursor(0,1);
      lcd.write(byte(0));
      }
}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

https://www.arduino.cc/en/Tutorial/DigitalPins:
Pullup Resistors with pins configured as INPUT

Often it is useful to steer an input pin to a known state if no input is present. This can be done by adding a pullup resistor (to +5V), or a pulldown resistor (resistor to ground) on the input. A 10K resistor is a good value for a pullup or pulldown resistor.

Properties of Pins Configured as INPUT_PULLUP

There are 20K pullup resistors built into the Atmega chip that can be accessed from software. These built-in pullup resistors are accessed by setting the pinMode() as INPUT_PULLUP. This effectively inverts the behavior of the INPUT mode, where HIGH means the sensor is off, and LOW means the sensor is on.

Pieter

looks like u dont define pin 7 at the start of the sketch, also u call pinMode(7, INPUT); and then u tell it to be
digitalWrite(7, LOW); i dont believe u can tell and input in code to be low or high it reads the input pin which should be connected to gnd or power also do u have a pullup resistor on pin 7?

lrc_empire:
i dont believe u can tell and input in code to be low or high

Writing LOW or HIGH to an input pin turns off or on the internal pullup resistor

Delta_G:
Writing LOW or HIGH to an input pin turns off or on the internal pullup resistor

but doesnt the tutorial state

"Prior to Arduino 1.0.1, it was possible to configure the internal pull-ups in the following manner:

pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors"

im still learning too just asking

Yes, that's exactly what I was saying. If you digitalWrite an input HIGH it just turns on the pullup. If you write LOW to it then it turns the pullup off.

It still works like that now, but we also have INPUT_PULLUP as a pinMode possibility so you don't see it as much. But it still works to use digitalWrite to do it.