Example Code for Arduino-PLL Control

Discover how to effectively control motor speed and direction using Arduino-PLL, with detailed wiring diagrams and sample code guidance for DIY enthusiasts.

Wiring Diagram

Pin Function
4 motor 1 enable control
5 motor 1 direction control
6 motor 2 direction control
7 motor 2 enable control

Other Preparation Work

When m1p/m2p is 127, it stops the motor
when m1p/m2p is 255, it gives the maximum speed for one direction
When m1p/m2p is 0, it gives the maximum speed for reverse direction

Sample Code

//Standard DLL Speed control

int E1 = 4;     //M1 Speed Control
int E2 = 7;     //M2 Speed Control
int M1 = 5;    //M1 Direction Control
int M2 = 6;    //M1 Direction Control

//When m1p/m2p is 127, it stops the motor
//when m1p/m2p is 255, it gives the maximum speed for one direction
//When m1p/m2p is 0, it gives the maximum speed for reverse direction

void DriveMotorP(byte m1p, byte m2p)//Drive Motor Power Mode
{

  digitalWrite(E1, HIGH);
  analogWrite(M1, (m1p));

  digitalWrite(E2, HIGH);
  analogWrite(M2, (m2p));

}

void setup(void) {
  int i;
  for(i=4;i<=7;i++)
    pinMode(i, OUTPUT);
  Serial.begin(19200);      //Set Baud Rate
}

void loop(void) {
  if(Serial.available()){
    char val = Serial.read();
    if(val!=-1){
      switch(val){
      case 'w'://Move Forward
        DriveMotorP(0xff,0xff); // Max speed
        break;
      case 'x'://Move Backward
        DriveMotorP(0x00,0x00);
        ; // Max speed
        break;
      case 's'://Stop
        DriveMotorP(0x7f,0x7f);
        break;
      }
    }
  }
}

Result

Data function: input "w", "x", "s": motor will have corresponding reaction.

Was this article helpful?

TOP