Изучаю arduino (мучаю arduino nano на ATmega168P), дошел до прерывания. Залил вот такой скетч:
const int buttonPin = 2; const int ledPin = 8; volatile int buttonState = LOW; void setup() < Serial.begin(9600); pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT); attachInterrupt(0, pin_ISR, CHANGE); >void loop() < Serial.print(buttonState); >void pin_ISR() < if (buttonState == LOW) < buttonState = HIGH; digitalWrite(ledPin, HIGH); >else < buttonState = LOW; digitalWrite(ledPin, LOW); >>
После заливки постоянно горит RX TX и на 8 пин всегда подается 1.3 В. Но прерывание работает, т.е. если подаю на 2 пин 5 В, то на 8 подается 5 В. В Arduino Studio могу подключится с помощью мониторинга порта, и видны значение, которые отправляет ardiuno.
Но вот залить новый скетч не получается — просто висит заливка и ничего не происходит. Я спалил arduino? Что я сделал не так? Как залить пустой скетч?
Отслеживать
задан 16 июн 2019 в 18:01
474 1 1 золотой знак 8 8 серебряных знаков 20 20 бронзовых знаков
Как загрузить прошивку в Arduino nano подробная инструкция
Очевидно прерывание на нулевом порту как раз и мешают прошить arduino ведь в плате 0 и 1 псины как раз отвечают за сериал протокол который используется для прошивки ! Нужно отчистить чип и залить заново загрузчик ! Рекомендую делать через USB ISP программатор
Источник: ru.stackoverflow.com
Arduino IDE: почему не компилируются скетчи (и как этого избежать)

Поскольку я интенсивно занимаюсь разработкой в Arduino IDE, то этот вопрос меня неподдельно волновал. Почему скетч, написанный в одной версии среды разработки отказывается компилироваться в соседних версиях? Этим же вопросом меня заваливали пользователи системы Arduino Mega Server. Почему АМС компилируется в 1.6.5 и отказывается компилироваться в 1.6.4, 1.6.7 и 1.6.8?
И вот недавно, в процессе портирования Arduino Mega Server на новый контроллер Genuino 101, мне удалось разгадать эту великую загадку. И в этой статье я поделюсь с вами этим сакральным знанием и ваши скетчи после этого всегда будут успешно компилироваться. Итак…
Логика вещей
По логике вещей, код, который успешно компилируется в какой-либо версии среды разработки, например, 1.6.5, обязан компилироваться в соседних версиях IDE, ведь эти версии отличаются только в третьем знаке и представляют собой почти одно и то же, с небольшими модификациями. Но этого не происходит. Почему?
Внутренняя кухня
Чтобы это понять, нужно разобраться с тем, как формируются версии сред разработки Arduino IDE и как пользователи работают с этими средами разработки.
Начнём с пользователей. Большинство из них компилирует примитивные проекты, образно говоря, в 20 строк и с этими проектами никаких проблем не возникает. Эти проекты успешно компилируются в любой версии IDE потому, что используют только стандартные вызовы библиотечных функций и никак не модифицируют сами библиотеки.
Но сколько-нибудь развитый проект на Ардуино уже не умещается в «20 строк» и неизбежно пользуется менее распространёнными функциями из библиотек (которые более подвержены модификациям из версии в версию) и неизбежно приходят к необходимости модификации самих библиотек под свои специфические нужды проекта.
А один раз модифицировав системную библиотеку, вы становитесь её заложником и вынуждены «тащить» её за собой из версии в версию.
Теперь давайте разберёмся с тем, как формируются версии Arduino IDE. А формируются они по произволу (я подозреваю, что в конечном счёте, одного конкретного программиста, какого-нибудь Марио) выпускающей команды. И то, какая версия конкретной библиотеки будет включена в дистрибутив и в каком виде (с какими модификациями), остаётся на совести этого «Марио».
А теперь внимание, это очень важно! Выпускающая команда преследует только одну цель — чтобы дистрибутив одной версии был взаимно согласован и непротиворечив внутри себя. Их задача добиться того, чтобы все стандартные примеры работали корректно. И это всё! Задача совместимости между версиями вообще не ставится.
И поскольку 99% процентов пользователей компилирует проекты в «20 строк» этот подход прекрасно «прокатывает» на практике. А то, что сколько-нибудь серьёзные проекты не компилируются, это проблемы этих проектов. Слава Богу, теперь понятен механизм возникновения проблемы и теперь стало понятно, как с этим бороться.
Конкретный пример

Вспомним портирование АМС на Genuino 101 (работает начиная с версии 1.6.7 и выше). Тут команда Ардуино припасла для нас очередной прикол (молодцы ребята, не дают нам расслабляться).
Попытка откомпилировать проект для нового контроллера приводила к появлению множества ошибок компилятора. Анализ сообщений показал, что компилятору категорически не нравится наша Ethernet библиотека. Чем же она так не угодила компилятору?
Наша библиотека: version=1.0.4 (не нравится компилятору)
Библиотека из IDE 1.6.7: version=1.0.4 (нравится компилятору)
Наша библиотека: 31 файл (не нравится компилятору)
Библиотека из IDE 1.6.7: 31 файл (нравится компилятору)
Наша библиотека: 123 КБ (не нравится компилятору)
Библиотека из IDE 1.6.7: 123 КБ (нравится компилятору)
Другими словами, Марио «засунул» в IDE 1.6.7 Ethernet библиотеку с одним и тем же номером версии, что и в IDE 1.6.5, одним и тем же количеством файлов и с одним и тем же размером, но с РАЗНЫМ СОДЕРЖИМЫМ и забыл нас об этом предупредить. А это самое «разное содержимое» как паук держится своими лапками за IDE и другие библиотеки более низкого уровня (тоже модифицированные в 1.6.7).
Браво, Марио! С таким подходом ничего не будет компилироваться, кроме стандартных примеров и скетчей в 20 строк.
Практическое решение (головоломок от Ардуино)
Теперь стал кристально ясен механизм того, почему не компилируются проекты в разных версиях Arduino IDE и, соответственно, так же кристально стал ясен путь решения этой проблемы. В данном конкретном случае решение состоит из трёх частей.
- Часть первая. Нахождение работающей библиотеки. Помните, задача у выпускающей команды создать непротиворечивую версию IDE? Значит где-то должна быть работающая версия нужной нам библиотеки.
- Часть вторая. Перенесение работающей Ethernet библиотеки от шалуна Марио на её место в проекте Arduino Mega Server. Здесь нет ничего сложного — просто копируем её на место нашей неработающей в IDE 1.6.7 Ethernet библиотеки.
- Часть третья. Модификация под проект Arduino Mega Server перенесённой и заведомо работающей в IDE 1.6.7 Ethernet библиотеки.
Заключение
Вот и весь секрет успешной работы в Arduino IDE со сложными проектами. Теперь вы можете чувствовать себя во всеоружии и для вас не составит труда заставить работать ваш проект в любой версии Arduino IDE.
- Умный дом
- Интернет вещей
- DIY или Сделай сам
Источник: habr.com
Драйвер для arduino CH340G 119
Выяснил, что драйвер для устройства автоматически не устанавливается.
Причиной тому использование микросхемы CH340G. Можно увидеть на фото (в верху стандартный вариант, в низу новый, с микросхемой CH340G). Много кто пытается найти драйвер для CH340G и как установить драйвера для CH340G.

После подключения arduino nano в диспетчере устройств появится USB 2.0 SERIAL, но windows 7 драйвера найти не сможет…

- Скачиваем драйвер CH340G и разархивируем его. Я разархивировал в папку «C:Program FilesArduinodrivers»
- Возвращаемся в диспетчер устройств, кликаем правой кнопкой по USB 2.0 SERIAL и выбираем «Обновить драйверы…«

- Выбираем Выполнить поиск драйверов на этом компьютере

- Указываем путь куда разархивировали папку с драйвером ( C:Program FilesArduinodrivers)

- В появившемся окне с предупреждением о том что «Не удалось проверить издателя этих драйверов», кликаем Все равно установить этот драйвер!

- Вот и все, драйвер установлен! Система выдает уведомление «Обновление программного обеспечения для данного устройства завершено успешно»

В диспетчере устройств появится новый COM порт

Поделиться ссылкой:
- Нажмите, чтобы поделиться на Twitter (Открывается в новом окне)
- Нажмите здесь, чтобы поделиться контентом на Facebook. (Открывается в новом окне)
Источник: smart-chip.ru