DounatMonster:
Durch gelesen und nicht verstanden 
Falls Du es noch nicht wußtest: Programmieren lernt man nur durch Programmieren!
"Durchlesen und verstehen" ist dabei allenfalls eine Hilfestellung.
Falls es Dir hilft, hier ein Code, der mit 6 Buttons 6 LEDs ein- und ausschalten kann, die alle mit einem völlig unabhängigen Blinkrhythmus blinken.
Um das entweder auf 2 zu reduzieren oder auf noch mehr Buttons/LEDs zu erweitern, braucht an dem Programm nur die Array-Deklaration mit buttonPin-, ledPin-, und ledDauer-Festlegung geändert werden.
Das Programm kann wahlweise mit externen PullDown-Widerständen an den Buttons oder mit den eingebauten PullUp-Widerständen verwendet werden, je nachdem wie die Konstante BUTTONMODE gesetzt ist.
#define BUTTONMODE INPUT_PULLUP // INPUT oder INPUT_PULLUP
#define BOUNCETIME 5 // Prellzeit in Millisekunden
struct buttonLed_t{byte buttonPin; byte ledPin; unsigned int ledDauer; byte lastButtonState; boolean blinkerEingeschaltet; unsigned long blinkerLetzteSchaltung; boolean blinkState;};
buttonLed_t buttonLeds[]={
{2,8, 500}, // Button an Pin-2, LED an Pin-8, Blinkdauer 500ms
{3,9, 600},
{4,10,700},
{5,11,800},
{6,12,900},
{7,13,900},
};
#define BLINKERNUM (sizeof(buttonLeds)/sizeof(buttonLeds[0]))
void setup() {
Serial.begin(9600);
for (int i=0; i<BLINKERNUM; i++)
{
pinMode(buttonLeds[i].buttonPin,BUTTONMODE);
pinMode(buttonLeds[i].ledPin,OUTPUT);
digitalWrite(buttonLeds[i].ledPin,LOW);
}
}
void loop() {
byte state;
for (int i=0; i<BLINKERNUM; i++) // For-Schleife für alle Buttons und LEDs
{
state=digitalRead(buttonLeds[i].buttonPin);
if (BUTTONMODE==INPUT_PULLUP) state=!state;
if (state!=buttonLeds[i].lastButtonState) // Button-Status hat gewechselt
{
if (state==HIGH) // Button wurde gedrückt ==> umschalten ein/aus
{
buttonLeds[i].blinkerEingeschaltet= !buttonLeds[i].blinkerEingeschaltet;
buttonLeds[i].blinkerLetzteSchaltung=millis();
if (buttonLeds[i].blinkerEingeschaltet) buttonLeds[i].blinkState=true;
else buttonLeds[i].blinkState=false;
}
buttonLeds[i].lastButtonState=state;
}
if (buttonLeds[i].blinkerEingeschaltet) // blinkState umschalten nach Zeitablauf
{
if (millis()- buttonLeds[i].blinkerLetzteSchaltung >= buttonLeds[i].ledDauer)
{
buttonLeds[i].blinkerLetzteSchaltung=millis();
buttonLeds[i].blinkState= !buttonLeds[i].blinkState;
}
}
// Blinkstatus am ledPin setzen
digitalWrite(buttonLeds[i].ledPin, buttonLeds[i].blinkState);
}
// Es folgt eine Ausgabeschleife auf Serial
for (int i=0; i<BLINKERNUM; i++)
{
Serial.print(digitalRead(buttonLeds[i].ledPin));
}
Serial.println();
delay(BOUNCETIME); // Entprellen der Buttons
}
Falls Serial-Debugging nicht benötigt wird, kannst Du alle "Serial" Befehle aus dem Programm entfernen, sie sind für den reinen Ablauf nicht notwendig.