Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
У меня есть клон Arduino Mega, и я давно им не пользовался. Я помню, что он не работал, поэтому, когда я подключил его и попытался загрузить в него код, он, конечно же, не сработал. Поэтому я подключил Uno, и все заработало. Мега - это Atmel 2560. Вот мой код:
#define distanceForward A0
#define distanceLeft A1
#define distanceRight A2
#define distanceRightAngle A3
#define distanceLeftAngle A4
#define distanceBack A5
int talk = 2;
void setup() {
Serial.begin(9600);
pinMode(talk, OUTPUT);
pinMode(distanceForward, INPUT);
// /\ Контакт инфракрасного датчика расстояния для входного сигнала на Arduino, передняя панель
pinMode(distanceLeftAngle, INPUT);
// /\ Контакт инфракрасного датчика расстояния для входного сигнала на Arduino, левый угол
pinMode(distanceRightAngle, INPUT);
// /\ Контакт инфракрасного датчика расстояния для входного сигнала на Arduino, под прямым углом
pinMode(distanceLeft, INPUT);
// /\ Контакт инфракрасного датчика расстояния для входного сигнала на Arduino, слева
pinMode(distanceRight, INPUT);
// /\ Контакт инфракрасного датчика расстояния для входного сигнала на Arduino, правый
pinMode(distanceBack, INPUT);
// /\ Контакт инфракрасного датчика расстояния для входного сигнала на ардуино, сзади
}
void hall_roam() {
Serial.write("forward");
if (analogRead(distanceLeftAngle) < 30) {
Serial.write("right");
if (analogRead(distanceLeftAngle) > 30) {
Serial.write("forward");
}
if (analogRead(distanceRightAngle) < 30) {
Serial.write("left");
if (analogRead(distanceRightAngle) < 30) {
Serial.write("forward");
}
if (analogRead(distanceForward) < 60) {
Serial.write("stop");
if ((analogRead(distanceLeft) < 60) && (analogRead(distanceRight) < 60)) {
Serial.write("left");
if (analogRead(distanceForward) > 60) {
Serial.write("stop");
}
}
}
if ((analogRead(distanceLeft) > 60) && (analogRead(distanceRight) > 60)) {
Serial.write("left");
if (analogRead(distanceForward) > 60) {
Serial.write("stop");
}
}
if ((analogRead(distanceLeft) > 60) && (analogRead(distanceRight) < 60)) {
Serial.write("left");
if (analogRead(distanceForward) > 60) {
Serial.write("stop");
}
}
if ((analogRead(distanceLeft) > 60) && (analogRead(distanceRight) < 60)) {
Serial.write("left");
if (analogRead(distanceForward) > 60) {
Serial.write("stop");
}
}
if ((analogRead(distanceLeft) < 60) && (analogRead(distanceRight) > 60)) {
Serial.write("right");
if (analogRead(distanceForward) > 60) {
Serial.write("stop");
}
} else {
Serial.write("forward");
}
}
}
}
void roam() {
Serial.write("forward");
if (analogRead(distanceForward) < 60) {
Serial.write("stop");
Serial.write("left");
if (analogRead(distanceForward) > 60) {
Serial.write("stop");
Serial.write("forward");
}
}
}
void talkbb8() {
pinMode(talk, HIGH);
pinMode(talk, LOW);
}
void chill() {
Serial.write("stop");
talkbb8();
}
void loop() {
if ((analogRead(distanceLeft) < 60) && (analogRead(distanceRight) < 60)) {
hall_roam();
} else if ((analogRead(distanceForward) < 60) && (analogRead(distanceBack) < 60)) {
Serial.write("left");
if ((analogRead(distanceLeft) < 60) && (analogRead(distanceRight) < 60)) {
Serial.write("stop");
hall_roam();
}
} else {
roam();
}
}
Если скобка не на месте или что-то в этом роде, то, скорее всего, ничего страшного. Я говорю о символах. Есть ли в символах что-то, что могло бы запороть загрузку, как три "!!!" проблема, о которой я слышал, или что-то в этом роде. Возможно, мой iMac не распознает встроенный в него USB-чип. Если да, то как мне это исправить?
@techset, 👍4
5 ответов
Сообщение об ошибке в основном означает, что программист не может связаться с загрузчиком
на устройстве. Код, который вы пытаетесь загрузить, не имеет отношения к проблеме.
Это может быть вызвано одной из четырех возможных причин. Они:
Выбран неверный порт:
Если индикатор
TX/RX
не мигает, возможно, вы выбрали неправильный порт. Если один из них мигает, вы используете не тот порт. Однако, возможно, стоит проверить еще раз, иногда устройства USB COM устанавливаются на странные номера портов.Плата не находится в режиме
Bootloader
:По какой-то причине
Arduino Mega
не запускаетзагрузчик
. Если программатор не сбрасывает микро перед попыткой подключения, это может быть причиной. Попробуйте перезагрузить плату (нажмите и отпустите кнопку), пока программатор пытается подключиться. Иногда программы, работающие в замкнутом цикле, не позволяютзагрузчику
подключиться. В противном случае, возможно, перегорели предохранители или стерся код. Вам нужно будет перепрошить загрузчик и правильные предохранители, опять же, см. соответствующую информационную страницу для вашего устройства.Только для Arduino Mega 2560: программное обеспечение ATmega8U/16U
Может не работать и требует перепрограммирования. См. раздел «Программирование» на информационной странице. Вам потребуется прошивка и совместимое с Atmel программное обеспечение DFU (обновление прошивки устройства) на вашем компьютере для
перепрошивки
цели.Повреждение оборудования:
Возможно аппаратное повреждение платы, AVR или чипа FTDI. Пришло время купить другую плату.
Вы можете проверить этот ответ.
Если у вас возникла проблема с тайм-аутом, убедитесь, что на плате используется резонатор с частотой 16 МГц.
изменить
mega.menu.cpu.atmega2560.upload.protocol=wiring
Кому:
mega.menu.cpu.atmega2560.upload.protocol=stk500v2
У меня возникла эта проблема после изменения значения кристалла, и изменение параметров решило указанную выше проблему.
Я попробовал все решения, перечисленные на этой странице:
- изменены порты,
- проверен правильный порт в Arduino IDE,
- перезапущен,
- повторное подключение
- купил новый arduino mega,
- и т. д.
Ничего не помогло.
Наконец сдался и использовал веб-версию Arduino IDE, и она отлично работала.
Если у вас возникла проблема с тайм-аутом, убедитесь, что на плате используется резонатор с частотой 16 МГц.
изменить
mega.menu.cpu.atmega2560.upload.protocol=проводка Кому:
mega.menu.cpu.atmega2560.upload.protocol=stk500v2
Спасибо! Решил мою проблему!
У меня были те же проблемы на MAC OSX El Capitan (старый iMAC) с использованием IDE 1.8.x, и, конечно же, JAVA выполнила обновление. Я регрессировал драйверы Arduino AVR до 1.6.21 (как указано в Интернете), и это не устранило ошибки тайм-аута.
Я сдался и использовал IDE 1.8.9 на своей OSX MB Pro, и она работала безупречно.
Я думаю, что проблема заключалась в версиях Java и драйверах IDE.
- Тайм-аут связи Arduino Mega с ошибкой программатора
- Программирование ATMEGA2560 с использованием FTDI
- Можно ли загрузить скетч Arduino через последовательный порт (RX) вместо USB?
- Arduino Uno R3 (с Atmega 16u2) и MAC OSX 10.11 (El Capitan) не работают
- Ошибка при записи загрузчика
- Как сделать веб сервер arduino через USB? Без ethernet shield и чипа wifi
- Программа Arduino не запускается при подключении
- Автономный ATMega328 — нужно ли прожигать загрузчик?
есть только два порта, но когда я подключаю тот, который работает, появляется третий, когда с мега не работает. может дело в usb чипе, @techset
Не похоже, что это проблема, или вы не дали им решения, я не знаю., @techset