본문 바로가기

작업실/arduino

아두이노(arduino) - 릴리즈 스위치 개선




소스1 -버튼은 7번에 LED는 13번입니다. 첫번째는 실패했는데 무엇이 문제인지 찾아보세요-


void setup(){

  pinMode(7,INPUT);

  pinMode(13,OUTPUT);

}

void loop(){

  int LED = 0;

  int Switch = digitalRead(7);

  int pass = 0;

  

  if(Switch==1){

    delay(200);

    while(Switch==1){

    }

    if(Switch==0){

      delay(200);

      if(Switch==0){

        pass=1;

      }

    }

  }

  if(pass==1){

    LED !=LED;

    digitalWrite(13,LED);

    pass=0;

  }

}



소스2 -절반은 성공한 소스입니다. 아직 보강이 필요해요-


void setup(){

  pinMode(7,INPUT);

  pinMode(13,OUTPUT);

}

void loop(){

  int LED = 0;

  int Switch = digitalRead(7);

  int pass = 0;

  

  Switch = digitalRead(7);

  if(Switch==1){

    delay(200);

    Switch = digitalRead(7);

    while(Switch==1){

      Switch = digitalRead(7);

      if(Switch==0)

        break;

    }

    if(Switch==0){

      delay(200);

      Switch = digitalRead(7);

      if(Switch==0){

        pass=1;

      }

    }

  }

  if(pass==1){

    //LED !=LED;

    digitalWrite(13,1);

    pass=0;

  }

}




소스3 -어느정도 이루어졌지만 소스가 많이 지저분합니다.-


void setup(){

  pinMode(7,INPUT);

  pinMode(13,OUTPUT);

}

void loop(){

  int LED = 0;

  int Switch = digitalRead(7);

  int pass = 0;

  

  while(1){

  Switch = digitalRead(7);

  if(Switch==1){

    delay(200);

    Switch = digitalRead(7);

    while(Switch==1){

      Switch = digitalRead(7);

      if(Switch==0)

        break;

    }

    if(Switch==0){

      delay(200);

      Switch = digitalRead(7);

      if(Switch==0){

        pass++;

      }

    }

  }

  if(pass==1){

    digitalWrite(13,1);

  }

  if(pass==2){

    digitalWrite(13,0);

    pass=0;

  }

  }//while END

}


소스4 -절반의 성공 새로 성공-


void setup(){

  pinMode(7,INPUT);

  pinMode(13,OUTPUT);

}

void loop(){

  int LED = 0;

  int Switch = digitalRead(7);

  int pass = 0;

  

  while(1){

  Switch = digitalRead(7);

  if(Switch==1){

    delay(200);

    Switch = digitalRead(7);

    while(Switch==1){

      Switch = digitalRead(7);

    }

    if(Switch==0){

      delay(200);

      Switch = digitalRead(7);

      if(Switch==0){

        pass++;

      }

    }

  }

  if(pass==1)

    digitalWrite(13,1);

  if(pass==2){

    digitalWrite(13,0);

    pass=0;

  }

  }

}



소스5 -완성되었습니다! 연결방법을 주석으로 달아두었습니다. 어떻게 동작되는지 설명도 자세하게!-

------------------------------------최종수정 출력설정  [토글]

// 5v -> switch -> port7    port7 -> 10K -> GND

// port13 -> LED -> 470 -> GND


void setup(){ 

  pinMode(7,INPUT); // 7번을 입력포트로 사용

  pinMode(13,OUTPUT); // 13번을 출력포트로 사용한다.

}

void loop(){

  int LED = 0; //LED 상태저장

  int Switch = 0; //스위치 값 저장

  int pass = 0; //정상적으로 누르고 때는 스위치동작 확인용

  

  while(1){ //루프 돌때마다 변수가 초기화되므로 반복문으로 무한반복

    Switch = digitalRead(7); //7번 포트로 입력을 받는다

    if(Switch==1){

      delay(200); //debounce 0.2초 대기

      while(Switch==1) //bounce이후 재확인 스위치가 때어지면 나온다

        Switch = digitalRead(7);

      if(Switch==0){

        delay(200);

        Switch = digitalRead(7);

        if(Switch==0)

          pass=1;

      }

    }

    if(pass==1){ //스위치 인식확인

      LED = !LED; //LED현재 값을 반전시킨다.

      digitalWrite(13,LED);

      pass=0; //초기화

    }

  } //while END

} //loop END