제목을 저렇게밖에 못쓰겠네요.. 죄송합니다

아두이노 매트릭스 키보드를 현재 만들고 있는 중인데 디지털핀이 15개가 필요하지만 아두이노 마이크로는 디지털핀이 최대 13개까지밖에 지원하지 않아 저항으로 한 핀에서 2핀처럼 사용할 수 있도록 하는 것을 보고 따라하고 있습니다.


참고글 : http://www.kbdmania.net/xe/tipandtech/8794285


그래서 Esc와 F1, F3와 F4이 각각 한 개의 핀에 서로 다른 저항과 함께 연결하여 ESC와 F3를 누르면 아날로그값에서 923정도의 값이, F1과 F4을 누르면 969정도의 값이 나오길래 아래 코드처럼 입력하니 ESC나 F1 혹은 F3와 F4 두 개를 같이 누를 때 빼곤 한 개씩 눌렀을 때 감지를 못합니다.. 어떻게 해야하나요..ㅠㅠ


 

 #include <Keyboard.h>

int checkA0, checkA1, checkA2, checkA3, checkA4, checkA5;

void setup() {
  Serial.begin(9600);
  Keyboard.begin();
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);
  pinMode(A4, INPUT);
  pinMode(A5, INPUT);
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  
  int value0, value1, value2, value3;
  int a2, a3, a4, a5, a6, a7;
  


  
  
  int i = 0;
  for (i=0; i<=13; i++) digitalWrite(i, LOW);
  if (analogRead(A0) <= 900) checkA0 = 2;
  else { if (checkA0) checkA0--;}
  if (analogRead(A1) <= 900) checkA1 = 2;
  else { if (checkA1) checkA1--;}  
  if (analogRead(A2) <= 900) checkA2 = 2;
  else { if (checkA2)  checkA2--;}  
  if (analogRead(A3) <= 900) checkA3 = 2;
  else { if (checkA3) checkA3--;}  
  if (analogRead(A4) <= 900) checkA4 = 2;
  else { if (checkA4) checkA4--;}
  if (analogRead(A5) <= 900) checkA5 = 2;
  else { if (checkA5) checkA5--;}
  value0 = analogRead(A0);
  value1 = analogRead(A1);
  value2 = analogRead(A2);
  value3 = analogRead(A3);
  for (i=0; i<=13; i++) digitalWrite(i, HIGH);
  
  if(checkA0){
    digitalWrite(0, LOW);
    if(analogRead(A0) >= 900) Keyboard.release(KEY_HOME);
    else Keyboard.press(KEY_HOME);
    digitalWrite(0, HIGH);

    digitalWrite(1, LOW);
    if(analogRead(A0) >= 900) Keyboard.release(KEY_PAGE_UP);
    else Keyboard.press(KEY_PAGE_UP);
    digitalWrite(1, HIGH);

    digitalWrite(2, LOW);
    if(analogRead(A0) >= 900) Keyboard.release(206);
    else Keyboard.press(206);
    digitalWrite(2, HIGH);
 //3번핀부터 10번핀까지는 윗 코드와 똑같으니 생략

    digitalWrite(11, LOW);
    if(analogRead(A0) <= 980 && analogRead(A0) >= 940) {Keyboard.release(KEY_F3); Keyboard.press(KEY_F4);}
    if(analogRead(A0) <= 939 && analogRead(A0) >= 900) {Keyboard.release(KEY_F4); Keyboard.press(KEY_F3);}
    if(analogRead(A0) <= 899){ Keyboard.press(KEY_F4); Keyboard.press(KEY_F3);}
    if(analogRead(A0) >= 981){ Keyboard.release(KEY_F3);Keyboard.release(KEY_F4);}
    digitalWrite(11, HIGH);

    digitalWrite(12, LOW);
    if(analogRead(A0) <= 980 && analogRead(A0) >= 940) {Keyboard.release(KEY_ESC); Keyboard.press(KEY_F1);}
    if(analogRead(A0) <= 939 && analogRead(A0) >= 900) {Keyboard.release(KEY_F1); Keyboard.press(KEY_ESC);}
    if(analogRead(A0) <= 899){ Keyboard.press(KEY_F1); Keyboard.press(KEY_ESC);}
    if(analogRead(A0) >= 981){ Keyboard.release(KEY_ESC);Keyboard.release(KEY_F1);}
    digitalWrite(12, HIGH);

    digitalWrite(13, LOW);
    if(analogRead(A0) >= 900) Keyboard.release(KEY_F2);
    else Keyboard.press(KEY_F2);
    digitalWrite(13, HIGH);
    

  }

   if(checkA1){
    
  }

  if(checkA2){
    
  }

  if(checkA3){
    
  }
  
  Serial.println(value0);
  Serial.println(value1);
  Serial.println(value2);
  Serial.println(value3);
  Serial.println();
}