Stap 4: De code
De volgende code toont basis beheer van de DC-motoren. Motor1 is gecontroleerd door middel van digitale pinnen 3 en 10. Motor 2 wordt beheerd via digitale pinnen 6 en 9. Daarnaast kon motor stuurprogramma worden volledig uitgeschakeld met behulp van analoge pin A2.
In de Setup-functie kan het de motor chauffeur door de aanroepende setupMotor().
In de hoofdlus roept het de functies om de robot vooruit, links, rechts en achterwaarts in volgorde. In elke stap wacht het 200 milliseconden.
// pins controller motors #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() { //Turn on the motor driver chip : L293D digitalWrite(motor_en, HIGH); } void disableMotor() { //Turn off the motor driver chip : L293D digitalWrite(motor_en, LOW); } void robotStop(int ms){ digitalWrite(motor1_pos, LOW); digitalWrite(motor1_neg, LOW); digitalWrite(motor2_pos, LOW); digitalWrite(motor2_neg, LOW); delay(ms); } void robotForward(int ms){ digitalWrite(motor1_pos, HIGH); digitalWrite(motor1_neg, LOW); digitalWrite(motor2_pos, HIGH); digitalWrite(motor2_neg, LOW); delay(ms); } void robotBackward(int ms){ digitalWrite(motor1_pos, LOW); digitalWrite(motor1_neg, HIGH); digitalWrite(motor2_pos, LOW); digitalWrite(motor2_neg, HIGH); delay(ms); } void robotRight(int ms){ digitalWrite(motor1_pos, LOW); digitalWrite(motor1_neg, HIGH); digitalWrite(motor2_pos, HIGH); digitalWrite(motor2_neg, LOW); delay(ms); } void robotLeft(int ms){ digitalWrite(motor1_pos, HIGH); digitalWrite(motor1_neg, LOW); digitalWrite(motor2_pos, LOW); digitalWrite(motor2_neg, HIGH); delay(ms); } <br>