본문 바로가기
대한상공회의소 스마트팩토리 교육/IoT 디바이스 개발

[IoT 디바이스 개발] 아두이노«수업-2» : 조건문을 활용한 LED 제어(if else / switch case / bitWrite 함수)

by 나는영하 2022. 1. 26.

※ 주의사항 

본 블로그는 수업 내용을 바탕으로 제가 이해한 부분을 정리한 블로그입니다.
본 내용을 참고로만 보시고, 틀린 부분이 있다면 지적 부탁드립니다!

감사합니다😁

 

안녕하세요!!

오늘은 아래와 같은 내용을 확인해보겠습니다.

 

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) 코드

1번 문제 코드(좌) / 2번 문제 코드(우)

 

댓글