[아두이노] [아두이노 실습] Push button 스위치로 FND 카운트 증가/감소

아두이노 실습] Push button 스위치로 FND 카운트 증가/감소

2개의 push button으로 FND의 숫자 카운트를 up/down 시키는 실습

회로도...여기서는 Common Anode 타입의 FND를 사용
Untitled_Sketch_fzz_-_Fritzing_-__Schema


 브레드보드 연결도

Untitled_Sketch_fzz_-_Fritzing_-__Breadb


4번핀에 연결된 스위치로 숫자 카운트를 up, 5번핀에 연결된 스위치로 숫자 카운트를 down하는 스케치

#define FND_A 13
#define FND_B 12
#define FND_C 11
#define FND_D 10
#define FND_E 9
#define FND_F 8
#define FND_G 7
#define FND_DP 6

#define UP  4 
#define DN  5

#define dW digitalWrite
#define ON LOW
#define OFF HIGH

int gCnt = 0;

void setup() {
  for (int i=6;i<14;i++) pinMode(i, OUTPUT);
  pinMode(UP, INPUT_PULLUP);
  pinMode(DN, INPUT_PULLUP);  
}

void loop() {
  readUpSw();  // UP 스위치 처리
  readDnSw();  // DOWN 스위치 처리
  dispFnd(gCnt);
}

void dispFnd(int val)
{
  static int prevVal = -1;

  if (prevVal != val) {   // FND에 표시할 값이 바뀐 경우에만 표시를 변경
    switch (val) {
      case 0:
        dW(FND_A, ON); dW(FND_B, ON); dW(FND_C, ON); dW(FND_D, ON); dW(FND_E, ON); dW(FND_F, ON); dW(FND_G, OFF); 
        break;
      case 1:
        dW(FND_A, OFF); dW(FND_B, ON); dW(FND_C, ON); dW(FND_D, OFF); dW(FND_E, OFF); dW(FND_F, OFF); dW(FND_G, OFF); 
        break;
      case 2:
        dW(FND_A, ON); dW(FND_B, ON); dW(FND_C, OFF); dW(FND_D, ON); dW(FND_E, ON); dW(FND_F, OFF); dW(FND_G, ON); 
        break;
      case 3:
        dW(FND_A, ON); dW(FND_B, ON); dW(FND_C, ON); dW(FND_D, ON); dW(FND_E, OFF); dW(FND_F, OFF); dW(FND_G, ON); 
        break;
      case 4:
        dW(FND_A, OFF); dW(FND_B, ON); dW(FND_C, ON); dW(FND_D, OFF); dW(FND_E, OFF); dW(FND_F, ON); dW(FND_G, ON); 
        break;
      case 5:
        dW(FND_A, ON); dW(FND_B, OFF); dW(FND_C, ON); dW(FND_D, ON); dW(FND_E, OFF); dW(FND_F, ON); dW(FND_G, ON); 
        break;
      case 6:
        dW(FND_A, ON); dW(FND_B, OFF); dW(FND_C, ON); dW(FND_D, ON); dW(FND_E, ON); dW(FND_F, ON); dW(FND_G, ON); 
        break;
      case 7:
        dW(FND_A, ON); dW(FND_B, ON); dW(FND_C, ON); dW(FND_D, OFF); dW(FND_E, OFF); dW(FND_F, ON); dW(FND_G, OFF); 
        break;
      case 8:
        dW(FND_A, ON); dW(FND_B, ON); dW(FND_C, ON); dW(FND_D, ON); dW(FND_E, ON); dW(FND_F, ON); dW(FND_G, ON); 
        break;
      case 9:
        dW(FND_A, ON); dW(FND_B, ON); dW(FND_C, ON); dW(FND_D, ON); dW(FND_E, OFF); dW(FND_F, ON); dW(FND_G, ON); 
        break;
    }
    prevVal = val;
  }
}

boolean readUpSw()
{
  static boolean prev = HIGH;
  static unsigned long last;
  boolean curr;

  if ((millis()-last)>10) {
    curr = digitalRead(UP);
    if ((HIGH==prev)&&(LOW==curr)) {   // UP SW가 눌린 시점
      gCnt = (gCnt+1)%10;
    }
    prev = curr;
    last = millis();
  }
}

boolean readDnSw()
{
  static boolean prev = HIGH;
  static unsigned long last;
  boolean curr;

  if ((millis()-last)>10) {
    curr = digitalRead(DN);
    if ((HIGH==prev)&&(LOW==curr)) {  // DOWN SW가 눌린 시점

      gCnt = gCnt-1;
      if (-1 == gCnt) gCnt = 9;
    }
    prev = curr;
    last = millis();
  }
}
0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

임베디드 보드

번호 제목 글쓴이 날짜 조회수
58 아두이노 [강좌] 50. 와이파이 통신 (4) - WebServer 예제 icon 양재동메이커 03-21 19,614
57 아두이노 [강좌] 49. 와이파이 통신 (3) - WebClient 예제 icon 양재동메이커 03-21 23,271
56 아두이노 [강좌] 48. 와이파이 통신 (2) - 커맨드 모드 사용하기 (WiFly 쉴드) icon 양재동메이커 03-20 18,222
55 아두이노 [강좌] 47. 와이파이 통신 (1) - 와이파이란 무엇인가 icon 양재동메이커 03-20 23,066
54 아두이노 [강좌] 46. 블루투스 통신 (5) - 프로토콜 만들기 (2) icon 양재동메이커 03-20 18,107
53 아두이노 [강좌] 45. 블루투스 통신 (4) - 프로토콜 만들기 (1) icon 양재동메이커 03-20 19,433
52 아두이노 [강좌] 44. 블루투스 통신 (3) - RN42 모듈에서 직접 접속하기 icon 양재동메이커 03-20 16,336
51 아두이노 [강좌] 43. 블루투스 통신 (2) - 스마트폰과 통신하기 icon 양재동메이커 03-20 18,586
50 아두이노 [강좌] 42. 블루투스 통신 (1) - RN42 블루투스 모듈 실습하기 icon 양재동메이커 03-20 20,802
49 아두이노 [강좌] 41. 서보 모터 (2) - Servo 함수 알아보기 icon 양재동메이커 03-20 22,034
48 아두이노 [아두이노 강좌] 40. 서보 모터 (1) - 서보 모터 동작 방식 icon 양재동메이커 03-20 22,640
47 아두이노 [강좌] 39. 스텝 모터 (3) - 모터 드라이버 EasyDriver(A3967) 사용하기 icon 양재동메이커 03-20 18,006
46 아두이노 [강좌] 38. 스텝 모터 (2) - Stepper 함수 알아보기 icon 양재동메이커 03-20 22,154
45 아두이노 [강좌] 37. 스텝 모터 (1) - 스텝 모터 동작 방식 icon 양재동메이커 03-20 19,002
44 아두이노 [강좌] 36. DC 모터 (2) - DC 모터 드라이버 실습하기 (TB6612FNG) icon 양재동메이커 03-20 18,092
43 아두이노 [강좌] 35. DC 모터 (1) - DC 모터 동작 방식 icon 양재동메이커 03-20 20,927
42 아두이노 [강좌] 34. SPI 통신 (3) - 기압 센서(MPL115A1) 실습하기 icon 양재동메이커 03-20 17,330
41 아두이노 [강좌] 33. SPI 통신 (2) – SPI 함수 알아보기 icon 양재동메이커 03-20 25,798
40 아두이노 [강좌] 32. SPI 통신 (1) - SPI 통신이란 무엇인가 icon 양재동메이커 03-20 30,127
39 아두이노 [강좌] 31. I2C 통신 (3) - 온도 센서(TMP102) 실습하기 icon 양재동메이커 03-20 25,081