본문 바로가기
아두이노_프로세싱/아두이노

LCD쉴드 + 가속도센서 각도 측정

by 돌돌쌤 2013. 6. 28.

가속도 센서로 각도를 측정하여

자작한 LCD쉴드에 출력

 

serial모니터로 출력하여 측정된값을

컴퓨터로 출력하여 확인하지 않고

아두이노에 LCD를 부착하여 측정값을 바로

확인할수 있도록 하였다.

 

LCD쉴드 http://eskelt.tistory.com/78  글 참고

가속도센서 http://eskelt.tistory.com/79 글 참고

가속도센서로 각도측정 http://eskelt.tistory.com/80 글 참고

 

소스 스케치

============================================================================

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
float x,y,z;

void setup(){
  lcd.begin(16, 2);
}

void loop(){
 
  x = analogRead(0);
  y = analogRead(1);
  z = analogRead(2);
 
  float xsintheta = constrain(mapinfloat(x,268,406,-1,1),-1,1);
  float ysintheta = constrain(mapinfloat(y,267,406,-1,1),-1,1);
  float zsintheta = constrain(mapinfloat(z,275,412,-1,1),-1,1);
 
 
 
  float xtheta = asin(xsintheta)*180/PI;
  float ytheta = asin(ysintheta)*180/PI;
  float ztheta = asin(zsintheta)*180/PI;
 
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("x: ");
  lcd.setCursor(5,0);
  lcd.print(xtheta);
 
  lcd.setCursor(0,1);
  lcd.print("y: ");
  lcd.setCursor(5,1);
  lcd.print(ytheta);
 
  delay(100); 
}

float mapinfloat(float i, float imin,float imax, float omin, float omax){
  float o = (i-imin)*(omax-omin)/(imax-imin) + omin;
  return o;
}

============================================================================

 

작동 영상

영상에서는 x축만 출력하였다.

참고로 -70~70도 사이에서는 비교적 정확하게 측정되나

-70과 70도를 벗어나면서 정확한 값을 측정하기 어려움.