Motor Functions
Below is the previous motor test program, with the code that makes the robot go forward moved into a new function called forward(). We have also replaced the pin numbers with labels by using the #define command.
Write four additional functions backWard, leftTurn, rightTurn, and halt that makes the robot go backwards, turn left, turn right, and stop. See page on functions for more information.
Call these functions from inside loop().
Write four additional functions backWard, leftTurn, rightTurn, and halt that makes the robot go backwards, turn left, turn right, and stop. See page on functions for more information.
Call these functions from inside loop().
// Left motor pins-by defining them here, we don't have to keep stating pin numbers
#define ENA 9 // ENA speed pin for left motor
#define IN1 8 // IN1 on Motor controller board
#define IN2 11 // IN2
// Right motor pins
#define ENB 10 // ENB speed pin for right motor
#define IN3 12 // IN3 on Motor controller board
#define IN4 13 // IN4
int rightspeed = 150; //medium speed- 255=full speed
int leftspeed = 150;
//----------------------------------------------------------------------------------------------
void setup() {
pinMode(ENA, OUTPUT); //set up left motor
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT);//sets up right motor
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
analogWrite(ENA, leftspeed); //set speed to mid
analogWrite(ENB, rightspeed); //set speed to mid
}
//----------------------------------------------------------------------------------------------------
void loop() {
forward();
}
void forward() { //user-defined function
analogWrite(ENA, leftspeed); //set speed
digitalWrite(IN1, HIGH);//left motor forward
digitalWrite(IN2, LOW);
analogWrite(ENB, rightspeed); //set speed
digitalWrite(IN3, HIGH); //right motor forward
digitalWrite(IN4, LOW); //
}
//Challenge: Write four more functions here- backWards, turnLeft, turnrRght, halt
#define ENA 9 // ENA speed pin for left motor
#define IN1 8 // IN1 on Motor controller board
#define IN2 11 // IN2
// Right motor pins
#define ENB 10 // ENB speed pin for right motor
#define IN3 12 // IN3 on Motor controller board
#define IN4 13 // IN4
int rightspeed = 150; //medium speed- 255=full speed
int leftspeed = 150;
//----------------------------------------------------------------------------------------------
void setup() {
pinMode(ENA, OUTPUT); //set up left motor
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT);//sets up right motor
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
analogWrite(ENA, leftspeed); //set speed to mid
analogWrite(ENB, rightspeed); //set speed to mid
}
//----------------------------------------------------------------------------------------------------
void loop() {
forward();
}
void forward() { //user-defined function
analogWrite(ENA, leftspeed); //set speed
digitalWrite(IN1, HIGH);//left motor forward
digitalWrite(IN2, LOW);
analogWrite(ENB, rightspeed); //set speed
digitalWrite(IN3, HIGH); //right motor forward
digitalWrite(IN4, LOW); //
}
//Challenge: Write four more functions here- backWards, turnLeft, turnrRght, halt