++실습 예제 #10 : 초음파센서로 거리 측정하기
CODE
int echoPin = 12; int trigPin = 13; //초음파 센서의 핀번호를 설정한다. void setup(){ Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); // trig를 출력모드로 설정, echo를 입력모드로 설정 } void loop(){ float duration, distance; digitalWrite(trigPin, HIGH); delay(10); digitalWrite(trigPin, LOW); // 초음파를 보낸다. 다 보내면 echo가 HIGH 상태로 대기하게 된다.
duration = pulseIn(echoPin, HIGH); // echoPin 이 HIGH를 유지한 시간을 저장 한다. distance = ((float)(340 * duration) / 10000) / 2; // HIGH 였을 때 시간(초음파가 보냈다가 다시 들어온 시간)을가지고 거리를 계산 한다. Serial.print(distance); Serial.println("cm"); // 수정한 값을 출력 delay(500); }
++실습 예제 #10-1 : RGB LED 와 초음파센서 (예제#9-2 응용)
++실습 예제 #10-2 : RGB LED 여러가지 색깔 표현하기 (for문)
++실습 예제 응용 블루투스 통신
시리얼 통신으로 1인풋 신호를 받으면 LED가 점멸합니다. 예제 앱을 설치 하지못해서 범용앱을 검색해서 사용하여 테스트 하였습니다.
CODE
#include <SoftwareSerial.h> // 블루투스 통신을 위한 SoftwareSerial 라이브러리를 불러온다.
SoftwareSerial BTSerial(2, 3); // SoftwareSerial(RX, TX)
byte buffer[1024]; // 데이터를 수신 받을 버퍼
int bufferPosition; // 버퍼에 데이타를 저장할 때 기록할 위치
boolean temp = 0;
void setup(){
BTSerial.begin(9600);
Serial.begin(9600);
pinMode(13, OUTPUT);
bufferPosition = 0; // 버퍼 위치 초기화
}
void loop(){
if (BTSerial.available()){ // 블루투스로 데이터 수신
byte data = BTSerial.read(); // 수신 받은 데이터 저장
Serial.write(data); // 수신된 데이터 시리얼 모니터로 출력
buffer[bufferPosition++] = data; // 수신 받은 데이터를 버퍼에 저장
if(data == '1'){ // 블루투스를 통해 '1' 이 들어오면
if(temp == 0){ // LED가 꺼있을 경우 LED를 켭니다.
digitalWrite(13, HIGH);
temp = 1;
}else{ // LED가 켜져있을 경우 LED를 끕니다.
digitalWrite(13, LOW);
temp = 0;
}
}
if(data == '\n'){ // 문자열 종료 표시
buffer[bufferPosition] = '\0';
bufferPosition = 0;
}
}
}
++다양한 블루투스 통신 예제들++
https://www.kocoafab.cc 에 다양한 예제들이 있다.
프로젝트 / 스터디 사이트
instructables.com http://hackaday.com/ circuits.io arduino.cc io.adafruit.com sparkfun.com kocoafab.cc
부품구매처
부품(온라인) eleparts.co.kr devicemart.co.kr www.mechasolution.com http://artrobot.co.kr/ http://www.digikey.kr/ vctec.co.kr/
부품(오프라인) ds-parts.co.kr http://robot.co.kr/
fab academy 한글자막 넣으심
6강 part1 https://www.youtube.com/watch?v=Dh95e7cXXd4
6강 part2 https://www.youtube.com/watch?v=256OzVSktZE
7강 part1 https://www.youtube.com/watch?v=9LPY1it2lqA
7강 part2 https://www.youtube.com/watch?v=eb7ljBsyBm4
통신
Serial은 연속적으로 직렬로 주고 받는 통신이다.
신호가 가거나 오거나 한번에 한번씩 보낸다.
Parallel은 여러가지 신호를 동시에 보낼 수 있는 병렬방식이다
빠른 통신이 필요할때는 병렬방식이 유리하다.
시리얼 통신은 모스 부호와 비슷해서 중간에 신호를 듣게 되면 어디가 시작점이고 끝점인지 모를때 신호를 파악 할 수가 없다. 시작과 끝을 표시할 시리얼 클럭이 필요하다. 일렬로 정렬되 2진수 신호를 어느 타이밍에 읽을 것이가를 정하는 것이 baudrate이다.
++시리얼 통신_보(baud) 레이트와 비트레이트의 관계+자료메모
보 레이트는 초당 의미있는 정보의 전송갯수를 의미한다. 반면 비트레이트는 초당 전송되는 비트수를 의미한다. 예를 들어 9600 bps의 비트레이트로 아스키코드(1 byte = 8 bit)정보를 전송하는 경우 9600 bit / 8 bit = 1200 즉, 1200개의 아스키 코드를 표현 할 수 있는 정보 단위를 전송 할 수 있다. 따라서 9600 bps는 1200 baud rate라고 할 수 있다. 반면에 9600 bps의 전송속도로 bit 를 전송하는 경우에는 보레이트가 비트레이트와 같은 9600 baud rate가 된다.
보 레이트 - 초당 의미있는 정보의 전송량
비트레이트 - 초당 비트 전송량
출처: http://goodjian.tistory.com/entry/보baud-레이트와-비트레이트의-관계 [Slow walking man]
시얼얼 통신에 대해 좀더 알아보자
참고) 몽구스 프로그래밍
https://m.blog.naver.com/PostView.nhn?blogId=yuyyulee&logNo=220301424499&proxyReferer=https:%2F%2Fwww.google.co.kr%2F
다이렉트로 아두이노끼리 연결하여 통신 할 수 있다.
UART의 정의 Universal asynchronous receiver/transmitter
https://ko.wikipedia.org/wiki/UART
통신방식에 따라 1:N 1대 다수 N:N 다수대 다수 등 여러가지로 나뉜다
SPI
프로세싱 & 아두이노 https://processing.org/download/
프로세싱을 이용하여 아두이노와 인터랙션하는 컴퓨터그래픽 이미지를 만들수 있다