보드/아두이노기본코드
LED 4개로 0~15 표시
e코딩넷 블로그
2023. 5. 12. 15:16
LED 4개가 표시하는 16가지의 경우는 다음과 같습니다.
숫자 | LED4 | LED3 | LED2 | LED1 | 숫자 | LED4 | LED3 | LED2 | LED1 |
0 | OFF | OFF | OFF | OFF | 8 | ON | OFF | OFF | OFF |
1 | OFF | OFF | OFF | ON | 9 | ON | OFF | OFF | ON |
2 | OFF | OFF | ON | OFF | 10 | ON | OFF | ON | OFF |
3 | OFF | OFF | ON | ON | 11 | ON | OFF | ON | ON |
4 | OFF | ON | OFF | OFF | 12 | ON | ON | OFF | OFF |
5 | OFF | ON | OFF | ON | 13 | ON | ON | OFF | ON |
6 | OFF | ON | ON | OFF | 14 | ON | ON | ON | OFF |
7 | OFF | ON | ON | ON | 15 | ON | ON | ON | ON |
// 각 자리에 해당하는 디지털 핀 번호
const int LED_pins[3] = {2, 3, 4, 5};
void setup() {
// 디지털 핀을 출력으로 설정
for(int i=0; i<4; i++){
pinMode(LED_pins[i], OUTPUT);
}
}
void loop() {
// 0부터 15까지의 16진수를 차례대로 표시
for(int num=0; num<16; num++){
// 각 자리의 LED 상태를 결정
for(int i=0; i<4; i++){
int state = (num >> i) & 0x1; // i번째 비트 추출
digitalWrite(LED_pins[i], state);
}
delay(1000); // 1초 대기
}
}
각 자리에 해당하는 디지털 핀 번호를 배열에 저장하여 반복문을 이용한 코드입니다. 0부터 15까지의 16진수를 차례대로 표시하기 위해 반복문을 사용하였습니다. 각 자리의 LED 상태를 결정하기 위해 이진수로 변환하여 비트 연산을 이용하였습니다.
4개의 LED 중 첫 번째 LED부터 마지막 LED까지 16진수 값을 표시하기 위해서, 16진수 값인 i를 2진수 값으로 변환하여 각 비트를 LED에 출력하는 방식으로 동작합니다.
이때, digitalWrite() 함수를 이용하여 LED의 상태를 변경합니다. digitalWrite() 함수는 첫 번째 매개변수로 LED 핀 번호를 입력하고, 두 번째 매개변수로 HIGH 또는 LOW 값을 입력하여 LED를 켜거나 끌 수 있습니다.
위의 코드에서는 첫 번째 LED부터 차례로 16진수 값을 표시하며, i & 0x1과 같은 비트 연산자를 이용하여 i의 각 비트가 1인지 0인지를 판별하여 LED를 켜거나 끄는 것을 반복합니다. 이렇게 하여 0부터 15까지의 16진수 값을 표시할 수 있습니다.
위의 브레드보드에서는 LED 4개의 - 핀 갯수가 총 4개여서 아두이노의 GND 갯수인 3개에 하나씩 꼽기가 어렵습니다. 이럴때는 4개의 -핀을 브레드보드의 공통 GND(파란선으로 연결된 곳)에 꼽은후 아두이노의 GND에 선으로 연결해주면 됩니다.