LED 이진 카운터
Coddy Arduino 여정의 출력 섹션에 포함된 레슨. 24개 중 19번째.
네 개의 LED는 컴퓨터가 숫자를 저장하는 방식인 이진수로 0부터 15까지의 숫자를 나타낼 수 있습니다. 각 LED의 자릿값은 바로 앞 자릿값의 두 배입니다. 즉 1, 2, 4, 8입니다. 켜진 LED는 그 값을 더합니다:
- 5는 4 + 1입니다: 4와 1의 값을 가진 LED가 켜집니다
- 10은 8 + 2입니다
- 15는 네 개 모두입니다
각 자릿값을 비트라고 하며, 값이 1인 자리부터 0으로 번호를 매깁니다. bitRead(number, n)은 숫자의 n번째 비트인 1 또는 0을 반환합니다:
bitRead(5, 0); // 1: 5에는 1이 있습니다
bitRead(5, 1); // 0: 5에는 2가 없습니다
bitRead(5, 2); // 1: 5에는 4가 있습니다1은 HIGH이고 0은 LOW이므로, 비트 i를 LED i에 바로 연결할 수 있습니다:
for (int i = 0; i < 4; i++) {
digitalWrite(ledPins[i], bitRead(count, i));
}여기서 ledPins[0]인 핀 2는 오른쪽에 있는 LED이며, 숫자의 마지막 자릿값처럼 1의 값을 가집니다.
챌린지
중급네 개의 LED가 이진수로 세도록 하세요:
count를 0으로 시작합니다bitRead()를 사용해 LED에 표시합니다. 비트i는ledPins[i]에 표시합니다- 250 ms 기다린 다음 1을 더하고, 15 이후에는 다시 0에서 시작합니다
Run을 누른 다음 Check를 누르세요.
직접 해보기
int ledPins[] = {2, 3, 4, 5}; // 각각 1, 2, 4, 8의 값을 가짐
int count = 0;
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
// count를 이진수로 표시하고 250 ms 기다린 다음 값을 1씩 증가시킴 (15 다음에는 0으로 돌아감)
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
출력의 모든 레슨
직접 연습해 보세요: Arduino 플레이그라운드