2021. 11. 12. 01:27ㆍ학교수업
아두이노 IDE
- 작고 간단한 통합개발환경
- 초보자를 위해 꼭 필요한 기능들만으로 구성
- 한 번의 클릭으로 컴파일에서 업로드까지 진행
- JAVA로 구현하여 OS 간 이식성이 뛰어남
- 디버깅 기능이 존재하지 않음
pinMode : 지정한 핀(pin)의 모드(mode) 설정
- void pinMode(uint8_t pin, uint8_t mode);
digitalWrite : 지정한 핀(pin)으로 값(value) 출력
- void digitalWrite(uint8_t pin, uint8_t value);
digitalRead : 지정한 핀(pin)의 상태를 반환
- int digitalRead(uint8_t pin);
Unity & Arduino 연결
- PC는 외부 장비와 통신하기 위해 시리얼 통신(키보드, 마우스)과 병렬 통신(프린터)을 제공
- 시리얼 통신은 병렬 통신에 비해 더 멀리 보낼 수 있다.
- Baud Rate(통신속도)
1) 1초당 전송되는 bit수(bit per second)
2) 통신 속도에 영향을 받지 않으면 통상9600
3) 아두이노는 최대 115200 bps까지 지원
시리얼 통신 함수
- Serial.begin(통신속도) : 시리얼 통신의 소도를 설정
- Serial.print(출력값) : 데이터를 문자열 단위로 출력
- Serial.write() : 데이터를 byte 단위로 출력
- Serial.available() : 수신되어 저장되어 이는 byte수 리턴(최대 64)
- Serial.read() : 버퍼에서 1 바이트 read, 버퍼가 비어 있으면 -1 리턴
- Serial.end() : 통신 종료
- Serial.flush() : 현재 전송하고 있는 시리얼 데이터가 전송완료가 될 때까지 대기
아두이노 IDE 혹은 시리얼 monitor 와 unity를 동시에 사용할 수 없음.
-> 동일한 포트를 2개 application에서 사용 불가
Upload 할 때도 unity가 실행되어 있으면 안된다.(확인 중요)
Unity에서 시리얼 데이터 읽기
- 시리얼 통신 함수 사용을 위해 Api Compatibility Level 을 .NET 2.0 -> .NET 4.0으로 변경
-> start에서 arduino = new SerialPort("COM3", 9600); arduino.Open();으로 연결
-> update에서 int k = arduino.ReadByte(); print(k);
ReadByte함수는 읽을 데이터가 있을 때 까지 무한 대기
-> Update에서 ReadByte 호출 시 Update가 제대로 실행이 안됨
-> 이를 해결하기 위해 start에 arduino.ReadTimeout = 10;을 이용해 읽는 것을 최대 10ms만 대기하고 데이터가 없으면 에러 발생을 시킴(try~catch를 이용하여 update함수를 구현)
ReadByte함수 대신 ReadLine함수를 호출해 line단위로도 데이터를 읽을 수 있다.
VSPE(Virtual Serial Port Emulator)로 가상 포트 만들기 가능
'학교수업' 카테고리의 다른 글
임베디드기초 10주차 (0) | 2021.11.15 |
---|---|
웹개발기초 11주차 (0) | 2021.11.14 |
정보보호개론 9주차 (0) | 2021.11.09 |
임베디드 기초 9주차 (0) | 2021.11.08 |
사물인터넷의 이해 9주차 (0) | 2021.11.07 |