Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino UNO and Cytron Motor Driver Controlled Two-Wheel Mobile Robot

View and Edit Project In Cirkit DesignerImage of Arduino UNO and Cytron Motor Driver Controlled Two-Wheel Mobile Robot

Circuit Documentation

Summary

This document provides a detailed overview of a two-wheel mobile robot circuit. The circuit includes an Arduino UNO microcontroller, a Cytron motor driver, two power window motors, and a LiPo battery. The Arduino UNO controls the motors via the Cytron motor driver, enabling the robot to move forward, backward, turn left, turn right, and stop.

Component List

Cytron Motor Driver

Arduino UNO

Power Window Motor 1

Power Window Motor 2

LiPo Battery

Wiring Details

Cytron Motor Driver

Arduino UNO

Power Window Motor 1

Power Window Motor 2

LiPo Battery

Code Documentation

/*
 * Arduino Sketch for Two-Wheel Mobile Robot
 * This code controls a two-wheel mobile robot using a Cytron motor driver.
 * The robot can move forward, backward, turn left, turn right, and stop.
 */

// Pin definitions
const int pwm1 = 9;  // PWM pin for motor 1
const int dir1 = 8;  // Direction pin for motor 1
const int pwm2 = 11; // PWM pin for motor 2
const int dir2 = 12; // Direction pin for motor 2

void setup() {
  // Initialize motor control pins as outputs
  pinMode(pwm1, OUTPUT);
  pinMode(dir1, OUTPUT);
  pinMode(pwm2, OUTPUT);
  pinMode(dir2, OUTPUT);
}

void loop() {
  // Example movements
  moveForward();
  delay(2000); // Move forward for 2 seconds
  stopRobot();
  delay(1000); // Stop for 1 second
  moveBackward();
  delay(2000); // Move backward for 2 seconds
  stopRobot();
  delay(1000); // Stop for 1 second
  turnLeft();
  delay(1000); // Turn left for 1 second
  stopRobot();
  delay(1000); // Stop for 1 second
  turnRight();
  delay(1000); // Turn right for 1 second
  stopRobot();
  delay(1000); // Stop for 1 second
}

void moveForward() {
  digitalWrite(dir1, HIGH); // Set motor 1 forward
  analogWrite(pwm1, 255);   // Full speed
  digitalWrite(dir2, HIGH); // Set motor 2 forward
  analogWrite(pwm2, 255);   // Full speed
}

void moveBackward() {
  digitalWrite(dir1, LOW);  // Set motor 1 backward
  analogWrite(pwm1, 255);   // Full speed
  digitalWrite(dir2, LOW);  // Set motor 2 backward
  analogWrite(pwm2, 255);   // Full speed
}

void turnLeft() {
  digitalWrite(dir1, LOW);  // Set motor 1 backward
  analogWrite(pwm1, 255);   // Full speed
  digitalWrite(dir2, HIGH); // Set motor 2 forward
  analogWrite(pwm2, 255);   // Full speed
}

void turnRight() {
  digitalWrite(dir1, HIGH); // Set motor 1 forward
  analogWrite(pwm1, 255);   // Full speed
  digitalWrite(dir2, LOW);  // Set motor 2 backward
  analogWrite(pwm2, 255);   // Full speed
}

void stopRobot() {
  analogWrite(pwm1, 0);     // Stop motor 1
  analogWrite(pwm2, 0);     // Stop motor 2
}

This code initializes the motor control pins as outputs and provides functions to move the robot forward, backward, turn left, turn right, and stop. The loop function demonstrates example movements with delays.