Hur man kontrollerar DC-motorer med Arduino (4 / 4 steg)
Steg 4: Koden
Följande kod visar grundläggande styrning av DC-motorer. Motor1 styrs genom digital stift 3 och 10. Motor 2 styrs genom digital stift 6 och 9. Dessutom kunde motorn förarens vara helt avstängd med analoga pin A2.
I funktionen setup() kan motor föraren genom att anropa setupMotor().
I de viktigaste loop kräver det funktioner om du vill flytta roboten framåt, vänster, bakåt och höger i sekvens. I varje steg väntar det 200 millisekunder.
Pins controller motorer
#define motor1_pos 3
#define motor1_neg 10
#define motor2_pos 6
#define motor2_neg 9
#define motor_en A2
void setup()
{
Serial.BEGIN(57600);
setupMotor();
}
void loop()
{
robotForward(200);
robotLeft(200);
robotBackward(200);
robotRight(200);
robotStop(500);
}
void setupMotor() {
pinMode(motor1_pos,OUTPUT);
pinMode(motor1_neg,OUTPUT);
pinMode(motor2_pos,OUTPUT);
pinMode(motor2_neg,OUTPUT);
pinMode(motor_en,OUTPUT);
enableMotor();
robotStop(50);
}
//-----------------------------------------------------------------------------------------------------
motor
//-----------------------------------------------------------------------------------------------------
void enableMotor() {
Slå på motorn förarens chip: L293D
digitalWrite (motor_en, hög);
}
void disableMotor() {
Stäng av motorn förarens chip: L293D
digitalWrite (motor_en, låg);
}
void robotStop (int ms) {
digitalWrite (motor1_pos, låg);
digitalWrite (motor1_neg, låg);
digitalWrite (motor2_pos, låg);
digitalWrite (motor2_neg, låg);
Delay(MS);
}
void robotForward (int ms) {
digitalWrite (motor1_pos, hög);
digitalWrite (motor1_neg, låg);
digitalWrite (motor2_pos, hög);
digitalWrite (motor2_neg, låg);
Delay(MS);
}
void robotBackward (int ms) {
digitalWrite (motor1_pos, låg);
digitalWrite (motor1_neg, hög);
digitalWrite (motor2_pos, låg);
digitalWrite (motor2_neg, hög);
Delay(MS);
}
void robotRight (int ms) {
digitalWrite (motor1_pos, låg);
digitalWrite (motor1_neg, hög);
digitalWrite (motor2_pos, hög);
digitalWrite (motor2_neg, låg);
Delay(MS);
}
void robotLeft (int ms) {
digitalWrite (motor1_pos, hög);
digitalWrite (motor1_neg, låg);
digitalWrite (motor2_pos, låg);
digitalWrite (motor2_neg, hög);
Delay(MS);
}
< br >