질문게시판 > 아두이노 모터+자이로센서+서보모터+led 제어 질문입니다.

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

아두이노 모터+자이로센서+서보모터+led 제어 질문입니다.

페이지 정보

작성자 Mobile 작성일22-04-21 16:40 조회2,351회 댓글3건

본문

#include <MPU6050.h>

#include <I2Cdev.h>

#include <Servo.h>

#include <Wire.h>

 

MPU6050 mpu;

 

int16_t ax, ay, az;

int16_t gx, gy, gz;

int en1 = 9;

int in1 = 8;

int in2 = 7;

char ch;

boolean dir;

Servo myservo;

 

int val;

int prevVal;

void setup()

{

  pinMode(en1, OUTPUT);

  pinMode(in1, OUTPUT);

  pinMode(in2, OUTPUT);

  pinMode(10, OUTPUT);

  pinMode(11, OUTPUT);

  pinMode(12, OUTPUT);

  pinMode(13, OUTPUT);

  Wire.begin();

  Serial.begin(9600);

  Serial.println("Set Motor Direction & Speed");

  Serial.println("Initialize MPU");

  mpu.initialize();

  Serial.println(mpu.testConnection () ? "Connected" : "Connection failed");

  myservo.attach(6);

}

  void loop()

  {

    if(Serial.available())

    {

      ch=Serial.read();

      if(ch=='+')

      {

        int speed=Serial.parseInt();

        dir=true;

        Serial.print("Motor Direction & Speed : ");

        Serial.print("+");

        Serial.println(speed);

        setMotor(speed, dir);

      }

      else if(ch == '-')

      {

        int speed = Serial.parseInt();

        dir = false;

        Serial.print("Motor Direction & Speed : ");

        Serial.print("-");

        Serial.println(speed);

        setMotor(speed, dir);

      }

      else

      {

        analogWrite(en1, 0);

        Serial.print("Motor Direction & Speed :");

        Serial.println(0);

      }

    }

    mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

    val = map(ay, -8191,8191,0,179);

    if(val != prevVal)

    {

    myservo.write(val);

    prevVal=val;

    }

    delay(50);

  {

    digitalWrite(10, HIGH);

    delay(150);

    digitalWrite(10, LOW);

    delay(150);

    digitalWrite(11, HIGH);

    delay(150);

    digitalWrite(11, LOW);

    delay(150);

    digitalWrite(12, HIGH);

    delay(150);

    digitalWrite(12, LOW);

    delay(150);

    digitalWrite(13, HIGH);

    delay(150);

    digitalWrite(13, LOW);

    delay(150);

  }

  }

 void setMotor(int speed, boolean dir)

{

  analogWrite(en1, speed);

  digitalWrite(in1, !dir);

  digitalWrite(in2, dir);

연결하고 구동 시 모터가 회전하지 않고 속도 조절하는걸 넣었는데 조절이 안됩니다. 어떻게 수정해야 할까요
  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 3

조회수 : 2,351

master님의 댓글

master 작성일

모터 테스트는
다른 코드는 모두 빼고
가장 간단한 모터 구동 예제로 테스트 하세요

Mobile님의 댓글

Mobile 댓글의 댓글작성일

늦게 답변드려 죄송합니다.
모터는 개별로 테스트를 시행해을때 정상구동되는것을 확인하였고, 자이로+서보모터+led는 정상구동하였습니다.
모터를 추가하면 모터만 구동이 되지 않는데 이유를 모르겠습니다..

master님의 댓글

master 작성일

#include <MPU6050.h>
#include <I2Cdev.h>
#include <Servo.h>
#include <Wire.h>
MPU6050 mpu;
Servo myservo;
int en1=9,in1=8,in2=7;
//
int16_t ax,ay,az,gx,gy,gz,val,prevVal;
char ch;
boolean dir;
//
void setup(){
  pinMode(en1,OUTPUT); pinMode(in1,OUTPUT); pinMode(in2,OUTPUT);
  pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); pinMode(13,OUTPUT);
  Wire.begin();
  Serial.begin(9600);
  Serial.println("Set Motor Direction & Speed"); Serial.println("Initialize MPU");
  mpu.initialize();
  Serial.println(mpu.testConnection () ? "Connected" : "Connection failed");
  myservo.attach(6);
}
//
void loop(){
  if(Serial.available()){
    ch=Serial.read();
    if(ch=='+'){
      int speed=Serial.parseInt();
      Serial.print("Motor Direction & Speed : "); Serial.print("+"); Serial.println(speed);
      dir=true; setMotor(speed,dir);
    }
    else if(ch=='-'){
      int speed=Serial.parseInt();
      Serial.print("Motor Direction & Speed : "); Serial.print("-"); Serial.println(speed);
      dir=false; setMotor(speed,dir);
    }
    else{
      analogWrite(en1,0);
      Serial.print("Motor Direction & Speed :"); Serial.println(0);
    }
  }
  mpu.getMotion6(&ax,&ay,&az,&gx,&gy,&gz);
  val=map(ay,-8191,8191,0,179);
  if(val!=prevVal){ myservo.write(val); prevVal=val; }
  delay(50);
  //
  digitalWrite(10,1); delay(150); digitalWrite(10,0); delay(150);
  digitalWrite(11,1); delay(150); digitalWrite(11,0); delay(150);
  digitalWrite(12,1); delay(150); digitalWrite(12,0); delay(150);
  digitalWrite(13,1); delay(150); digitalWrite(13,0); delay(150);
}
//
void setMotor(int speed,boolean dir){
  analogWrite(en1,speed); digitalWrite(in1,!dir); digitalWrite(in2,dir);
}
1.
Serial.println(speed);
속도 전달이 제대로 되는지 확인하시고, 가급적 255에 가까운 값으로 테스트 하세요
//
2.
en1 핀에 pwm 출력이 제대로 나오는지 확인하시고(테스터기 또는 오실로스코프)
pwm 출력이 제대로 나오지 않는다면 PWM 핀을 변경해서 다시 테스트 하세요
//
3.
전원장치 전류 부족으로 전압강하가 되는지도 체크하세요

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
질문 atmega 128 led 순차적 제어입니다 졸업예정  22-06-09
답변 답변 : atmega 128 led 순차적 제어입니다 master  22-06-09
질문 아두이노 우노 온습도센서와 LED 댓글[7] 체펠리  22-06-08
질문 키패드 led 인체감지 질문 면지지  22-06-02
답변 답변 : 키패드 led 인체감지 질문 댓글[3] master  22-06-02
질문 atmega128에서 스위치1개는LED, 스위치 1개는… aasdw  22-05-26
답변 답변 : atmega128에서 스위치1개는LED, 스위… 댓글[1] master  22-05-26
질문 ATMEGA128 0번핀과1번핀 스위치를 누르면 LED댓글[3] dfas123  22-05-11
질문 Atmega128 led 왕복 점등 및 스위치 방향 전… 댓글[1] MaeuM  22-05-06
질문 LED 점등 예제 질문입니다. 댓글[4] 첨부파일홍머생  22-05-01
질문 Atmega128 led 점등 Eleccc  22-05-01
답변 답변 : Atmega128 led 점등 댓글[8] master  22-05-01
질문 (ATmega128 LED점등)이 부분이 왜 오류가 뜨… 댓글[3] 첨부파일isdpolicy  22-04-29
질문 아두이노 모터+자이로센서+서보모터+led 제어 질문입니… 댓글[3] Mobile  22-04-21
질문 마이크로 스위치 입력하면 LED출력 댓글[1] 두두칠리  22-04-18
질문 AVR, atmega128에서 led 점등 코드 댓글[5] 제발도와주세요  22-04-14
질문 Led 점등시키기 댓글[1] 하이용  22-04-12
질문 마이크로프로세서 실습키트LED 점등시키기 댓글[1] 하이용  22-04-12
질문 Avr atmega128 led 제어 질문드리겠습니다 임연수구이  22-04-04
답변 답변 : Avr atmega128 led 제어 질문드리… 댓글[1] master  22-04-04
질문 아두이노 LED 실행코드 댓글[5] PEANUTS  22-04-04
질문 가변저항 값으로 4개의 LED 밝기를 조절하기 댓글[3] 웰치스  22-04-03
질문 아두이노 8x8 led로 가위바위보 게임하기 댓글[3] jsham21  22-04-02
질문 아두이노 조이스틱를 이용한 rgb led 표현 + rg… 댓글[5] 나Ks  22-03-25
질문 아두이노 led 시간제어질문이요!!...ㅠ 댓글[1] dd1304  21-12-18
질문 atmega128 초음파센서(HC-SR04)를 이용한 … 댓글[2] 호2  21-12-04
질문 토글스위치와 블루투스를 동시에 이용하여 led한개를 제… 댓글[3] 첨부파일화일  21-12-03
질문 안녕하세요 아트메가128 LED 질문입니다! 댓글[2] 첨부파일아트메가공부중  21-11-28
질문 atmega 128 을 이용한 LED 댓글[1] 초보오  21-11-22
질문 artmega128 초음파 센서로 LED 점등하기 댓글[1] 첨부파일maximum  21-11-22
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전