Скетч не загружается в arduino nano
- Войдите на сайт для отправки комментариев
Всем привет!
Имеется 2-ве Arduino nano и Bluetooth модуль HC-06.
Сначала припаял HC-06 к первой ардуино(которая только пришла) и сразу залил такой скетч:
char val; byte LED=13; void setup() { Serial.begin(9600); pinMode(LED, OUTPUT); } void loop() { if (Serial.available()) { val=Serial.read(); if (val == "S") { digitalWrite(LED, HIGH); } } }
Этот скетч не залился и после него никакие скетчи больше не загружаются. Выдает ошибку:
avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x90 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x90 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x90 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x90 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x90 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x90 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x90 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x90 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x90 avrdude: ser_recv(): read error: Отказано в доступе. avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x90 avrdude: ser_drain(): read error: Отказано в доступе.
Причем "resp=0x90" изначально был "resp=0xd4" (по-моему). Потом чередовались ошибки: сначала "resp=0xe0"(тут тоже точно не помню), потом "resp=0x00".
Почитал на разных форумах, что за ошибка. Попробовал все советы, кроме перепрошивки - ничего не помогает.
Подумал, что arduino пришла бракованная, поэтому решил проверить на второй arduino, которая у меня уже давно и всегда хорошо работала.
Загрузил на вторую ардуину такой скетч:
int val; byte LED=13; void setup() { Serial.begin(9600); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); } void loop() { if (Serial.available()) { val=Serial.read(); if (val == '1') { digitalWrite(LED, HIGH); } if (val == '2') { digitalWrite(LED, LOW); } } }
Все прекрасно заработало, поэтому решил залить скетч, который загрузил в первую ардуину и произошло все то же самое, что и с первой ардуиной - то есть скетчи перестали загружаться и в эту ардуину.
Причем загрузка идет бесконечно и не выдает никакой ошибки пока не нажмешь на "Reset" на самом МК или не выдернешь USB. И, кстати, скетч, который был залит изначально (рабочий), до сих пор работает.
Я так понял, что ошибка в том, что я объявил переменную "val", как char, а Serial.read() принимает байты.
Подскажите, пожалуйста, как это исправить без перепрошивки МК.
У меня имеется третья рабочая arduino nano, но она уже используется в другом проекте и нет никакого желания все отпаивать от нее и потом заного припаивать.
Заранее спасибо!
avrdude: ser_recv(): read error: Отказано в доступе. avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x90 avrdude: ser_drain(): read error: Отказано в доступе.
Причем "resp=0x90" изначально был "resp=0xd4" (по-моему). Потом чередовались ошибки: сначала "resp=0xe0"(тут тоже точно не помню), потом "resp=0x00".
Почитал на разных форумах, что за ошибка. Попробовал все советы, кроме перепрошивки - ничего не помогает.
Ну раз не перечислили, давайте пробовать снова (точно зная что счетч загруженный с использованием bootloader-а на живучесть не влияет):
1.Перегрузить комп. (убедиться что COM не занят)
2. попробовать другой USB кабель.
"почитал на разных форумах" - та даже тут , куча описанных Ваших ситуаций
Перезагрузил и сразу попробовал загрузить скетч, используя другой USB провод.
Результат: все то же самое, кроме ошибки, она теперь выглядит так:
Что дальше по плану?:D
С этими HC-06 всегда такая проблема. Попробуйте отпаять его питание от ардуино на время заливки скетча. А потом припаять снова. Ну и вообще лучше сделать как-нибудь отсоединяемым
Не ожидал такого поворота, но это действительно сработало.
Огромное спасибо!
Отсоединяю HC-06 - загружается скетч. Присоединяю - не хочет.
Удивительно, конечно.
Отсоединяю HC-06 - загружается скетч. Присоединяю - не хочет.
Удивительно, конечно.
Вы случаем HC-06 не к пинам 0 и 1 припаяли? :)
А может такое происходить из-за того, что HC-06 подключен к пинам RX и TX на ардуино?
То есть если подключить к D2 и D3, например, то все будет загружаться нормально?
Отсоединяю HC-06 - загружается скетч. Присоединяю - не хочет.
Удивительно, конечно.
Вы случаем HC-06 не к пинам 0 и 1 припаяли? :)
Именно. Вот как раз из-за этого у меня и возник вопрос. Не увидел Ваше сообщение, пока писал)
А может такое происходить из-за того, что HC-06 подключен к пинам RX и TX на ардуино?
не просто может, а именно в этом и причина. Пины 0 и 1 - это выводы того же UART, через который ппроисходит прошивка платы.
Если подключить модуль HC-06 к другим пинам, придетсяиспользовать SoftwareSerial. в чем есть некоторые минусы. Или же просто отключать модуль на время перезаливки платы.
Насколько я знаю, за включение/отключение HC-06 отвечает пин, который именуется как "EN" или "KEY" на HC-06. Как программно выключить/включить, я понимаю: подтянуть "EN" или "KEY" к какому-нибудь пину на ардуино и менять состояние этого пина с 0 на 1 или наоборот.
А вот как сделать так, чтобы при загрузки скетча HC-06 выключался сам?
Это я уже ради интереса спрашиваю)
Вот распиновка HC-06, если нужна: