초음파 모듈을 이용하여 
거리를 측정해보자.

사용한 초음파 모듈은
이다.

핀이 3개로 SIG,VCC,GND다
SIG로 아두이노의 디지털 포트를 연결
출력과 입력을 교대로 받는다.
즉 초음파 신호를 보내고 반사되어 되돌아 오는 초음파를 입력 받는다.
그 시간 차이를 이용하면 거리를 계산할 수 있다.

소스 스케치
-----------------------------------------------------------------------------------
/* 초음파센서를 이용한 거리 측정*/

int ulPin=9;   //초음파 SIG연결 핀
void setup(){
  Serial.begin(9600);   //컴퓨터화면에 data값을 확인할 수 있도록 시리얼 통신 설정
}
void loop(){
  pinMode(ulPin,OUTPUT);     //초음파센서를 출력으로 설정
  digitalWrite(ulPin, LOW);  // 신호를 끄고 (2마이크로 초동안)
  delayMicroseconds(2);
  digitalWrite(ulPin, HIGH); //초음파 신호를 보낸다(5마이크로 초동안)
  delayMicroseconds(5);
  digitalWrite(ulPin, LOW); // 신호를 끈다.

  pinMode(ulPin, INPUT);    // 초음파센서를 입력으로 설정
  long duration = pulseIn(ulPin,HIGH);  
                              // 초음파센서에 반사되어 돌아온 초음파가 측정될 시간을 저장(마이크로초 단위)
  long cm = mtocm(duration);  // cm거리 계산 함수
  long inch = mtoinch(duration);  //inch거리 계산 함수
  Serial.print(cm);
  Serial.print("cm  ");
  Serial.print(inch);
  Serial.print("inch ");
  Serial.println();

  delay(500);
}
long mtocm(long a){
return a/29/2;      //초음파는 1초에 340m이동한다. 즉 1000000마이크로 초에 34000cm를 이동한다.
                        //따라서 cm거리는 시간x속력으로 a는 왕복시간이므로 (a/2)x34000/1000000이다.
}
long mtoinch(long b){
return b/74/2;    // 1000000마이크로 초동안 대략 13386inch를 이동하므로
                      // inch거리는 시간x속력으로 b는 왕복시간이므로 (b/2)x13386/1000000이다.
}

/* pulseIn(ulPin,HIGH)은
ulPin이 HIGH값을 입력받을때까지의 시간을 마이크로초단위로 읽어온다. */
--------------------------------------------------------------------------------------------


작동 영상은 시리얼LCD에 출력하는 영상이다.



'아두이노_프로세싱 > 아두이노' 카테고리의 다른 글

LCD모듈과 Serial LCD 사용  (1) 2012.06.26
블루투스 장치를 이용한 초음파측정값 전송  (0) 2012.06.26
블루투스 모듈(RN-42) 설정  (2) 2012.06.26
soft potentiometer + RGBLED  (0) 2012.06.26
RGB LED  (0) 2012.06.26

블루투스 모듈(RN-42) 설정


다른 블루투스 장비와 아두이노를 통신하기 위해서
아두이노에 블루투스 모듈을 연결 하면 된다

즉. "블루투스기능이 있는 pc <->블루투스모듈아두이노" 의 연결로
아두이노에서 수행한 데이터를 블루투스를 통해 pc로 보내거나
pc에서 입력한 값을 블루투스를 통해 아두이노에 보내 작동하도록 스케치할 수 있다.

이렇게 하기 위해서는 아두이노가 블루투스 통신할 수 있도록 블루투스 모듈을 구입 연결 해야한다.

따라서 이러한 기능을 가능하게 하기위해
이번에 사용한 블루투스 모듈은
 

아트로봇에서 구입한 모듈이다


일단 블루투스 모듈을 사용할 수 있도록 설정을 변동할 필요가 있는데 
블루투스 모듈마다 설정모드로 진입하는 방법 및 설정 명령은 다르므로 구입시 소개 페이지를 잘 살펴야한다.
(이 모듈 하나 설정 하겠다고 자료를 쳐다보면서 일주일 이상 시간을 보냈다)
 
(연결 핀번호가 "1234"와 기본baudrate가 115200이라는 것을 알고 있다면
아래 설정없이 아두이노에서 스케치하면 된다.) 
 
 
일단 모듈에 전원을 넣고
블루투스 기능이 있는 pc에서 블루투스 장치 추가하여
블루투스 모듈을 추가한다.
추가시 연결핀번호를 입력후 연결
연결 핀번호는 "1234"이다.(이모듈의 경우)
완료 하면 pc에서 블루투스 모듈이 장치로 추가되고
장치관리자에서 추가된 블루투스 모듈이 com포트를 몇번을 쓰는지 확인한다. 
(이모듈은 com6번으로 추가됨)
 
통신터밀널이나 시리얼 통신 프로그램 컴포트마스터(http://withrobot.com/ 에서 구함), 
또는 hercules_3-2-8 (http://www.hw-group.com/products/hercules/index_en.html)로 블루투스와 연결한다.
 
컴포트 마스터와 연결 그림

 
그림1번에서 블루투스 모듈 컴포트와 baudrate를 맞추고
(이 모듈은 baudrate는 기본으로 115200이다 위그림은 9600으로 바꾼 상태에서 다시 115200설정하는 화면이다)
 
그림2번에서 openport클릭하면 블루투스 모듈이 빨간불에서 녹색불로 바뀌어 연결됨을 표시한다.
 
그림3에서 command모드로 진입하기 위해서 $$$ 입력후 send 클릭하면
 
그림4번에서 CMD가 찍히며 command모드로 진입했음을 알린다.
(블루투스 모듈이 노색불이 켜져있는 상태어세 빨간불이 번적거린다.)
 
그림3번에서 "D" 입력
체크박스에 체크(CR/LF 체크- 개행 및 커서가 줄 맨처음으로 이동 ->즉 앤터의미)후 send클릭하면
현재 모듈의 상태를 보여준다 그림4번
***Settings***
BTA=000XXXXXXXX
BTName=RN42-XXX
Baudrt=115K
Parity=None
Mode  =Slav
Authen=0
Encryp=0
PinCod=1234
Bonded=0
Rem=NONE SET

baudrate를 115200으로 바꾸기 위해서 그림3에서
"SU,115K" 입력후 체크박스 체크후 send하면
AOK 라고 나타나면 옳게 설정된 것이다.

이후 command 모드를 나오려면
"---" 입력후 체크박스 체크후 send 클릭

이것으로 아두이노에서 블루투스모듈을 사용하기 위해
baudrate를 115200로 또는 9600으로 설정을 변경하는 방법이다.

(사실 115200으로 기본 그대로 설정 변경 없이 사용해도 된다.
아두이노 스케치에서 115200으로 스케치하면 사용가능하다.
그렇지만 이 모듈의 설정을 변경하고자 할때 설정 모드로 진입하는 방법을 설명하고자 작성한 글이다.)

==============================================================
=사용된 모듈 설정 명령=
$$$ -> command 모드 진입
--- -> command 모드를 빠져나옴
SU,9600(115K)   -> baudrate 설정
D -> 현재 상태 확인)
는 모두
이 모듈을 제어하는 명령으로
소개페이지 http://www.sparkfun.com/products/10269  를 참고 해야한다.
===============================================================

soft potentiometer + RGBLED 

soft potentiometer 로 RGBLED를 제어하기
이 예제는 아두이노 가이드북에 나온 내용이다.
soft potentiometer는 손으로 접촉하는 위치에 따라
저항값이 달라지는 센서다.
이 센서값을 받아 RGBLED를 켜보자.

아두이노와 연결 사진


스케치 소스
-------------------------------------------------------------------------------
int sensor =A0;   //soft potentiometer의 중간핀과 연결
int sensorval = 0;
int redPin =9; //RGBLED 연결핀
int greenPin =10;  //RGBLED 연결핀
int bluePin =11;   //RGBLED 연결핀
int redval = 0;   //RGBLED의 각 색에 출력할 값
int greenval = 0;
int blueval = 0;

void setup(){
  }

void loop(){
  sensorval = analogRead(sensor);
  redval = constrain(map(sensorval, 0,512, 255, 0),0,255);
  greenval = constrain(map(sensorval, 0,512, 0, 255),0,255)
                 -constrain(map(sensorval, 512,1023, 0, 255),0,255);
  blueval = constrain(map(sensorval, 512,1023, 0, 255),0,255);
//센서에 의해 입력되는 0~1023 사이의 값을 각각의 R G B 색을 표현하도록 값을 변환
 
  analogWrite(redPin,redval);
  analogWrite(greenPin,greenval);
  analogWrite(bluePin,blueval);
  delay(200);
}
 -----------------------------------------------------------------------------


작동 영상

'아두이노_프로세싱 > 아두이노' 카테고리의 다른 글

초음파 센서 활용  (0) 2012.06.26
블루투스 모듈(RN-42) 설정  (2) 2012.06.26
RGB LED  (0) 2012.06.26
2button으로 LED ON OFF하기 constrain()함수  (0) 2012.06.26
FND  (0) 2012.06.26

+ Recent posts