#include <Keypad.h>

      // ustawienie klawiatury
const byte ROWS = 4; //cztery rzędy
const byte COLS = 4; //trzy kolumny
char hexaKeys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}};

        // podłączenie klawiatury do Arduino   
byte rowPins[ROWS] = {8, 7, 6, 5};  //Piny, do których podłączamy wyprowadzenia od rzędów
byte colPins[COLS] = {4, 3, 2, 1}; //Piny, do których podłączamy wyprowadzenia od kolumn

Keypad keypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS );


void setup() {
  pinMode(9, OUTPUT); //Dioda zielona
  pinMode(10, OUTPUT); //Dioda pomarańczowa1
  pinMode(11, OUTPUT); //Dioda czerwona
  pinMode(12, OUTPUT); //Dioda pomarańczowa2
  pinMode(13, OUTPUT); //Dioda biała
 
  digitalWrite(9, LOW); //Wyłączenie diod
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
}
 
void loop()
{
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (keypad.getKey() != '1') { //Czekaj na wciśnięcie przycisku
  
  //S1
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH); //czerwona
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  }
	
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (keypad.getKey() != '2') { //Czekaj na wciśnięcie przycisku
	
  //S2
  digitalWrite(9, HIGH); //zielona
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  }
	
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (keypad.getKey() != '3') { //Czekaj na wciśnięcie przycisku
	
  //S3
  digitalWrite(9, HIGH); //zielona on
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  delay(500);
  digitalWrite(9, LOW); //zielona off
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  delay(500);
  }
	
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (keypad.getKey() != '4') { //Czekaj na wciśnięcie przycisku
	
  //S4
  digitalWrite(9, LOW);
  digitalWrite(10, HIGH); //pomarańczowa1 on
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  delay(500);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW); //pomarańczowa1 off
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  delay(500);
  }

  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (keypad.getKey() != '5') { //Czekaj na wciśnięcie przycisku
	
  //S5
  digitalWrite(9, LOW);
  digitalWrite(10, HIGH); //pomarańczowa1
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  }
	
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (keypad.getKey() != '6') { //Czekaj na wciśnięcie przycisku
	
  //S10
  digitalWrite(9, HIGH); //zielona
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH); //pomarańczowa2
  digitalWrite(13, LOW);
  }

  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (keypad.getKey() != '7') { //Czekaj na wciśnięcie przycisku
	
  //S11
  digitalWrite(9, HIGH); //zielona on
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH); //pomarańczowa2
  digitalWrite(13, LOW);
  delay(500);
  digitalWrite(9, LOW); //zielona off
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH); //pomarańczowa2
  digitalWrite(13, LOW);
  delay(500);
  }

  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (keypad.getKey() != '8') { //Czekaj na wciśnięcie przycisku
	
  //S12
  digitalWrite(9, LOW);
  digitalWrite(10, HIGH); //pomarańczowa1 on
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH); //pomarańczowa2
  digitalWrite(13, LOW);
  delay(500);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW); //pomarańczowa1 off
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH); //pomarańczowa2
  digitalWrite(13, LOW);
  delay(500);
  }

  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (keypad.getKey() != '9') { //Czekaj na wciśnięcie przycisku
	
  //S13
  digitalWrite(9, LOW);
  digitalWrite(10, HIGH); //pomarańczowa1
  digitalWrite(11, LOW);
  digitalWrite(12, HIGH); //pomarańczowa2
  digitalWrite(13, LOW);
  }

  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (keypad.getKey() != '0') { //Czekaj na wciśnięcie przycisku
	
  //Sz
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH); //czerwona
  digitalWrite(12, LOW);
  digitalWrite(13, HIGH); //biała on
  delay(500);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH); //czerwona
  digitalWrite(12, LOW);
  digitalWrite(13, LOW); //biała off
  delay(500);
  }


  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(7) == HIGH) {} //Czekaj na wciśnięcie przycisku
  delay(1000);
}