3pi+ Code is not being imported

Hello,

I have a 3pi+ 32U4 OLED Robot and everytime I export the code, it says that its completed. However, no actions occur and it just makes a clicking sound. Is there a problem with my code or my computer? I used the exact same code a year ago and it worked so im not sure what the problem is.

//inputs 1 & 2 are left motor, inputs 3 & 4 vice versa
//inputs 1,2,3,4 are D4,5,6,7 respectively
//adjust ENA and ENB accordingly -- don't have jumpers yet but ENA should be 3 and ENB should be 8


//right motor
int motor_R1 = 5;
int motor_R2 = 4;
int motor_Rspeed = 3;


//left motor
int motor_L1 = 7;
int motor_L2 = 6;
int motor_Lspeed = 8;


void setup() {
  pinMode(motor_Rspeed, OUTPUT);
  pinMode(motor_R1, OUTPUT);
  pinMode(motor_R2, OUTPUT);


  pinMode(motor_Lspeed, OUTPUT);
  pinMode(motor_L1, OUTPUT);
  pinMode(motor_L2, OUTPUT);


  analogWrite(motor_Rspeed, 240);
  analogWrite(motor_Lspeed, 200);
  digitalWrite(motor_R1, LOW);  //Moves to the center of the first block
  digitalWrite(motor_R2, HIGH);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, HIGH);
  delay(700);


  analogWrite(motor_Rspeed, 0);
  analogWrite(motor_Lspeed, 0);
  digitalWrite(motor_R1, LOW);  //stops for .5 seconds
  digitalWrite(motor_R2, LOW);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, LOW);
  delay(500);


  //put code here
  rightTurn();
  leftTurn();
  leftTurn();
  rightTurn();
  moveForward();
  leftTurn();
  moveForward();
  leftTurn();
  moveForward();


  analogWrite(motor_Rspeed, 0);
  analogWrite(motor_Lspeed, 0);
  digitalWrite(motor_R1, LOW);  //stops for 1 second
  digitalWrite(motor_R2, LOW);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, LOW);
  delay(1000);
}


void loop() {
  // put your main code here, to run repeatedly:
}


void moveForward() {
  analogWrite(motor_Rspeed, 200);
  analogWrite(motor_Lspeed, 200);
  digitalWrite(motor_R1, LOW);  //Moves forward for 1.25 seconds
  digitalWrite(motor_R2, HIGH);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, HIGH);
  delay(1200);
}


void leftTurn() {
 /* analogWrite(motor_Rspeed, 200);
  analogWrite(motor_Lspeed, 200);
  digitalWrite(motor_R1, LOW);  //Moves forward a bit to adjust for turn
  digitalWrite(motor_R2, HIGH);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, HIGH);
  delay(250);
*/
  analogWrite(motor_Rspeed, 0);
  analogWrite(motor_Lspeed, 0);
  digitalWrite(motor_R1, LOW);  //stops for .5 seconds
  digitalWrite(motor_R2, LOW);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, LOW);
  delay(500);


  analogWrite(motor_Rspeed, 200);
  analogWrite(motor_Lspeed, 200);
  digitalWrite(motor_R1, LOW);  //Turns left
  digitalWrite(motor_R2, HIGH);
  digitalWrite(motor_L1, HIGH);
  digitalWrite(motor_L2, LOW);
  delay(375);


  analogWrite(motor_Rspeed, 0);
  analogWrite(motor_Lspeed, 0);
  digitalWrite(motor_R1, LOW);  //stops for .5 seconds
  digitalWrite(motor_R2, LOW);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, LOW);
  delay(500);


  analogWrite(motor_Rspeed, 200);
  analogWrite(motor_Lspeed, 200);
  digitalWrite(motor_R1, LOW);  //Moves forward for 1 second
  digitalWrite(motor_R2, HIGH);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, HIGH);
  delay(1200);


  analogWrite(motor_Rspeed, 0);
  analogWrite(motor_Lspeed, 0);
  digitalWrite(motor_R1, LOW);  //stops for .5 seconds
  digitalWrite(motor_R2, LOW);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, LOW);
  delay(500);
}


void rightTurn() {
/*  analogWrite(motor_Rspeed, 200);
  analogWrite(motor_Lspeed, 200);
  digitalWrite(motor_R1, LOW);  //Moves forward a bit to adjust for turn
  digitalWrite(motor_R2, HIGH);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, HIGH);
  delay(250);
*/
  analogWrite(motor_Rspeed, 0);
  analogWrite(motor_Lspeed, 0);
  digitalWrite(motor_R1, LOW);  //stops for .5 seconds
  digitalWrite(motor_R2, LOW);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, LOW);
  delay(500);


  analogWrite(motor_Rspeed, 200);
  analogWrite(motor_Lspeed, 200);
  digitalWrite(motor_R1, HIGH);  //Turns right
  digitalWrite(motor_R2, LOW);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, HIGH);
  delay(390);


  analogWrite(motor_Rspeed, 0);
  analogWrite(motor_Lspeed, 0);
  digitalWrite(motor_R1, LOW);  //stops for .5 seconds
  digitalWrite(motor_R2, LOW);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, LOW);
  delay(500);


  analogWrite(motor_Rspeed, 200);
  analogWrite(motor_Lspeed, 200);
  digitalWrite(motor_R1, LOW);  //Moves forward for 1 second
  digitalWrite(motor_R2, HIGH);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, HIGH);
  delay(1200);


  analogWrite(motor_Rspeed, 0);
  analogWrite(motor_Lspeed, 0);
  digitalWrite(motor_R1, LOW);  //stops for .5 seconds
  digitalWrite(motor_R2, LOW);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, LOW);
  delay(500);
}


void turn180() {
  analogWrite(motor_Rspeed, 200);
  analogWrite(motor_Lspeed, 200);
  digitalWrite(motor_R1, LOW);  //Turns left
  digitalWrite(motor_R2, HIGH);
  digitalWrite(motor_L1, HIGH);
  digitalWrite(motor_L2, LOW);
  delay(630);


  analogWrite(motor_Rspeed, 0);
  analogWrite(motor_Lspeed, 0);
  digitalWrite(motor_R1, LOW);  //stops for .5 seconds
  digitalWrite(motor_R2, LOW);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, LOW);
  delay(500);


  analogWrite(motor_Rspeed, 200);
  analogWrite(motor_Lspeed, 200);
  digitalWrite(motor_R1, LOW);  //Moves to the center of the block
  digitalWrite(motor_R2, HIGH);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, HIGH);
  delay(750);


  analogWrite(motor_Rspeed, 0);
  analogWrite(motor_Lspeed, 0);
  digitalWrite(motor_R1, LOW);  //stops for .5 seconds
  digitalWrite(motor_R2, LOW);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, LOW);
  delay(500);




}


Hello.

Are you sure you used that code on a 3pi+ 32U4 OLED Robot before? None of the pin numbers you are using match the 3pi+ 32U4 OLED Robot and it looks like you are trying to use a 3-pin motor control interface instead of the 2-pin (PWM/DIR) that the robot uses. You can refer to the “Pin assignments” section of the 3pi+ 32U4 user’s guide for reference. However, I generally recommend just using our Pololu3piPlus32U4 Arduino library to avoid accidentally mis-configuring something and potentially damaging it. If you continue having trouble, could you try installing the library and loading the unmodified “DemoForOLEDVersion” example (which allows you to test various features of the robot)?

Brandon

1 Like