🐢 Serial
🦖 라이브러리
- 특정 기능을 수행하기 위한 클래스와 함수들을 묶어서 제공해 주는 형태
🦖 아두이노 라이브러리
- 아두이노는 Serial 라이브러리를 기본으로 제공
- Serial의 print, println, read 등의 함수를 사용하여 데이터를 주고 받을 수 있음
🐢 아두이노 함수와 아두이노 라이브러리
아두이노 함수 | 아두이노 라이브러리 |
---|
MCU의 기본 기능을 제공 | MCU의 기능, 주변 장치 제어 등의 기능을 제공 |
pinMode, digitalWrite 등 | Serial, String, SoftwareSerial 등 |
🐢 시리얼 통신을 위한 Serial
- 시리얼 통신을 하기 위해서는 먼저
양쪽의 통신 속도를 맞추어야 한다.
🦖 bps
- bit-per-second
- 1초당 전송할 수 있는 비트의 수
- 통신 속도를 나타내는 단위
🐢 Serial.begin(bps)
🐢 Serial.println("문자열");
- Serial.print와 같은 역할
- 다음에 또 print가 오게 되면 자동으로 줄 바뀜이 적용되어서 출력
🐢 디지털 신호 입력방법
- 핀을 입력으로 사용하도록 설정
(pinMode를 설정하지 않더라도 기본적으로 INPUT으로 간주)pinMode(핀번호, INPUT);
- 연결된 핀으로부터 디지털 신호 값을 읽어 옴
(핀이 5V에 연결되었을 때는 1, GND에 연결되었을 때는 0을 읽음)
digitalRead(핀번호);
🐢 아두이노 함수의 반환 값
int digitalRead(pin);
- digitalRead는 pin으로부터 디지털 신호 값을 읽어오는 함수
- 읽어온 정수형의 값을 반환
🐢 변수명을 지을 때 주의할 점
-
영문자, _, 숫자로만 구성될 수 있으며, 첫 글자는 숫자로 시작할 수 없음
-
프로그램 예약어(if, for, int, setup 등)은 변수의 이름이 될 수 없음
-
변수의 이름에는 공백이 들어갈 수 없음
-
변수의 이름은 대소문자를 구분하므로 유의
-
변수는 선언된 곳이 어디인지에 따라 유효한 공간이 결정
-
setup과 loop함수 밖의 공간에 선언된 변수는 스케치 내 어디서든 사용할 수 있음
-
loop()의 {} 내에 선언된 변수는 loop 함수 내에서만 사용할 수 있음
🐢 플로팅(floating) 현상
- 버튼을 누르지 않은 상태는 아무 것도 연결되지 않은 상태와 동일
- 핀에 입력되는 값은 5V(1)인지 GND(0) 인지 장담할 수 없는 값이 됨
👉 버튼의 상태를 알 수 없는 floating 현상이 발생
🐢 플로팅 현상 해결 방법
- 풀다운 저항
- 플로팅 상태일 때 값을 GND로 끌어 내린다는 의미
- 풀업 저항
- 플로팅 상태일 때 값을 5V로 끌어 올린다는 의미
- 아두이노는 내부적으로 풀업 저항 기능을 제공
- 각 핀에 5V와 내부저항이 연결되어 있어 풀업 저항을 구성하지 않아도 사용가능
// pinMode를 설정할 때 INPUT_PULLUP으로 설정
pinMode(2, INPUT_PULLUP);