정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

dc모터 구동 스피드
tddse | 2020-05-20
 

1. 프로젝트 사용한 보드 종류

  (EX : 오렌지보드, 오렌지 BLE보드, 아두이노 UNO 등)

 아두이노 UNO R3

 

2. 사용한 개발 프로그램명

  (EX : 아두이노 IDE, 스크래치, mBlock 등)

 

 타사이트 웹에서 코드와 보드 구성

3. 사용한 센서 모델명

  (센서 모델명을 자세하게 적어 주실 경우 더 정확하게 확인할 수 있습니다.)

 

 

4. 연결한 회로 설명 (또는 이미지)

 

 대략 설명하자면 스위치 4개 dc모터 1개 npn트랜지스터 1개 정도로 구성되어있습니다

5. 소스코드 (주석 필수)

  (원하는 기능의 코드를 전부 작성해 드리긴 어렵습니다. 기초부터 차근차근 공부해보면서 코드를 만들어 보세요.)

 

 

int motor = 3;
int sw = 6;
int sw2 = 5;
int sw3 = 9;
int sw4 = 10;

int speed = 60;
int speed2 = 127;
int speed3 = 0;
int speed4 = 255;
 
void setup() {
    pinMode(sw, INPUT_PULLUP);
    pinMode(sw2, INPUT_PULLUP);
    pinMode(sw3, INPUT_PULLUP);
    pinMode(sw4, INPUT_PULLUP);
}
 
void loop() {
    if (digitalRead(sw) == LOW) {
        analogWrite(motor, speed);
    }
    else {
        analogWrite(motor, 0);
    }
  
    if (digitalRead(sw2) == LOW) {
        analogWrite(motor, speed2);
    }
    else {
        analogWrite(motor, 0);
    }
    
    if (digitalRead(sw3) == HIGH) {
        analogWrite(motor, speed3);
    }
    else {
        analogWrite(motor, 0);
    }
    if (digitalRead(sw4) == LOW) {
        analogWrite(motor, speed4);
    }
    else {
        analogWrite(motor, 0);
    }
}

6. 문제점 및 에러 내용

  (소스코드 문제일 경우 에러 내용도 같이 올려주세요.)

 

스위치 4개를 각각 한번씩 눌렀을 때 다른 속도로 dc모터가 작동되어야하고 그 중 하나의 스위치는 dc모터를 중지 시키는 기능을 해야하는데요 일단 스위치에서 마우스를 때면 dc모터가 멈추구요 코드 작성할 때 각각의 스피드를 어떻게 작성해야하는지 모르겠습니다... :(

프로필사진

판다마니아 2020-05-26 17:50:21

지금 코드는 스위치 4개가 한번에 모터 1개를 제어하게 된 코드입니다.

 

1번 스위치는 움직이라고 눌렀지만 2,3,4 번 스위치는 모터에게 멈추라고 명령어를 주기 때문에 결과적으로 동작이 꼬이게 됩니다.

 

차라리 모터는 계속 돌지만 버튼을 눌렀을 때 속도만 바꿔주는식이 더 좋을 것 같습니다.

* 멈추실려면 버튼 4개가 모두 안눌렸을 때 speed를 0으로 지정한다거나 이런식이 필요한것 같습니다.

 

if(digitalRead(SW1) == LOW){ // input_pullup은 눌렀을 때 0입니다.
  speed = 60;
}

else if(digitalRead(SW2) == LOW){
  speed = 120;
}

analogWrite(motor, speed);

 

이전글   |    서보모터 떨림현상 2020-05-19
다음글   |    NODEMCU를 통한 HTTP 통신 및 온습도 값 MYSQL 저장... 2020-05-20