Quantcast
Channel: Arduino Forum - Latest topics
Viewing all articles
Browse latest Browse all 15346

"Uploading error: exti status 1" with "avrdude: ser_open(): can't set com-state for "\\.\COM2""

$
0
0

Working on a 4WD for an arduino uno board where it's ifno is:
"BN: Unown board
VID: 0x1A86
PID: 0x7523
SN: (null)

I have tried reinstalling the CH341SER Driver, it did not work.
I have tried changing the COM3 to COM8 and COM1 and COM2. It did not work.
This is the code Im trying to upload. It complies just fine:

#include <AFMotor.h>  //add Adafruit Motor Shield library
#include <Servo.h>    //add Servo Motor library
#include <NewPing.h>  //add Ultrasonic sensor library

#define TRIG_PIN A0                               // Pin A0 on the Motor Drive Shield soldered to the ultrasonic sensor
#define ECHO_PIN A1                               // Pin A1 on the Motor Drive Shield soldered to the ultrasonic sensor
#define MAX_DISTANCE 300                          // sets maximum useable sensor measuring distance to 300cm
#define MAX_SPEED 160                             // sets speed of DC traction motors to 150/250 or about 70% of full speed - to get power drain down.
#define MAX_SPEED_OFFSET 40                       // this sets offset to allow for differences between the two DC traction motors
#define COLL_DIST 30                              // sets distance at which robot stops and reverses to 30cm
#define TURN_DIST COLL_DIST + 20                  // sets distance at which robot veers away from object
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);  // sets up sensor library to use the correct pins to measure distance.

AF_DCMotor leftMotor1(1, MOTOR12_1KHZ);   // create motor #1 using M1 output on Motor Drive Shield, set to 1kHz PWM frequency
AF_DCMotor leftMotor2(2, MOTOR12_1KHZ);   // create motor #2, using M2 output, set to 1kHz PWM frequency
AF_DCMotor rightMotor1(3, MOTOR34_1KHZ);  // create motor #3, using M3 output, set to 1kHz PWM frequency
AF_DCMotor rightMotor2(4, MOTOR34_1KHZ);  // create motor #4, using M4 output, set to 1kHz PWM frequency
Servo myservo;                            // create servo object to control a servo

int leftDistance, rightDistance;  //distances on either side
int curDist = 0;
String motorSet = "";
int speedSet = 0;

//-------------------------------------------- SETUP LOOP ----------------------------------------------------------------------------
void setup() {
  myservo.attach(10);  // attaches the servo on pin 10 (SERVO_1 on the Motor Drive Shield to the servo object
  myservo.write(90);   // tells the servo to position at 90-degrees ie. facing forward.
  delay(1000);         // delay for one seconds
}
//------------------------------------------------------------------------------------------------------------------------------------

//---------------------------------------------MAIN LOOP ------------------------------------------------------------------------------
void loop() {
  myservo.write(90);  // move eyes forward
  delay(90);
  curDist = readPing();                       // read distance
  if (curDist < COLL_DIST) { changePath(); }  // if forward is blocked change direction
  moveForward();                              // move forward
  delay(500);
}
//-------------------------------------------------------------------------------------------------------------------------------------

void changePath() {
  moveStop();         // stop forward movement
  myservo.write(36);  // check distance to the right
  delay(500);
  rightDistance = readPing();  //set right distance
  delay(500);
  myservo.write(144);  // check distace to the left
  delay(700);
  leftDistance = readPing();  //set left distance
  delay(500);
  myservo.write(90);  //return to center
  delay(100);
  compareDistance();
}


void compareDistance()  // find the longest distance
{
  if (leftDistance > rightDistance)  //if left is less obstructed
  {
    turnLeft();
  } else if (rightDistance > leftDistance)  //if right is less obstructed
  {
    turnRight();
  } else  //if they are equally obstructed
  {
    turnAround();
  }
}


//-------------------------------------------------------------------------------------------------------------------------------------

int readPing() {  // read the ultrasonic sensor distance
  delay(70);
  unsigned int uS = sonar.ping();
  int cm = uS / US_ROUNDTRIP_CM;
  return cm;
}
//-------------------------------------------------------------------------------------------------------------------------------------
void moveStop() {
  leftMotor1.run(RELEASE);
  leftMotor2.run(RELEASE);
  rightMotor1.run(RELEASE);
  rightMotor2.run(RELEASE);
}  // stop the motors.
//-------------------------------------------------------------------------------------------------------------------------------------
void moveForward() {
  motorSet = "FORWARD";
  leftMotor1.run(FORWARD);                                 // turn it on going forward
  leftMotor2.run(FORWARD);                                 // turn it on going forward
  rightMotor1.run(FORWARD);                                // turn it on going forward
  rightMotor2.run(FORWARD);                                // turn it on going forward
  for (speedSet = 0; speedSet < MAX_SPEED; speedSet += 2)  // slowly bring the speed up to avoid loading down the batteries too quickly
  {
    leftMotor1.setSpeed(speedSet);
    leftMotor2.setSpeed(speedSet);
    rightMotor1.setSpeed(speedSet);
    rightMotor2.setSpeed(speedSet);
    delay(5);
  }
}
//-------------------------------------------------------------------------------------------------------------------------------------
void moveBackward() {
  motorSet = "BACKWARD";
  leftMotor1.run(BACKWARD);                                // turn it on going backward
  leftMotor2.run(BACKWARD);                                // turn it on going backward
  rightMotor1.run(BACKWARD);                               // turn it on going backward
  rightMotor2.run(BACKWARD);                               // turn it on going backward
  for (speedSet = 0; speedSet < MAX_SPEED; speedSet += 2)  // slowly bring the speed up to avoid loading down the batteries too quickly
  {
    leftMotor1.setSpeed(speedSet);
    leftMotor2.setSpeed(speedSet);
    rightMotor1.setSpeed(speedSet);
    rightMotor2.setSpeed(speedSet);
    delay(5);
  }
}
//-------------------------------------------------------------------------------------------------------------------------------------
void turnRight() {
  motorSet = "RIGHT";
  leftMotor1.run(FORWARD);    // turn motor 1 forward
  leftMotor2.run(FORWARD);    // turn motor 2 forward
  rightMotor1.run(BACKWARD);  // turn motor 3 backward
  rightMotor2.run(BACKWARD);  // turn motor 4 backward
  rightMotor1.setSpeed(speedSet + MAX_SPEED_OFFSET);
  rightMotor2.setSpeed(speedSet + MAX_SPEED_OFFSET);
  delay(1500);  // run motors this way for 1500
  motorSet = "FORWARD";
  leftMotor1.run(FORWARD);  // set both motors back to forward
  leftMotor2.run(FORWARD);
  rightMotor1.run(FORWARD);
  rightMotor2.run(FORWARD);
}
//-------------------------------------------------------------------------------------------------------------------------------------
void turnLeft() {
  motorSet = "LEFT";
  leftMotor1.run(BACKWARD);  // turn motor 1 backward
  leftMotor2.run(BACKWARD);  // turn motor 2 backward
  leftMotor1.setSpeed(speedSet + MAX_SPEED_OFFSET);
  leftMotor2.setSpeed(speedSet + MAX_SPEED_OFFSET);
  rightMotor1.run(FORWARD);  // turn motor 3 forward
  rightMotor2.run(FORWARD);  // turn motor 4 forward
  delay(1500);               // run motors this way for 1500
  motorSet = "FORWARD";
  leftMotor1.run(FORWARD);   // turn it on going forward
  leftMotor2.run(FORWARD);   // turn it on going forward
  rightMotor1.run(FORWARD);  // turn it on going forward
  rightMotor2.run(FORWARD);  // turn it on going forward
}
//-------------------------------------------------------------------------------------------------------------------------------------
void turnAround() {
  motorSet = "RIGHT";
  leftMotor1.run(FORWARD);    // turn motor 1 forward
  leftMotor2.run(FORWARD);    // turn motor 2 forward
  rightMotor1.run(BACKWARD);  // turn motor 3 backward
  rightMotor2.run(BACKWARD);  // turn motor 4 backward
  rightMotor1.setSpeed(speedSet + MAX_SPEED_OFFSET);
  rightMotor2.setSpeed(speedSet + MAX_SPEED_OFFSET);
  delay(1700);  // run motors this way for 1700
  motorSet = "FORWARD";
  leftMotor1.run(FORWARD);  // set both motors back to forward
  leftMotor2.run(FORWARD);
  rightMotor1.run(FORWARD);
  rightMotor2.run(FORWARD);
}

5 posts - 4 participants

Read full topic


Viewing all articles
Browse latest Browse all 15346

Trending Articles