/* MOTORA | AIN1 / BIN1 | AIN2 / BIN2 ----------------------------------------- Forward | HIGH | LOW ----------------------------------------- Reverse | LOW | HIGH ----------------------------------------- STOP | LOW | LOW ----------------------------------------- STOP | HIGH | HIGH ----------------------------------------- */ // Motor A, Left Side const unit8_t AIN1 = 7 const unit8_t AIN2 = 8 const unit8_t PWMA = 5 const unit8_t ENA = A0 // Motor B, Right Side const unit8_t BIN1 = 4 const unit8_t BIN2 = 9 const unit8_t PWMB = 6 const unit8_t ENB = A1 void stop(){ digitalWrite(AIN1, LOW); digitalWrite(AIN2, LOW); digitalWrite(BIN1, LOW); digitalWrite(BIN2, LOW); analogWrite(ENA, 0); analogWrite(ENB, 0); analogWrite(PWMA, 0); analogWrite(PWMB, 0); } void moveForward(){ analogWrite(ENA, 255); analogWrite(ENB, 255); digitalWrite(AIN1, HIGH); digitalWrite(AIN2, LOW); digitalWrite(BIN1, HIGH); digitalWrite(BIN2, LOW); analogWrite(PWMA, 255); analogWrite(PWMB, 255); } void moveReverse(){ analogWrite(ENA, 255); analogWrite(ENB, 255); digitalWrite(AIN1, LOW); digitalWrite(AIN2, HIGH); digitalWrite(BIN1, LOW); digitalWrite(BIN2, HIGH); analogWrite(PWMA, 255); analogWrite(PWMB, 255); } void increaseForward(){ for (int i=0; i<256; i++){ digitalWrite(AIN1, HIGH); digitalWrite(AIN2, LOW); digitalWrite(BIN1, HIGH); digitalWrite(BIN2, LOW); analogWrite(PWMA, i); analogWrite(PWMB, i); analogWrite(ENA, 255); analogWrite(ENB, 255); delay(20); } } void setup() { pinMode(AIN1, OUTPUT); //AIN1 pinMode(AIN2, OUTPUT); //AIN2 pinMode(BIN1, OUTPUT); //BIN1 pinMode(BIN2, OUTPUT); //BIN2 pinMode(ENA, OUTPUT); //ENA Enable Pin pinMode(ENB, OUTPUT); //ENB Enable Pin pinMode(PWMA, OUTPUT); //PWMA PWM pin for Motor A pinMode(PWMB, OUTPUT); //PWMA PWM pin for Motor B } void loop(){ stop(); // Stop DC Motors delay(3000); moveForward(); // Drive DC Motors Forward delay(3000); moveReverse(); // Drive DC Motors Reverse delay(3000); increaseForward(); // Drive DC Motors 0 to 100 Forward delay(3000); }