반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 백준 전쟁 파이썬
- 백준 점프
- 소프티어 지도자동구축
- jenkins
- express mongodb
- 백준 바이러스
- 도커 컨테이너
- 백준 점프 파이썬
- 1987파이썬
- 프로그래머스
- 파이썬 평범한배낭
- 파이썬데이터분석라이브러리
- 소프티어 장애물인식프로그램
- 백준 피아노체조
- 금고털이 파이썬
- 백준알파벳파이썬
- 백준 A->B
- 장애물인식프로그램 파이썬
- MySQL완전삭제
- 백준 전쟁-전투
- MongoDB
- 지도자동구축 파이썬
- 피아노체조 파이썬
- 백준 평범한배낭
- CRUD
- express
- 백준 등수매기기
- 백준
- 등수매기기 파이썬
- 백준 예산
Archives
- Today
- Total
바위 뚫는중
[Arduino] 아두이노 시리얼 통신, 디지털 데이터 입출력 함수 본문
반응형
아두이노 Library
- C ++ 기반의 객체지향 방식으로 작성
- 종류
- 아두이노에서 제공되는 기본 라이브러리
- 아두이노 설치 directory 아래 ‘libraries’
- 써드 파티에서 제공한 확장 라이브러리
- 스케치북 directory 아래 ‘libraries’
- 아두이노에서 제공되는 기본 라이브러리
- 아두이노는 Library와 별개로 2개의 기본 클래스를 제공
- UART 시리얼 통신을 위한 Serial 클래스와 문자열 처리를 위한 String 클래스
- 별도의 헤더 파일 (*.h) 없이 사용 가능
Serial 클래스
- UART 시리얼 통신을 위한 클래스
- UART(범용 비동기화 송수신기: Universal asynchronous receiver/transmitter)는 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종
- 실제 클래스 이름은 Serial_이며, 그 객체가 Serial
- 우노는 하나의 UART 시리얼 통신 포트만을 제공하지만 메가2560은 4개의 시리얼 통신포트를 제공하고 Serial, Serial1,2,3 전용 객체가 미리 생성되어 있음
- RS-232C에서 정의된 RX, TX, GND 핀을 사용하여 통신
- UART 시리얼 통신은 시리얼 통신의 한 종류이지만, 흔히 시리얼 통신 = UART 통신을 가리킴
- RX와 TX는 서로 교차되어 연결되어야 함
- 마이크로컨트롤러의 동작 전압을 기준으로 통신: TTL 레벨 사용
- UART 시 아두이노 메가 2560의 경우 5V 기준 전압을 사용
- 다른 기타 경우에는 레벨 변환 장치가 필요, 컴퓨터 - USB 통신을 위해서도 변환 장치가 필요
- 아두이노 보드와 컴퓨터의 통신은 USB를 이용하여 이루어짐
- 아두이노 보드의 ATmega16u2 컨트롤러가 USB와 UART사이의 변환을 담당
- Mega2560의 0번 UART 채널 사용
- 0번 UART 채널에 해당하는 Serial 객체를 통해 USB를 통한 컴퓨터와의 시리얼 통신 수행
RS-232C
직렬 통신: 시리얼 통신, 한 번에 한 비트씩 전송
병렬 통신: 패럴렐 통신, 한 번에 여러 비트를 전송
시리얼 통신
시리얼 통신은 병렬보다 느리지만 간단하고 유용하고 가격이 저렴
통신을 하려면 기본적으로 3개의 선이 필요
- TXD 송신
- RXD 수신
- GND
시리얼 통신은 동기식 통신, 비동기식 통신으로 나뉘게 됨
RS232C
미국의 EIA에 의해 정해진 표준 인터페이스
“직렬 2진 데이터의 교환을 하는 데이터 터미널 장비와 데이터 통신 장비 간의 인터페이스의 제반 사항을 규정하는 것” 이라 함
RS = Recommended Standard
232 = 특정 규격의 식 별 번호
C = 버전을 의미
RS232 통신은 1:1 접속
총 9개의 핀으로 구성되어 있으나, TXD, RXD, GND만으로 사용하는 경우가 많고 나머지 핀은 시리얼 통신 시 하드웨어 컨트롤이 필요한 경우에 사용함
TTL과 RS232비교
TTL은 5볼트와 0볼트 사이를 왔다갔다 하고, RS232 신호는 10볼트와 -10볼트 사이를 왔다갔다 함
Serial 클래스 - 데이터 입출력 함수
데이터 출력 함수
Serial.begin(baudrate)
- Serial 통신을 사용하기 위한 선언
- 입력 값: baudrate: Serial 통신 속도 (9600, 115200, ,,,)
Serial.print(value, format)
- Serial 통신을 통하여 입력 값을 보냄 (개행문자 미포함)
- 입력 값
- value: 출력 값 (char, char 배열, String, 정수, 실수 등)
- format: 출력 형식
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.println("hello!")
}
진법과 소수점 이하 자리수
Serial.println(n, BIN); //이진수
Serial.println(n, DEC); //십진수, 기본값이므로 생략 가능
Serial.println(n, HEX); //십육진수
Serial.println();
Serial.println(f); //소수점 두번째 자리까지 기본값
Serial.println(f, 5); //소주점 다섯번째 자리까지
데이터 입력 함수
int available(void)
- 매개변수: 없음
- 반환값: 시리얼 통신 수신 버퍼에 저장된 데이터의 바이트 수
int peek(void)
- 매개변수: 없음
- 반환값: 시리얼 통신 수신 버퍼의 첫 번째 바이트 데이터 또는 -1
int read(void)
- 매개변수: 없음
- 반환값: 시리얼 통신 수신 버퍼의 첫 번째 문자 데이터 또는 -1
void setup(){
Serial.begin(9600);
}
void loop(){
if(Serial.available()>0){
byte data = Serial.read();
Serial.print("Echo back: ");
Serial.print(data);
Serial.print((char)data);
}
}
반응형
'Arduino' 카테고리의 다른 글
[Arduino] 아두이노 LED 블링크, 버튼 연결 저항 (0) | 2023.03.04 |
---|---|
[Arduino] 마이크로 컨트롤러와 아두이노, IDE 설치 (0) | 2023.03.04 |