 |
| RobotCarMeimei4 2DCGearMotor wiz JoyStick |
 |
| RobotCarMeimei4 2DCGearMotor wiz JoyStick |
 |
| RobotCarMeimei4 2DCGearMotor wiz JoyStic |
 |
| RobotCarMeimei4 2DCGearMotor wiz JoyStic |
/*
Control 2 DC motors uing JoyStick And Volume
2020/01/11 Start
2020/01/11 Up
*/
int MotorPinA=12;
int MotorSpeedPinA=10;
int MotorBrakePinA=9;
int MotorPinB=13;
int MotorSpeedPinB=11;
int MotorBrakePinB=8;
int MotorSpeedA;
int MotorSpeedB;
int SwitchPin =2 ; // digital pin connected to switch output
int joystick_x = A0 ; // analog pin connected to X output
int joystick_y = A1 ; // analog pin connetcte to Y outpu
int pos_x=0;
int pos_y=0;
int btState=0;
int analogIn,vrefValue;
void setup()
{
// motor A pin assignment
pinMode(MotorPinA,OUTPUT);
pinMode(MotorSpeedPinA,OUTPUT);
pinMode(MotorBrakePinA,OUTPUT);
// motor B pin assignment
pinMode(MotorPinB,OUTPUT);
pinMode(MotorSpeedPinB,OUTPUT);
pinMode(MotorBrakePinB,OUTPUT);
// joystick pin assignment
pinMode(SwitchPin,INPUT);
pinMode(joystick_x,INPUT);
pinMode(joystick_y,INPUT);
//Speed
analogIn=analogRead(2);
vrefValue=map(analogIn,0,1023,100,255);
MotorSpeedA=vrefValue;
MotorSpeedB=vrefValue;
}
//PushButton Forward
void MotorForward(void)
{
digitalWrite(MotorPinA,LOW);
digitalWrite(MotorBrakePinA,LOW);
analogWrite(MotorSpeedPinA,MotorSpeedA);
digitalWrite(MotorPinB,HIGH);
digitalWrite(MotorBrakePinB,LOW);
analogWrite(MotorSpeedPinB,MotorSpeedB);
}
//PushButton Back
void MotorBack(void)
{
digitalWrite(MotorPinA,HIGH);
digitalWrite(MotorBrakePinA,LOW);
analogWrite(MotorSpeedPinA,MotorSpeedA);
digitalWrite(MotorPinB,LOW);
digitalWrite(MotorBrakePinB,LOW);
analogWrite(MotorSpeedPinB,MotorSpeedB);
}
//PushButton TurnR
void MotorTurnR(void)
{
digitalWrite(MotorPinA,HIGH);
digitalWrite(MotorBrakePinA,LOW);
analogWrite(MotorSpeedPinA,MotorSpeedA);
digitalWrite(MotorPinB,HIGH);
digitalWrite(MotorBrakePinB,LOW);
analogWrite(MotorSpeedPinB,MotorSpeedB);
}
//PushButton TurnL
void MotorTurnL(void)
{
digitalWrite(MotorPinA,LOW);
digitalWrite(MotorBrakePinA,LOW);
analogWrite(MotorSpeedPinA,MotorSpeedA);
digitalWrite(MotorPinB,LOW);
digitalWrite(MotorBrakePinB,LOW);
analogWrite(MotorSpeedPinB,MotorSpeedB);
}
void MotorStop(void)
{
digitalWrite(MotorBrakePinA,HIGH);
digitalWrite(MotorBrakePinB,HIGH);
analogWrite(MotorSpeedPinA,0);
analogWrite(MotorSpeedPinB,0);
}
void loop()
{
btState=digitalRead(SwitchPin);
if(btState==HIGH)
{
MotorStop();
}
pos_x=analogRead(joystick_x);
pos_y=analogRead(joystick_y);
if(pos_y<400)
{
MotorForward();
}
else if (pos_y>600)
{
MotorBack();
}
else if (pos_x>600)
{
MotorTurnR();
}
else if (pos_x<400)
{
MotorTurnL();
}
else if ((pos_y>400)&&(pos_y<600))
{
MotorStop();
}
}