I have created program to follow human and while uploading sketches it showing below error.
Arduino: 1.8.19 (Windows Store 1.8.57.0) (Windows 10), Board: "Arduino Uno"
Sketch uses 5214 bytes (16%) of program storage space. Maximum is 32256 bytes.Global variables use 289 bytes (14%) of dynamic memory, leaving 1759 bytes for local variables. Maximum is 2048 bytes.avrdude: loadaddr(): (b) protocol error, expect=0x14, resp=0xfcavrdude: loadaddr(): (b) protocol error, expect=0x14, resp=0xfcavrdude: stk500_paged_load(): (a) protocol error, expect=0x10, resp=0x00avrdude: stk500_cmd(): programmer is out of syncavr_read(): error reading address 0x0000 read operation not supported for memory "flash"avrdude: failed to read all of flash memory, rc=-2avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x00avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x00
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
I am not able to upload the sketch to the device because of mentioned error
Below is the code which I am using.
//Arduino Human Following Robot
// Created By DIY Builder
// You have to install the AFMotor and NewPing library Before Uploading the sketch
// You can find all the required libraris from arduino library manager.
// Contact me on instagram for any query(Insta Id : diy.builder)
// Modified 7 Mar 2022
// Version 1.1
//include the library code:
#include<NewPing.h>
#include<Servo.h>
#include<AFMotor.h>
#define RIGHT A2 // Right IR sensor connected to analog pin A2 of Arduino Uno:
#define LEFT A3 // Left IR sensor connected to analog pin A3 of Arduino Uno:
#define TRIGGER_PIN A1 // Trigger pin connected to analog pin A1 of Arduino Uno:
#define ECHO_PIN A0 // Echo pin connected to analog pin A0 of Arduino Uno:
#define MAX_DISTANCE 200 // Maximum ping distance:
unsigned int distance = 0; //Variable to store ultrasonic sensor distance:
unsigned int Right_Value = 0; //Variable to store Right IR sensor value:
unsigned int Left_Value = 0; //Variable to store Left IR sensor value:
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); //NewPing setup of pins and maximum distance:
//create motor objects
AF_DCMotor Motor1(1,MOTOR12_1KHZ);
AF_DCMotor Motor2(2,MOTOR12_1KHZ);
AF_DCMotor Motor3(3,MOTOR34_1KHZ);
AF_DCMotor Motor4(4,MOTOR34_1KHZ);
Servo myservo; //create servo object to control the servo:
int pos=0; //variable to store the servo position:
void setup() { // the setup function runs only once when power on the board or reset the board:
Serial.begin(9600); //initailize serial communication at 9600 bits per second:
myservo.attach(10); // servo attached to pin 10 of Arduino UNO
{
for(pos = 90; pos <= 180; pos += 1){ // goes from 90 degrees to 180 degrees:
myservo.write(pos); //tell servo to move according to the value of 'pos' variable:
delay(15); //wait 15ms for the servo to reach the position:
}
for(pos = 180; pos >= 0; pos-= 1) { // goes from 180 degrees to 0 degrees:
myservo.write(pos); //tell servo to move according to the value of 'pos' variable:
delay(15); //wait 15ms for the servo to reach the position:
}
for(pos = 0; pos<=90; pos += 1) { //goes from 180 degrees to 0 degrees:
myservo.write(pos); //tell servo to move according to the value of 'pos' variable:
delay(15); //wait 15ms for the servo to reach the position:
}
}
pinMode(RIGHT, INPUT); //set analog pin RIGHT as an input:
pinMode(LEFT, INPUT); //set analog pin RIGHT as an input:
}
// the lope function runs forever
void loop() {
delay(50); //wait 50ms between pings:
distance = sonar.ping_cm(); //send ping, get distance in cm and store it in 'distance' variable:
Serial.print("distance");
Serial.println(distance); // print the distance in serial monitor:
Right_Value = digitalRead(RIGHT); // read the value from Right IR sensor:
Left_Value = digitalRead(LEFT); // read the value from Left IR sensor:
Serial.print("RIGHT");
Serial.println(Right_Value); // print the right IR sensor value in serial monitor:
Serial.print("LEFT");
Serial.println(Left_Value); //print the left IR sensor value in serial monitor:
if((distance > 1) && (distance < 15)){ //check wheather the ultrasonic sensor's value stays between 1 to 15.
//If the condition is 'true' then the statement below will execute:
//Move Forward:
Motor1.setSpeed(130); //define motor1 speed:
Motor1.run(FORWARD); //rotate motor1 clockwise:
Motor2.setSpeed(130); //define motor2 speed:
Motor2.run(FORWARD); //rotate motor2 clockwise:
Motor3.setSpeed(130); //define motor3 speed:
Motor3.run(FORWARD); //rotate motor3 clockwise:
Motor4.setSpeed(130); //define motor4 speed:
Motor4.run(FORWARD); //rotate motor4 clockwise:
}else if((Right_Value==0) && (Left_Value==1)) { //If the condition is 'true' then the statement below will execute:
//Turn Left
Motor1.setSpeed(150); //define motor1 speed:
Motor1.run(FORWARD); //rotate motor1 cloclwise:
Motor2.setSpeed(150); //define motor2 speed:
Motor2.run(FORWARD); //rotate motor2 clockwise:
Motor3.setSpeed(150); //define motor3 speed:
Motor3.run(BACKWARD); //rotate motor3 anticlockwise:
Motor4.setSpeed(150); //define motor4 speed:
Motor4.run(BACKWARD); //rotate motor4 anticlockwise:
delay(150);
}else if((Right_Value==1)&&(Left_Value==0)) { //If the condition is 'true' then the statement below will execute:
//Turn Right
Motor1.setSpeed(150); //define motor1 speed:
Motor1.run(BACKWARD); //rotate motor1 anticlockwise:
Motor2.setSpeed(150); //define motor2 speed:
Motor2.run(BACKWARD); //rotate motor2 anticlockwise:
Motor3.setSpeed(150); //define motor3 speed:
Motor3.run(FORWARD); //rotate motor3 clockwise:
Motor4.setSpeed(150); //define motor4 speed:
Motor4.run(FORWARD); //rotate motor4 clockwise:
delay(150);
}else if(distance > 15) { //If the condition is 'true' then the statement below will execute:
//Stop
Motor1.setSpeed(0); //define motor1 speed:
Motor1.run(RELEASE); //stop motor1:
Motor2.setSpeed(0); //define motor2 speed:
Motor2.run(RELEASE); //stop motor2:
Motor3.setSpeed(0); //define motor3 speed:
Motor3.run(RELEASE); //stop motor3:
Motor4.setSpeed(0); //define motor4 speed:
Motor4.run(RELEASE); //stop motor4:
}
}
I asked, because the more verbose report will likely identify that you have a fundamental communication issue, and it really doesn't matter if your code is perfect.
Do you have the correct COM port selected in the IDE? Can you load and run the simple blink.ino code? If not, don't fuss with your code, find the more pressing issue.
If your IDE tries 10x to upload and fails(this should be evident in the status information after the upload process), it's usually COM related. Does your PC even acknowledge when you plug in the Arduino? If so, you can open Device Manager and observe which USB COM port appears and disappears.
Ok. This is, I think, either a wrong driver (Is your UNO genuine, or a knockoff?), or a bootloader issue. I don't have UNOs, so perhaps someone else can step in here?