소스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
'작업실 > arduino' 카테고리의 다른 글
아두이노(arduino) - 더블클릭을 인식하는 스위치 [릴리즈 응용] (0) | 2015.03.06 |
---|---|
아두이노(arduino) - 버튼을 누를때마다 동작이 변하는 LED [3state] (0) | 2015.03.06 |
아두이노(arduino) - 초음파 센서를 활용한 지나간 사람수 체크하기 (0) | 2015.03.06 |
아두이노(arduino) - 초음파 센서를 활용한 자동차 후방센서! (0) | 2015.03.06 |
아두이노(arduino) - 가변저항값을 7Segment에 표현하자 (0) | 2015.03.06 |