CODE 6.5 | 7-세그먼트 회로 실습
| 01 | void setup() { |
| 02 | // 출력 핀 설정: 7-세그먼트 a~g (7~13번) |
| 03 | pinMode(7, OUTPUT); // a |
| 04 | pinMode(8, OUTPUT); // b |
| 05 | pinMode(9, OUTPUT); // c |
| 06 | pinMode(10, OUTPUT); // d |
| 07 | pinMode(11, OUTPUT); // e |
| 08 | pinMode(12, OUTPUT); // f |
| 09 | pinMode(13, OUTPUT); // g |
| 10 | // 입력 핀 설정: BCD 4비트 (2,3,4,5번) |
| 11 | pinMode(2, INPUT_PULLUP); // A (LSB) |
| 12 | pinMode(3, INPUT_PULLUP); // B |
| 13 | pinMode(4, INPUT_PULLUP); // C |
| 14 | pinMode(5, INPUT_PULLUP); // D (MSB) |
| 15 | } |
| 16 | |
| 17 | void loop() { |
| 18 | // 1. 입력 읽기 (눌림=1, 떼어짐=0) |
| 19 | int A = (digitalRead(2) == LOW); |
| 20 | int B = (digitalRead(3) == LOW); |
| 21 | int C = (digitalRead(4) == LOW); |
| 22 | int D = (digitalRead(5) == LOW); |
| 23 | |
| 24 | // 2. [7-세그먼트 세그먼트별 부정 논리식 구현] |
| 25 | // 각 식은 해당 세그먼트가 '꺼져야 하는 상황'을 판별한다. |
| 26 | int a_bar = (!D && !C && !B && A) || (C && !A); |
| 27 | int b_bar = C && (B ^ A); |
| 28 | int c_bar = !C && B && !A; |
| 29 | int d_bar = (!C && !B && A) || (C && !B && !A) || (C && B && A); |
| 30 | int e_bar = A || (C && !B); |
| 31 | int f_bar = (B && A) || (!C && B) || (!D && !C && A); |
| 32 | int g_bar = (!D && !C && !B) || (C && B && A); |
| 33 | |
| 34 | // 3. 결과 출력 |
| 35 | digitalWrite(7, !a_bar); |
| 36 | digitalWrite(8, !b_bar); |
| 37 | digitalWrite(9, !c_bar); |
| 38 | digitalWrite(10, !d_bar); |
| 39 | digitalWrite(11, !e_bar); |
| 40 | digitalWrite(12, !f_bar); |
| 41 | digitalWrite(13, !g_bar); |
| 42 | } |
댓글 없음:
댓글 쓰기