CODE 5.8 | 7-세그먼트로 전자 주사위 만들기
| 01 | int segmentPins[] = {2, 3, 4, 5, 6, 7, 8}; |
| 02 | // 7-세그먼트 A~G 핀을 연결한 디지털 핀 배열 |
| 03 | int btnPin = 9; // 푸시 버튼을 연결한 디지털 핀 |
| 04 | int lastState = HIGH; // 버튼의 이전 상태 저장 |
| 05 | |
| 06 | // 숫자 1~6을 표시하기 위한 세그먼트 점등 패턴 |
| 07 | byte digits[6][7] = { |
| 08 | {0, 1, 1, 0, 0, 0, 0}, // 1 |
| 09 | {1, 1, 0, 1, 1, 0, 1}, // 2 |
| 10 | {1, 1, 1, 1, 0, 0, 1}, // 3 |
| 11 | {0, 1, 1, 0, 0, 1, 1}, // 4 |
| 12 | {1, 0, 1, 1, 0, 1, 1}, // 5 |
| 13 | {1, 0, 1, 1, 1, 1, 1} // 6 |
| 14 | }; |
| 15 | |
| 16 | void setup() { |
| 17 | // 7-세그먼트 A~G 핀을 출력 모드로 설정 |
| 18 | for (int i = 0; i < 7; i++) { |
| 19 | pinMode(segmentPins[i], OUTPUT); |
| 20 | } |
| 21 | |
| 22 | pinMode(btnPin, INPUT_PULLUP); // 버튼 핀에 내부 풀업 저항 사용 |
| 23 | randomSeed(analogRead(A0)); // 무작위 숫자 생성을 위한 초기값 |
| 24 | } |
| 25 | |
| 26 | void loop() { |
| 27 | int currentState = digitalRead(btnPin); // 버튼 상태 읽기 |
| 28 | |
| 29 | // 버튼이 눌리는 순간에만 LOW 신호가 입력됨 |
| 30 | if (currentState == LOW && lastState == HIGH) { |
| 31 | int diceNumber = random(1, 7); // 1~6 사이의 무작위 숫자 생성 |
| 32 | |
| 33 | // 생성된 숫자에 해당하는 세그먼트 점등 패턴 출력 |
| 34 | for (int p = 0; p < 7; p++) { |
| 35 | digitalWrite(segmentPins[p], digits[diceNumber - 1][p]); |
| 36 | } |
| 37 | |
| 38 | delay(50); // 0.05초 대기 |
| 39 | } |
| 40 | |
| 41 | lastState = currentState; // 현재 상태를 이전 상태로 저장 |
| 42 | } |
틴커캐드 회로도
버튼 또는 주소를 클릭하면 새 창에서 회로도가 열립니다.
https://www.tinkercad.com/things/8InBETKgkqN-543-
답글삭제