Need help with Multiple buttons sing wire

Hello I'm building something for my next door neighbors son he is special needs and my project is a basic put buttons with 10 buttons but to get started i wanted to use a attiny85 or attiny84 i have many of them but sense it is limited on pins would need to do a multiple button single wire and also what is added is just a simple rx tx lcd i do have the lcd and 3 buttons working but needed to do 10 buttons. I found a sketch online to help me with that but i don't understand it. also it comes from a instructables site. Instructables multiplepush buttons in the sketch i seen this

const int BUTTON1LOW = 970;
const int BUTTON1HIGH = 1024;
const int BUTTON2LOW = 850;
const int BUTTON2HIGH = 950;
const int BUTTON3LOW = 700;
const int BUTTON3HIGH = 800;
const int BUTTON4LOW = 400;
const int BUTTON4HIGH = 650;
const int BUTTON5LOW = 250;
const int BUTTON5HIGH = 350;

i do not understand what this means. here is the sketch

 /* 
  Debounce
  
  Each time the input pin goes from LOW to HIGH (e.g. because of a push-button
  press), the output pin is toggled from LOW to HIGH or HIGH to LOW.  There's
  a minimum delay between toggles to debounce the circuit (i.e. to ignore
  noise).  
  
  created 28 October 2009
  by Riaan Cornelius
  
  
  */

 // constants won't change. They're used here to 
 // set pin numbers:
 const int buttonPin = 0;     // the number of the pushbutton pin
 const int ledPin =  13;      // the number of the LED pin for testing
 
 const int BUTTON1 = 1;
 const int BUTTON2 = 2;
 const int BUTTON3 = 3;
 const int BUTTON4 = 4;
 const int BUTTON5 = 5;
 
 const int BUTTON1LOW = 970;
 const int BUTTON1HIGH = 1024;
 const int BUTTON2LOW = 850;
 const int BUTTON2HIGH = 950;
 const int BUTTON3LOW = 700;
 const int BUTTON3HIGH = 800;
 const int BUTTON4LOW = 400;
 const int BUTTON4HIGH = 650;
 const int BUTTON5LOW = 250;
 const int BUTTON5HIGH = 350;
 
 // Variables will change:
 int ledState = HIGH;         // the current state of the output pin
 int buttonState;             // the current reading from the input pin
 int lastButtonState = LOW;   // the previous reading from the input pin

 // the following variables are long's because the time, measured in miliseconds,
 // will quickly become a bigger numbeitr than can be stored in an int.
 long lastDebounceTime = 0;  // the last time the output pin was toggled
 long debounceDelay = 50;    // the debounce time; increase if the output flickers

 void setup() {
   pinMode(buttonPin, INPUT);
   pinMode(ledPin, OUTPUT);
   Serial.begin(9600);
 }

 void loop() {
   // read the state of the switch into a local variable:
   int reading = analogRead(buttonPin);   
   int tmpButtonState = LOW;             // the current reading from the input pin
   
   if(reading>BUTTON5LOW && reading<BUTTON5HIGH){
     //Read switch 5
     tmpButtonState = BUTTON5;
   }else if(reading>BUTTON4LOW && reading<BUTTON4HIGH){
     //Read switch 4
     tmpButtonState = BUTTON4;
   }else if(reading>BUTTON3LOW && reading<BUTTON3HIGH){
     //Read switch 3
     tmpButtonState = BUTTON3;
   }else if(reading>BUTTON2LOW && reading<BUTTON2HIGH){
     //Read switch 2
     tmpButtonState = BUTTON2;
   }else if(reading>BUTTON1LOW && reading<BUTTON1HIGH){
     //Read switch 1
     tmpButtonState = BUTTON1;
   }else{
     //No button is pressed;
     tmpButtonState = LOW;
   }

   // check to see if you just pressed the button 
   // (i.e. the input went from LOW to a buttonState),  and you've waited 
   // long enough since the last press to ignore any noise:  

   // If the switch changed, due to noise or pressing:
   if (tmpButtonState != lastButtonState) {
     // reset the debouncing timer
     lastDebounceTime = millis();
   } 

   if ((millis() - lastDebounceTime) > debounceDelay) {
     // whatever the reading is at, it's been there for longer
     // than the debounce delay, so take it as the actual current state:
     buttonState = tmpButtonState;
     Serial.println(buttonState);
   }

   // save the reading.  Next time through the loop,
   // it'll be the lastButtonState:
   lastButtonState = tmpButtonState;
   
   // set the LED using the state of the button for testing:
   switch(buttonState){
     case BUTTON1:
     digitalWrite(ledPin, buttonState>0);
     break;
     case BUTTON2:
     digitalWrite(ledPin, buttonState>0);
     break;
     case BUTTON3:
     digitalWrite(ledPin, buttonState>0);
     break;
     case BUTTON4:
     digitalWrite(ledPin, buttonState>0);
     break;
     case BUTTON5:
     digitalWrite(ledPin, buttonState>0);
     break;
   }
 }

can someone please help me to understand this in there are a 10k, 22k, 47k, 68k and a 82k. i do not have most of them resistors value i have 1k, 4.7k 10k, 20k, and i think i got some 15k some place i have to look can someone please help me out? Thank you.

Read this Voltage divider - Wikipedia for starters.

And this Resistor ladder - Wikipedia.

Cheers!

See this since the picture paints a thousand words. If you don't need to detect multiple button presses at the same time then you can use all the same value resistors between buttons. But if you want to detect multiple buttons then you will need to use a different resistor value between each button.

Hello kowalski thank you and hello Riva. The problem I'm having is not with the wiring. Or with the sketch per say but that one area in the sketch is what I'm having problems understanding it what them numbers are for or do?

Riva:
if you want to detect multiple buttons then you will need to use a different resistor value between each button.

If you want to detect multiple button presses the resistors should go up in steps of 2, for example
2k, 4k, 8k, 16k etc
That way every combination will produce a unique volatage at the ADC.

The numbers listed in your Original Post are probably the ADC values that correspond with each of the buttons being pressed. You will need to experiment with your actual system to figure out your own set of numbers.

Create your resistor and switch network and write a short program that displays the ADC value on the Serial Monitor when a button is pressed. Something as simple as

void loop() {
   adcVal = analogRead(A0);
   Serial.printlin(adcVal);
   delay(200);
}

...R

thank you Robin2 that explains a lot now i get it. Those are low and high values before the button is pressed and when the button is pressed.

josephchrzempiec:
Hello kowalski thank you and hello Riva. The problem I'm having is not with the wiring. Or with the sketch per say but that one area in the sketch is what I'm having problems understanding it what them numbers are for or do?

The numbers...

const int BUTTON1LOW = 970;
 const int BUTTON1HIGH = 1024;

correspond to the acceptable analogue reading when button 1 is pressed. The average value returned for pressing button 1 would be about half way between 970 & 1024 but you allow a little room either side of this for fluctuations. For button 2 the reading will be about 900 but they then allow a +-50 reading that gives the 850 & 950 values.

Thank you Riva also i didn't notice in the wiring of the buttons images that there is also a 100k resistor
This Image