#define enablePin 2 #define IN1_L 3 #define IN3_R 6 #define IN2_L 5 #define IN4_R 9 int engineSpeed; const int BRAKE=0; const int FORWARDS=1; const int BACKWARDS=2; const int RIGHT=3; const int LEFT=4; void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(enablePin,OUTPUT); pinMode(IN1_L,OUTPUT); pinMode(IN2_L,OUTPUT); pinMode(IN3_R,OUTPUT); pinMode(IN4_R,OUTPUT); digitalWrite(enablePin, HIGH); engineSpeed=140; } void go(int dir){ if(dir==BRAKE){ digitalWrite(IN1_L,LOW); digitalWrite(IN2_L,LOW); digitalWrite(IN3_R,LOW); digitalWrite(IN4_R,LOW); }else if(dir==FORWARDS){ digitalWrite(IN2_L, LOW); digitalWrite(IN4_R, LOW); analogWrite(IN1_L, engineSpeed); analogWrite(IN3_R, engineSpeed); } else if(dir == BACKWARDS){ digitalWrite(IN1_L, LOW); digitalWrite(IN3_R, LOW); analogWrite(IN2_L, engineSpeed); analogWrite(IN4_R, engineSpeed); }else if(dir==LEFT){ analogWrite(IN1_L, LOW); analogWrite(IN2_L, engineSpeed); analogWrite(IN3_R, engineSpeed); analogWrite(IN4_R, LOW); } else if(dir == RIGHT){ analogWrite(IN1_L, engineSpeed); analogWrite(IN2_L, LOW); analogWrite(IN3_R, LOW); analogWrite(IN4_R, engineSpeed); } } void loop() { if(Serial.available()){ byte b = Serial.read(); if(b==49){ Serial.println("Fast"); if(engineSpeed+20<=250){ engineSpeed+=20; } } else if(b==50){ Serial.println("Slow"); if(engineSpeed-20>0){ engineSpeed-=20; } }else if(b==97){ Serial.println("Left"); go(LEFT); }else if(b==100){ Serial.println("Right"); go(RIGHT); }else if(b==119){ Serial.println("Forward"); go(FORWARDS); }else if(b==115){ Serial.println("Backward"); go(BACKWARDS); } else if(b==112){ Serial.println("Stop"); go(BRAKE); } else { Serial.println(b); } } }