Arduino Project

Speed Dial

Course Introduction

In this lesson, you’ll use a potentiometer and a DC motor with the Arduino R4 UNO to create a simple motor speed control system.

By rotating the potentiometer, you can adjust the motor speed from stop to full speed. The Arduino reads the potentiometer value, maps it to PWM output, and drives the motor in one direction with variable speed.

Note

If this is your first time working with an Arduino project, we recommend downloading and reviewing the basic materials first.

1.1 Install Arduino IDE(Important)
1.2 Introduction of Arduino IDE

Required Components

In this project, we need the following components:

SN

COMPONENT INTRODUCTION

QUANTITY

PURCHASE LINK

1

Arduino UNO R4 Minima/Arduino UNO R4 WIFI

1

2

USB Cable

1

×

3

Breadboard

1

4

Wires

Several

5

TA6586 - Motor Driver Chip

1

×

6

Potentiometer Sensor Module

1

7

TT Motor

1

×

8

Power Supply

1

Wiring

Speed_Dial_bb.png__PID:a24ebb44-6b01-4a58-ad63-2b1dc946c8a3

Common Connections:

Potentiometer Sensor Module
OUT: Connect to A0 on the Arduino.
GND: Connect to breadboard’s negative power bus.
VCC: Connect to breadboard’s red power bus.

TA6586 - Motor Driver Chip
BI:
Connect to 10 on the Arduino.
FI: Connect to 9 on the Arduino. 
GND: Connect to breadboard’s negative power bus.
VCC: Connect to breadboard’s red power bus.

TT Motor
Connect to B0, F0 on the TA6586 - Motor Driver Chip.

Writing the Code

Note
You can copy this code into the Arduino IDE.
Don’t forget to select the board(Arduino UNO R3) and the correct port before clicking the Upload button.


const int potPin = A0;     // Potentiometer signal pin
const int motorPin1 = 9;   // Motor IN1 pin (PWM)
const int motorPin2 = 10;  // Motor IN2 pin (LOW for direction control)

void setup() {
  pinMode(motorPin1, OUTPUT);  // Set motorPin1 as output
  pinMode(motorPin2, OUTPUT);  // Set motorPin2 as output
}

void loop() {
  int val = analogRead(potPin);           // Read analog value from potentiometer (0–1023)
  int speed = map(val, 0, 1023, 0, 255);  // Map value to PWM range (0–255)

  analogWrite(motorPin1, speed);  // Drive motor with mapped speed (one direction)
  analogWrite(motorPin2, 0);      // Keep the other pin LOW to set rotation direction
}