BASIC4MCU | 질문게시판 | 답변 : 아두이노 코딩 질문드립니다!
페이지 정보
작성자 master 작성일2019-05-27 22:07 조회5,777회 댓글2건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=8878
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-05-27 오후 10:13:09// by Ok-Hyun Park//#include <Wire.h>const int MPU=0x68; //MPU 6050 의 I2C 기본 주소#define TRIG 3 //초음파#define ECHO 4 //초음파int Buzzer=9; //부저int infrared=5; //적외선int pwm=7; //모터int dir=6; //모터//int16_t GyX;//void setup(){Wire.begin(); //Wire 라이브러리 초기화Wire.beginTransmission(MPU); //MPU로 데이터 전송 시작Wire.write(0x6B); // PWR_MGMT_1 registerWire.write(0); //MPU-6050 시작 모드로Wire.endTransmission(true);pinMode(TRIG,OUTPUT);pinMode(ECHO,INPUT); //초음파pinMode(infrared,INPUT);pinMode(Buzzer,OUTPUT);Serial.begin(9600);pinMode(7,OUTPUT); //모터pinMode(6,OUTPUT); //모터}//void loop(){int state=digitalRead(infrared);if(state==1){ //적외선 감지 xfirst();}else{digitalWrite(Buzzer,HIGH);analogWrite(pwm,255);digitalWrite(dir,HIGH);}}//void first(){float duration,distance;digitalWrite(TRIG,1); delay(1); digitalWrite(TRIG,0);duration=pulseIn(ECHO,1); distance=((340*duration)/1000)/2;//Serial.print(distance); Serial.println("mm");Wire.beginTransmission(MPU); // 데이터 전송시작Wire.write(0x3B); // register 0x3B(ACCEL_XOUT_H),큐에 데이터 기록Wire.endTransmission(false); // 연결유지Wire.requestFrom(MPU,14,true); // MPU에 데이터 요청//데이터 한 바이트 씩 읽어서 반환GyX=Wire.read()<<8|Wire.read(); // 0x43(GYRO_XOUT_H)&0x44(GYRO_XOUT_L)Serial.print("|GyX="); Serial.print(GyX);//if(GyX>2500||GyX<-2500){ digitalWrite(Buzzer,0); analogWrite(pwm,255); digitalWrite(dir,0); }else if(distance>150) { digitalWrite(Buzzer,0); analogWrite(pwm,255); digitalWrite(dir,0); }else { digitalWrite(Buzzer,1); analogWrite(pwm,255); digitalWrite(dir,1); }delay(1000);}
analogWrite(pwm,255);
모터 데이터시트를 체크하세요
이 값이 10cm 이동한다면
analogWrite(pwm,51);
1/5 이동하기 위해서는 51을 출력하면 되겠죠
댓글 2
조회수 5,777김정훈님의 댓글
김정훈 작성일감사합니다! 조언 해주신 거 참조해서 다시 코딩했는데, 속도값만 줄어들 뿐 원하는 출력값을 얻을수가 없었습니다. 다시 조언 얻고싶어 재 질문글 작성했습니다!
master님의 댓글
master
어떤 리니어 모터를 사용하는지 국가안보상 비밀이 아니라면
판매사이트 링크라든가 데이터시트등 글을 읽는 분들이 알 수 있도록 자료를 첨부하세요