# Joystick Controls DC Motor

 Language: English  • 中文

## Objective

To control rotation of DC motor by Joystick.

## Principle

By detecting Joystick analog values in X- and Y-axes, you can control the rotation and direction of the DC motor.

## Equipment

 Module Number Function Microduino-CoreUSB 1 Core board Microduino-Sensorhub 1 Sensor pinboard Microduino-Joystick 1 Joystick sensor Microduino-Robot 1 Robot control board Microduino-Motor 1 DC motor drive board Motor 1

## Hardware Buildup

• Setup 1：Stack CoreUSB, Robot, Motor and Sensorhub.
• Setup 2：Connect Joystick to Sensorhub to A0-A1 pin of Sensorhub and motor to OUTA-OUT1B pin of Stepper.

## Software Debugging

• Define pin of Joystick and motor control.
```#define PI 3.1415926
#define JoystickX_PIN A1   //Joystick X-axis output
#define JoystickY_PIN A0   //Joystick Y-axis output
#define PIN_MOTORA 5    //Motor output
#define PIN_MOTORB 6    // Motor output pin```
• Calculate the angle where Joystick lies, according to which you can control rotation speed and decide rotation direction based on positive or negative value of the angle.
```    valueX = (float)(analogRead(JoystickX_PIN)-512);
valueL = sqrt(sq(valueX)+sq(valueY));
angle = asin(valueX/valueL)*180/PI;    // Calculate the angle of Joystick by inverse trigonometric function
motorSpeed = (int)(angle*255/180);    // Calculate rotation speed according to the angle.
if(motorSpeed > 0)                    // If the angle is positive, then the motor rotates clockwise.
{
digitalWrite(PIN_MOTORA, LOW);
analogWrite(PIN_MOTORB, motorSpeed);
}
else if(motorSpeed < 0)               //If the angle is negative, then the motor rotates anti-clockwise.
{
digitalWrite(PIN_MOTORB, LOW);
analogWrite(PIN_MOTORA, abs(motorSpeed));
}
else                                  //If the angle is zero, then the motor stops rotation.
{
digitalWrite(PIN_MOTORA, LOW);
digitalWrite(PIN_MOTORB, LOW);
}
delay(500);```

## Result

Push Joystick to different angle, you can see the rotation speed and direction will change accordingly.