digitalRead(핀 번호) : 해당 핀에 들어오는 전압을 읽어와 0 또는 1을 출력하는 함수
전압이 5V 정도라면 1을, 0V 정도라면 0을 출력한다.
digitalRead 함수가 최종적으로 값을 출력하기에 위 그림처럼 변수나 값 대신 사용할 수도 있다.
그림의 상황에서는 Button이라는 변수가 기존에 있다고 생각하고, 저장된 번호에 해당되는 핀의 전압에 따라 sensorValue라는 int형 변수에 값이 0 또는 1이 계속해서 할당된다.
함수+
2번 게시글에서 함수를 어떤 기능을 수행하는 하나의 단위라고 설명하였다.
더 자세하게 함수를 설명하자면, 입력 값을 받고 처리하여 결과 값을 출력하는 단위라고 할 수 있다. 즉, 입력과 처리, 출력 세 가지가 함수의 구성 요소이다.
그런데 함수의 구현에서 입력과 출력은 없어도 가능하다. 따라서 구성 요소 중 처리만 남아, 어떤 기능만을 수행하는 단위로도 볼 수 있었던 것이다.
함수의 구성요소와 절차를 표현한 그림
함수 형식
아래에서 설명할 전체 함수 선언 코드
선언
int
출력할 값의 자료형. 출력할 값이 없다면 void를 대신 쓴다.
addition
함수 이름. 변수 이름 짓듯이 지으면 된다.
(소괄호)
소괄호의 내부에는입력받은 값에 붙일 이름표, 즉 변수를 기입한다. 함수를 사용할 때 전달하는 입력 값이 해당 변수에 저장된다. 그 입력 값을 저장하는 용도의 변수이기 때문에 다른 값을 저장하는 용도로는 보통 쓰지않는다. 입력 값을 받지 않는다면 괄호 사이는 빈칸으로 둔다.
처리
입력 값을 이용하여 어떤 기능을 수행한다.
return
옆에 있는 값을출력한다. 맨 처음 설정한 출력할 값의 자료형에 맞는 값을 출력할 수 있다. 출력한 뒤에는 함수를 종료한다.
사용
addition이라는 함수에 1과 2를 입력 값으로 전달한다. addition 내부의 num1, num2 변수에는 1과 2라는 값이 각각 저장된다. 내부의 result 변수에 num1, num2 변수를 더한 3이라는 값이 저장된다. result 변수 값에 해당하는 3이 출력으로 전달되고 int형 변수 addedNum에 3이 저장된다.
조건문
"만약 11이라면 22를 하고, 아니면 33을 해라." 라는 문장을 코드로 표현하면 다음과 같다.
11은 조건으로써 작동
22는 조건이 참일 때 실행된다.
33은 조건이 거짓일 때 실행된다.
즉 11의 상태에 따라 22와 33 중 하나가 선택된다.
'아니면'에 해당되는 else 문은 원하지 않으면 없어도 된다.
아래에서 분석할 스위치 조작 코드
13번 핀에 빨간 LED가 연결되있다고 가정
8번 핀에는 버튼이 연결된 회로가 있다고 가정
LED가 연결된 핀(redLED)은 출력모드(OUTPUT)로
버튼이 연결된 핀(button)은 입력모드(INPUT)로
sensorValue 라는 정수형 변수에 digitalRead함수의 출력값을 저장한다. digitalRead는 위에서 설명한 것처럼 입력값에 해당하는 핀의 전압을 읽어와서 0 또는 1을 출력한다.
sensorValue 값이 LOW(0) 라면 LOW와 HIGH는 아두이노가 미리 설정해둔 변수라고 보면 된다.
digitalWrite 함수는 입력받은 핀에 입력받은 값에 따라 0V 또는 5V 신호를 준다. 따라서 redLED에 해당하는 13번 핀에 LOW에 해당하는 전압값, 0V가 가해진다.
sensorValue 값이 LOW가 아니라면, 즉 HIGH라면
13번 핀에 HIGH에 해당하는 전압값, 5V가 가해진다.
조건문+
조건을 여러 개 쓰고 싶다면
- if문 중첩 11이라면 22를 하고
11은 아닌데 @@이라면
44를 하고
11도 @@도 아니면
33을 한다.
- 연산자 사용 11이고 22 이면 (and &)
11 이거나 22 이면 (or |) (쉬프트 누르고 원화(\) 버튼)
11이 아니면 (not !)
A > B
A가 B 초과
A < B
A가 B 미만
A == B
A가 B와 같음
A >= B
A가 B 이상
A <= B
A가 B 이하
A != B
A와 B가 같지 않음
위 연산자들은 참이면 1, 거짓이면 0으로 처리가 된다.
- 스위치 문
만약 변수 aa가 1이면 11을 하고 조건문을 나간다 2면 22를 하고 조건문을 나간다 3이면 33을 하고 조건문을 나간다 다 아니면 00을 한다.
댓글