Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <MMA_7455.h>
- #include <Wire.h>
- MMA_7455 mySensor = MMA_7455(); // 가속도 센서를 불러온다
- int flexpin0 = 0; // 센서값을 읽기 위해 아날로그핀 0번을 flexpin0에 지정한다
- int flexpin1 = 1; // 센서값을 읽기 위해 아날로그핀 1번을 flexpin1에 저장한다
- char xVal, yVal, zVal; // 가속도 센서의 좌표값을 저장할 변수
- int flexVal0, flexVal1; // 휨 센서값을 저장할 변수
- int flex0, flex1; // 휨 센서값을 0과 1로 변환해 임시로 저장하는 변수
- char arm; //R - raise, M- Middle, L - Lie 팔의 위치
- char drct = 'S'; //I - idle, G - go, S - stop, L - left, R - right, B - backward 차량의 방향
- void setup()
- {
- Serial.begin(9600); // 센서값을 읽기 위해 시리얼 모니터를 사용할 것을 설정.
- mySensor.initSensitivity(2);
- }
- void loop()
- {
- xVal = mySensor.readAxis('x'); // 가속도 센서의 x좌표값을 불러들인다
- yVal = mySensor.readAxis('y') + 13; // y좌표값을 불러들인다
- zVal = mySensor.readAxis('z'); // z좌표값을 불러들인다
- flexVal0 = analogRead(flexpin0); // 휨센서의 값을 아날로그로 입력 받음 (0~1023)
- flexVal1 = analogRead(flexpin1);
- if (flexVal0 > 830){
- flex0 = 1;
- }else{
- flex0 = 0;
- }// 구부림 정도에 따라 신호값을 0 혹은 1로 한다.
- if (flexVal1 > 880){
- flex1 = 1;
- }else{
- flex1 = 0;
- }
- if(xVal > 40){
- arm = 'R';
- }else if(xVal < -53){
- arm = 'L';
- }else {
- arm = 'M';
- }//팔의 위치
- if (flex0 == 1 && flex1 == 1){
- if(arm == 'R'){
- drct = 'S'; // Stop
- Serial.print(drct); //무선통신을 위한 데이터 전송
- }
- }
- if(flex0 == 0 && flex1 == 1){
- if(arm == 'M'){
- drct = 'G'; // Go
- Serial.print(drct);
- }
- }
- if(flex0 == 1 && flex1 == 1){
- if(arm == 'L'){
- drct = 'B'; // Backward
- Serial.print(drct);
- }
- }
- if(flex0 == 1 && flex1 == 1){
- // Idle
- if(arm == 'M'){
- if(yVal < -40){
- drct = 'L'; // Left
- Serial.print(drct);
- }else if(yVal > 45){
- drct = 'R'; // Right
- Serial.print(drct);
- }
- }
- }else {
- drct = 'I'; // Idle
- Serial.print(drct);
- }//팔의 위치와 손가락의 구부림 여부로 송신할 데이터를 판단
- delay(100);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement