BASIC4MCU | 질문게시판 | 아두이노 스위치 LED 질문
페이지 정보
작성자 master 작성일2018-12-10 13:08 조회7,601회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6672
본문
LED를 아두이노 핀 8,9,10,11에 연결하고 D0,D1,D2,D3이라고 정의하고
스위치를 아두이노 핀 4,5,6,7에 연결하고 SW1,SW2,SW3,SW4라고 정의할 때1. SW1 을 누르면 D0,D1,D2,D3이 차례대로 0.5초씩 점멸하는 것을 순환하고2. SW2 를 누르면 D0,D1,D2,D3이 차례대로 켜지게 한 후 2초간 모두 깜빡거리고3. SW3을 누르면 D0,D2가 동시에 3회 깜박거린 후 D1,D3이 동시에 3회 깜박거린다4. SW1과 SW2를 동시에 눌렀을 때 BCD코드가 0000 에서 1001까지 계속하여 진행된다5. SW4를 누르면 1번부터 4번까지의 순서를 반대로 진행하도록 한다
//
// DateTime : 2018-12-10 오후 12:08:38// by Ok-Hyun Park//int LED0=8,LED1=9,LED2=10,LED3=11;int SW1=4,SW2=5,SW3=6,SW4=7;//bool flag1=0,flag2=0,flag3=0,flag4=0;int dir=1;int mode=0;int n=0;//void disp_led(int n){if(n&1)digitalWrite(LED0,1); else digitalWrite(LED0,0);if(n&2)digitalWrite(LED1,1); else digitalWrite(LED1,0);if(n&4)digitalWrite(LED2,1); else digitalWrite(LED2,0);if(n&8)digitalWrite(LED3,1); else digitalWrite(LED3,0);}//void setup(){for(int i=8;i<=11;i++)pinMode(i,OUTPUT);for(int i=4;i<=7;i++)pinMode(i,INPUT);}//void loop(){//------------------------------------if(digitalRead(SW4)){if(flag4==0){ flag4=0; dir^=1; } // 진행 순서 토글(반전)}else{ flag4=0; }//------------------------------------if(digitalRead(SW1)){ // SW1 을 누르면delay(200); // 0.2초 기다린 후if(digitalRead(SW2)){ mode=3; n=0; } // 동시에 누름else { mode=1; n=0; } // SW1 만 누름}//------------------------------------if(digitalRead(SW2)){ // SW2 를 누르면delay(200); // 0.2초 기다린 후if(digitalRead(SW1)){ mode=3; n=0; } // 동시에 누름else { mode=2; n=0; } // SW2 만 누름}//------------------------------------if(digitalRead(SW3)){ // SW3을 누르면mode=0;if(dir){for(int i=0;i<3;i++){ // D0,D2가 동시에 3회 깜박거린 후disp_led(5); delay(500);disp_led(0); delay(500);}for(int i=0;i<3;i++){ // D1,D3이 동시에 3회 깜박거린다disp_led(10); delay(500);disp_led( 0); delay(500);}}else{for(int i=0;i<3;i++){ // D1,D3이 동시에 3회 깜박거린 후disp_led(10); delay(500);disp_led( 0); delay(500);}for(int i=0;i<3;i++){ // D0,D2가 동시에 3회 깜박거린다disp_led(5); delay(500);disp_led(0); delay(500);}}}//------------------------------------if(mode==1){ // SW1 을 누르면 D0,D1,D2,D3이 차례대로 0.5초씩 점멸하는 것을 순환하고disp_led(1<<n);if(dir){ if(++n>3)n=0; }else { if(--n<0)n=3; }delay(500);}//------------------------------------if(mode==2){ // SW2 를 누르면 D0,D1,D2,D3이 차례대로 켜지게 한 후 2초간 모두 깜빡거리고switch(n){case 0:case 1:case 2:case 3: disp_led(1<<n); break;case 4: disp_led(15); break;case 5: disp_led( 0); break;case 6: disp_led(15); break;case 7: disp_led( 0); break;}if(dir){ if(++n>7)n=0; }else { if(--n<0)n=7; }delay(500);}//------------------------------------if(mode==3){ // SW1과 SW2를 동시에 눌렀을 때 BCD코드가 0000 에서 1001까지 계속하여 진행된다disp_led(n);if(dir){ if(++n>9)n=0; }else { if(--n<0)n=9; }delay(500);}//------------------------------------}
댓글 0
조회수 7,601등록된 댓글이 없습니다.