arduino程序编译正确,不接各类模块也能上传,但是一上传后接上模块不能用,带着模块上传也无法上传。

第一篇贴,请求指教。
计划用红外遥控做一个遥控船的动力模组。但是卡在了这里。

//#include <Servo.h>
#include <IRremote.h>
IRrecv IR(2);
decode_results JG;
int Left_motor_go = 8;   //左电机前进(IN1)
int Left_motor_back = 9;   //左电机后退(IN2)

int Right_motor_go = 10;  // 右电机前进(IN3)
int Right_motor_back = 11;  // 右电机后退(IN4)

void setup()
{
  Serial.begin(9600);
  IR.enableIRIn();
  //初始化电机驱动IO为输出方式
  pinMode(Left_motor_go, OUTPUT); // PIN 8 (PWM)
  pinMode(Left_motor_back, OUTPUT); // PIN 9 (PWM)
  pinMode(Right_motor_go, OUTPUT); // PIN 10 (PWM)
  pinMode(Right_motor_back, OUTPUT); // PIN 11 (PWM)
}
void run()     // 前进
{
  delay(300);
  digitalWrite(Right_motor_go, HIGH); // 右电机前进
  digitalWrite(Right_motor_back, LOW);
  analogWrite(Right_motor_go, 250); //PWM比例0~255调速,左右轮差异略增减
  analogWrite(Right_motor_back, 0);
  digitalWrite(Left_motor_go, LOW); // 左电机前进
  digitalWrite(Left_motor_back, HIGH);
  analogWrite(Left_motor_go, 0); //PWM比例0~255调速,左右轮差异略增减
  analogWrite(Left_motor_back, 250);
  //执行时间,可以调整
}

void brake()         //刹车,停车
{
  delay(300);
  digitalWrite(Right_motor_go, LOW);
  digitalWrite(Right_motor_back, LOW);
  digitalWrite(Left_motor_go, LOW);
  digitalWrite(Left_motor_back, LOW);
  //执行时间,可以调整
}

void left()         //左转(左轮不动,右轮前进)
{
  delay(300);
  digitalWrite(Right_motor_go, HIGH);    // 右电机前进
  digitalWrite(Right_motor_back, LOW);
  analogWrite(Right_motor_go, 200);
  analogWrite(Right_motor_back, 0); //PWM比例0~255调速
  digitalWrite(Left_motor_go, LOW);  //左轮不动
  digitalWrite(Left_motor_back, LOW);
  analogWrite(Left_motor_go, 0);
  analogWrite(Left_motor_back, 0); //PWM比例0~255调速
  //执行时间,可以调整
}

void spin_left()         //左转(左轮后退,右轮前进)
{
  delay(300);
  digitalWrite(Right_motor_go, HIGH);    // 右电机前进
  digitalWrite(Right_motor_back, LOW);
  analogWrite(Right_motor_go, 200);
  analogWrite(Right_motor_back, 0); //PWM比例0~255调速
  digitalWrite(Left_motor_go, HIGH);  //左轮后退
  digitalWrite(Left_motor_back, LOW);
  analogWrite(Left_motor_go, 200);
  analogWrite(Left_motor_back, 0); //PWM比例0~255调速
  //执行时间,可以调整
}

void right()        //右转(右轮不动,左轮前进)
{
  delay(300);
  digitalWrite(Right_motor_go, LOW);  //右电机不动
  digitalWrite(Right_motor_back, LOW);
  analogWrite(Right_motor_go, 0);
  analogWrite(Right_motor_back, 0); //PWM比例0~255调速
  digitalWrite(Left_motor_go, LOW); //左电机前进
  digitalWrite(Left_motor_back, HIGH);
  analogWrite(Left_motor_go, 0);
  analogWrite(Left_motor_back, 200); //PWM比例0~255调速
  //执行时间,可以调整
}

void spin_right()        //右转(右轮后退,左轮前进)
{
  delay(300);
  digitalWrite(Right_motor_go, LOW);  //右电机后退
  digitalWrite(Right_motor_back, HIGH);
  analogWrite(Right_motor_go, 0);
  analogWrite(Right_motor_back, 200); //PWM比例0~255调速
  digitalWrite(Left_motor_go, LOW); //左电机前进
  digitalWrite(Left_motor_back, HIGH);
  analogWrite(Left_motor_go, 0);
  analogWrite(Left_motor_back, 200); //PWM比例0~255调速
  //执行时间,可以调整
}

void back()          //后退
{
  delay(300);
  digitalWrite(Right_motor_go, LOW); //右轮后退
  digitalWrite(Right_motor_back, HIGH);
  analogWrite(Right_motor_go, 0);
  analogWrite(Right_motor_back, 250); //PWM比例0~255调速
  digitalWrite(Left_motor_go, HIGH); //左轮后退
  digitalWrite(Left_motor_back, LOW);
  analogWrite(Left_motor_go, 250);
  analogWrite(Left_motor_back, 0); //PWM比例0~255调速
  //执行时间,可以调整
}

void loop()
{
  delay(300);
  if (IR.decode(&JG)) {
    Serial.println(JG.value);
    if (JG.value == 16736925 || JG.value == 5316027) {
      run();
    }
    if (JG.value == 16712445 || JG.value == 818642832) {
      brake();
    }
    if (JG.value == 16720605 || JG.value == 1386468383) {
      left();
    }
    if (JG.value == 16761405 || JG.value == 553536955) {
      right();
    }
    if (JG.value == 16754775 || JG.value == 2747854299) {
      back();
    }
    if (JG.value == 16769055 || JG.value == 4034314555) {
      spin_left();
    }
    if (JG.value == 16748655 || JG.value == 3855596927) {
      spin_right();
    }
    IR.resume();
  }
}


程序如下:

试过了简单的小程序,小程序(点亮led灯、解码并显示红外信号)没问题。
报错如下:

Arduino:1.8.13 (Windows 10), 开发板:"Arduino Uno"

项目使用了 6562 字节,占用了 (20%) 程序存储空间。最大为 32256 字节。

全局变量使用了633字节,(30%)的动态内存,余留1415字节局部变量。最大为2048字节。

avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0xe6

avrdude: stk500_cmd(): programmer is out of sync

avrdude: loadaddr(): (b) protocol error, expect=0x14, resp=0x00

avrdude: stk500_paged_load(): (a) protocol error, expect=0x14, resp=0x10

avrdude: stk500_cmd(): protocol error

avr_read(): error reading address 0x0000

read operation not supported for memory "flash"

avrdude: failed to read all of flash memory, rc=-2

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0xff

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0xff

在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。