※ 주의사항 ※
본 블로그는 수업 내용을 바탕으로 제가 이해한 부분을 정리한 블로그입니다.
본 내용을 참고로만 보시고, 틀린 부분이 있다면 지적 부탁드립니다!
감사합니다😁
안녕하세요!!
오늘은 아래와 같은 내용을 확인해보겠습니다.
if else 조건문 (LED 제어)
Switch-Case 조건문 (LED 제어)
bitWrite 함수
※ 조건문에 대한 설명은 생략하겠습니다.😥
- 이번 조건문 실습에 사용한 회로는 위의 사진과 같습니다.
사용자재 : Push Button 4개 / LED 4개 / 220옴 저항 4개 / 10키로옴 저항 4개 / 점퍼선
1. 조건문 if else를 활용한 LED 제어
디지털 I/O PIN 3~6번 : Switch Input
디지털 I/O PIN 8~11번 : LED Output
1-1. 문제
if else 문을 통해 4개의 스위치에서 Input 값을 받아 LED 동작기능을 고르며
for문을 통해 LED의 세부 동작을 구현시킵니다.
1-2. 코드
1) 사용함수
pinMode, digitalRead, digitalWrite, delay
2) 코드설명
Line 5~7 : for 문을 통해 LED 출력 PIN으로 사용할 8,9,10,11번을 OUTPUT으로 설정하고,
SW 입력 PIN 으로 사용할 3,4,5,6번을 INPUT으로 설정한다.
Line 12~13 : Push Button(스위치)이 보내는 신호를 읽는다.
Line 16~25 : 8번 핀하고 연결되어있는 스위치를 누르면 1번 동작을 수행한다.
Line 26~35 : 9번 핀하고 연결되어있는 스위치를 누르면 2번 동작을 수행한다.
Line 36~45 : 10번 핀하고 연결되어있는 스위치를 누르면 3번 동작을 수행한다.
Line 46~53 : 11번 핀하고 연결되어있는 스위치를 누르면 4번 동작을 수행한다.
Line 54~59 : 4개의 스위치가 아무것도 안눌리면 LED는 동작을 하지 않는다.
2. 조건문 switch case를 활용한 LED 제어
버튼 스위치를 사용한 예제들처럼 단순하게 조건이 선택하는 순서일 경우에는 if else문이나 for문 보단 switch-case 문을 사용하는것이 더 간편합니다.
2-1. bitWrite(x, n, b) 함수
4개의 버튼 스위치의 순서를 선택값으로 인식하기 위해 4개의 버튼 스위치를 8비트의 바이트 값으로 변환이 필요합니다. 즉, bitWrite 함수를 사용해서 버튼 스위치 SW1~SW4가 눌려지는 것에 따라 변수에 1, 2, 4, 8의 다른 값이 들어가게 됩니다.
- bitWrite : x변수에서 n번째에 위치하는 비트를 b로 변경합니다. //bitWrite(x, n, b)
x : 사용할 숫자 변수 / n : 사용할 비트의 위치, 맨 오른쪽 비트가 0 / b : 비트에 입력할 값 (0 or 1)
2-2. switch case 문 적용
1번 스위치를 누르면 1번 LED가 켜지고 ~ 4번 스위치를 누르면 4번 LED가 켜지도록 동작시켜보겠습니다.
1) 코드설명
Line 14 : 스위치의 신호(0 or 1)를 변수(val)에 저장합니다.
Line 15 : select 변수의 i번째에 있는 비트를 val 변수에 있는 비트로 바꾸어 저장합니다.
Line 18 : 스위치문의 시작, select 변수의 값에 따라 수행하는 문장이 달라집니다.
Line 19~22 : 4개의 스위치에 따라 각기 다른 LED가 점등 됩니다.
Line 23 : 아무 스위치도 눌리지 않는다면 모든 LED는 소등됩니다.
2-3. 응용 예제
1) 문제
- 1번. LED의 깜빡이는 속도가 4개의 스위치를 사용하여 4단계로 조정되는 스케치를 만들어 보자.
- 2번. LED의 밝기를 4개의 스위치를 사용하여 4단계로 밝기가 조정되는 스케치를 만들어 보자.
2) 코드
댓글