IoT/아두이노

[아두이노] DC모터, 조이스틱

발달중인 망고 2022. 6. 8. 04:02

오늘은 조이스틱 x축을 이용하여 DC 모터의 속도를 조절하는 간단한 프로그램을 만들어보겠습니다.

회로 소개

DC모터의 드라이브와 모터 연결 회로도를 소개합니다.

모터 드라이브 L293D
드라이브와 모터의 회로도

이후 조이스틱을 함께 연결합니다. 조이스틱의 회로도는 아래와 같습니다.

조이스틱 회로도


코드

#define EN_PIN 11
#define IN1_PIN 10
#define IN2_PIN 9
#define X_PIN A0
#define Y_PIN A1
#define SW_PIN 7

/*
   DC모터와 조이스틱을 이용한
   Dc모터 속도제어 프로그램

*/
void setup()
{
  Serial.begin(9600);
  pinMode( SW_PIN, INPUT_PULLUP );
  pinMode( X_PIN, INPUT );
  pinMode( Y_PIN, INPUT );
  pinMode(EN_PIN, OUTPUT);
  pinMode(IN1_PIN, OUTPUT);
  pinMode(IN2_PIN, OUTPUT);
}
boolean bReverse = false;
int Speed = 0;
void loop()
{
  int x = analogRead(X_PIN);
  int y = analogRead(Y_PIN);
  int z = digitalRead(SW_PIN);

  Speed = map(x, 0, 1023, 0, 255);
  setMotor(Speed, bReverse); //- 회전
  Serial.println(Speed);
}

void setMotor(int nSpeed, boolean bReverse)
{
  analogWrite(EN_PIN, nSpeed);
  digitalWrite(IN1_PIN, !bReverse);
  digitalWrite(IN2_PIN, bReverse);
}