Arduino мигает светодиод l

Мигание встроенным на плату Arduino светодиодом

На этом уроке Вы научитесь программировать свою плату Arduino на примере мигания встроенным светодиодом.

Необходимые элементы

Для данного примера Вам понадобится плата Arduino (в данном случае – Arduino Uno R3, но Вы сможете проработать данный пример, имея в наличии и другую плату) и кабель USB (типа A (4х12 мм) – B (7х8 мм) – более подробно можно почитать на Вики).

Что такое ” L” светодиод

На Arduino Uno присутствуют ряды коннекторов типа мама по бокам платы, которые используются для подключения периферийных электронных устройств или “шилдов”.

Кроме того, на плате присутствует встроенный светодиод (англ. – LED), которым Вы можете управлять с помощью скетчей. Этот встроенный светодиод условно назовем “L” светодиод, как это принято на многих англоязычных ресурсах.

Расположение данного светодиода на плате отмечено на фото снизу.

Загрузка примера “Blink” (мигание) в Arduino IDE

При подключении новой платы к персональному компьютеру, обратите внимание, что светодиод начинает мигать, так как все платы от производителей поступают с уже “залитым” скетчем “Blink”.

На этом уроке мы перепрограммируем нашу плату, изменив частоту мигания светодиода. Не забудьте настроить оболочку Arduino IDE и выбрать нужный серийный порт, по которому Вы подключили Вашу плату.

Пришло время проверить Ваше подключение и запрограммировать плату.

В оболочке Arduino IDE существует большая коллекция скетчей, которые уже готовы к использованию. Среди них находится и пример, который заставляет мигать “L” светодиод.

Откройте пример “Blink”, который находится в пункте меню File – Examples – 01.Basics

После открытия, расширьте окно оболочки Arduino IDE, чтобы Вы могли весь скетч в одно окне.

Скетчи из примеров, включенные в Arduino IDE предусматривают режим “только чтение” (“read only”). То есть, загрузить их на плату Вы сможете, но после изменения кода, Вы не сможете их сохранить в том же файле.

Мы будем изменять скетч, так что в первую очередь Вам необходимо сохранить собственную копию, которую Вы сможете изменять.

Из меню “File” выберите опцию “Сохранить как” (“Save As..”) и сохраните скетч под подходящим Вам названием, например, “MyBlink”.

Вы сохранили копию скетча “Blink” в Вашей библиотеке. Теперь открыть этот файл Вы можете в любой момент, перейдя по вкладке File – Scetchbook.

Загрузка примера “Blink” (мигание) на плату

Подключите свою плату Arduino к компьютеру с помощью USB и проверьте тип платы (“Board type”) и серийный порт (“Serial Port”), по которому она подключена.

Текущие настройки отображаются внизу окна оболочки Arduino IDE

Кликните на кнопку “Загрузить” (“Upload”)

Во время загрузки в нижней части окна IDE появятся ползунок загрузки и сообщения. Вначале появляется фраза “Компилирование” (“Compiling scetch..”), что означает процесс конвертирования Вашего скетча в формат, подходящий для загрузки на плату Arduino.

Дальше статус сменится на “Загрузка” (“Uploading”). В этот момент светодиоды на плате начнут мигать, так как начнется перенос скетча в микропроцессор.

В конце статус сменится на ”Загрузка завершена” (“Done uploading”). В сообщении, которое появится в текстовой строке отобразится информация о том, что загруженный скетч занимает 1,084 байта из 32,256 доступных.

Иногда при компиляции у Вас может возникнуть подобная ошибка:

Причин может быть несколько: Вы не подключили плату к компьютеру; Вы не установили необходимые драйвера; Вы выбрали некорректный серийный порт.

Если же загрузка прошла корректно, плата Arduino перезагрузится и “L” светодиод начнет мигать.

Пояснения к скетчу “Blink”

Ниже представлен код скетча “Blink”.

Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.

// Pin 13 has an LED connected on most Arduino boards.

// the setup routine runs once when you press reset:

// initialize the digital pin as an output.

// the loop routine runs over and over again forever:

digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(led, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

Первое, на что стоит обратить внимание: в данном скетче множество “комментариев”. Обратите внимание, что комментарии не являются инструкцией по работе программы. Это исключительно пояснения отдельных функций и задач, которые выполняются на определенном этапе кода. Это не обязательная часть кода. Все между символами /* и */ в верхней части скетча – это комментарии, в которых описаны задачи программы. Так же есть комментарии, которые ограничиваются одной строкой. Они начинаются с символов // и заканчиваются по умолчанию в конце строки. Первая важная, по сути, часть данного кода это строка:

В комментариях над строкой указано, что мы присваиваем имя пину, к которому подключен светодиод. На большинстве плат Arduino это будет 13 пин. Дальше используется функция “Setup”. Опять-таки, в комментариях указано, что функция срабатывает после нажатия кнопки “reset”. Также эта функция срабатывает, когда плата перезагрузится по каким-либо другим причинам. Например, подача питания или после загрузки скетча.

// the setup routine runs once when you press reset:

// initialize the digital pin as an output.

Каждый скетч Arduino обязан включать в себя функцию “setup” и часть, в которую вы можете добавлять собственные инструкции, заключенные между < >. В нашем примере в функции присутствует только одна команда, в которой указано, что пин, который мы используем, настраивается на “вывод” (“Output”). Также обязательным для любого скетча является функция цикла “Loop”. В отличие от функции “Setup ”, которая отрабатывает один раз после перезагрузки, функция “Loop” после окончания работы команд, вновь запустится.

// the loop routine runs over and over again forever:

digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(led, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

В теле функции “Loop” светодиод включается (HIGH), данное значение задерживается на 1000 миллисекунд (1 секунда), светодиод отключается (LOW) и остается выключенным на 1 секунду, после чего цикл повторится.

Изменение частоты мигания светодиода

Для того, чтобы обеспечить более частое мигание светодиода, необходимо изменить параметр, указываемый в скобках ( ) в команде “delay”.

Как уже было указано, период задержки указывается в миллисекундах. То есть, для того, чтобы заставить светодиод мигать в два раза чаще, необходимо изменить значение с 1000 на 500. В результате, пауза между включением/выключением светодиода составит половину секунды и светодиод будет мигать быстрее.

Для проверки, не забудьте загрузить измененный скетч на плату Arduino.

Мигаем светодиодом

Будем постепенно знакомиться с основами программирования, платой и другими полезными вещами. Это позволит избежать стресса от потока новой информации.

Хотя я немного разбираюсь в программировании, сегодня притворюсь, что никогда не слышал о языках программирования и постараюсь максимально доходчиво показать, как новичок осваивает новую для себя деятельность.

Во-первых, нам придётся писать примеры на C++-подобном языке. Поэтому можете похвастаться перед знакомыми, что пишите программы на C++. Во-вторых, он очень упрощённый, и вам не нужно бояться его.

01.Basics: Blink

Второй пример будет немного сложнее, ведь придётся подключать плату к компьютеру. Но есть и хорошая новость — нам не понадобятся дополнительные прибамбасы в виде проводов, датчиков, светодиодов, кнопок. Дело в том, что на плате уже есть один маленький встроенный светодиод, вот мы его и включим.

Запускаем скетч File | Examples | 1.Basics | Blink (Файл | Примеры | 1.Basics | Blink). У вас загрузится готовый пример с кодом. С его помощью мы можем увидеть, что плата работает.

Читать еще:  Акриловые краски по дереву для декора

Выбираем нашу плату — в меню Tools | Board (Сервис | Плата) должна быть отмечена Arduino Uno (как правило по умолчанию она уже отмечена). У вас может быть другая плата. Естественно, вы должны уже подключить плату к компьютеру через USB-порт для загрузки скетча в микроконтроллер.

Теперь нужно выбрать последовательный порт. Опять идём в меню Tools | Serial Port (Сервис | Последовательный порт) и выбираем нужный порт (обычно это COM3 или COM4).

Теперь нам необходимо загрузить открытый пример Blink на микроконтроллер. Просто щёлкните на кнопкуUpload (Загрузить) и внимательно смотрите на плату. Вы увидите, что светодиоды, помеченные как RX и TX будут мигать. После успешной загрузки примера в контроллер, в строке состояния среды разработки появится надпись Done uploading (Загрузка выполнена).

Ещё ниже в области консоли будет выведено сообщение:
Sketch uses 930 bytes (2%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.

В сообщение выводится информацию об используемой памяти. Программа настолько проста, что почти ничего не потребляет (0% оперативной памяти и 2% постоянной памяти).

Через несколько секунд после загрузки, вы можете увидеть, что светодиод, помеченный на плате как 13 (L), будет мигать оранжевым цветом. Поздравляю, вы успешно установили среду разработки и запустили свою первую программу!

Обращу внимание, что в комментариях к коду написано, что листинг менялся несколько раз. Так выглядел код в предыдущий раз.

Сравните с текущей версией.

Теперь вместо создания отдельной переменной led используется встроенная константа LED_BUILTIN. Это удобно, так как в разных платах используются разные значения для встроенного светодиода и таким образом программа получилась универсальной.

Возвращаемся к первой программе BareMinimum. Откройте скетч и сделайте сначала первую вещь — нажмите на кнопку Verify (первый значок с галочкой). Среда разработки переводит ваш код в машинный код, т.е. компилирует. Если в вашем коде есть ошибка, то компилятор выведет сообщение. Это полезно, чтобы не тратить зря время на загрузку заведомо неработающей программы. Давайте сознательно сделаем ошибку — напишем код в функции setup().

С точки зрения кошатника, здесь всё написано правильно. Предложение написано без ошибок, есть даже точка с запятой в конце строки — всё как положено.

Проверим. Нажимаем кнопку Verify и видим сообщения с красным текстом. Его текст приводить не буду, сами убедитесь. Если программа с ошибкой, то нет смысла её загружать на плату. Даже если вы очень упрямый и всё-равно нажмёте кнопку Upload, то получите ту же ошибку. Иными словами, Upload сначала самостоятельно выполняет операцию Verify и при отсутствии ошибки загружает скетч.

Разбор примера

Мы запустили программу, чтобы помигать светодиодом. Но делали это неосознанно, повторяя шаг за шагом описываемые действия. В дальнейшем вам придётся самому писать код, а значит пора ознакомится с основами программирования.

Изучим код шаг за шагом.

В функции setup() мы видим три строчки:

Приблизительный перевод комментариев, которые используется в функции setup() можно перевести как:

Дальше следует сам код, который делает операцию, описанную в комментариях. Обратите внимание, что команда завершается точкой с запятой:

В старых версиях код был немного другим:

Разработчики позже написали более грамотный код, вынеся число 13 в отдельную переменную led.

Комментарий можно перевести как:

Сейчас код обновили, и вместо переменной led используют константу LED_BUILTIN. Такой подход удобен, так как не все платы Arduino имеют встроенный светодиод на порту 13. Если у вас две разные платы и одна из них имеет нестандартный номер, то вам не придётся переписывать пример под каждую плату. Например, у плат MKR1000 встроенный светодиод находится на порту 6.

Нам встретилась новая функция pinMode(), которая устанавливает режим для портов. Функция состоит из двух параметров. В первом параметре указывается порт, с которым мы собираемся работать. Во втором параметре мы сообщаем, как должен работать указанный порт: работать на выход (OUTPUT) или вход (INPUT). В нашем примере, вывод под номером 13 (или другой порт, используемый встроенным светодиодом) должен выводить информацию (посылать сигнал), то есть давать указание мигать светодиоду.

Мы определили в функции setup() необходимые данные для начала работы и теперь можем приступить к непосредственной реализации задачи в функции loop().

Здесь мы видим уже четыре строчки кода. Первая строчка включает светодиод при помощи функции digitalWrite(). В первом параметре мы указываем номер порта, с которым собираемся работать, а во второй указываем константу HIGH. Забегая вперёд, могу сказать что константа HIGH равна 1, и можно было написать digitalWrite(13, 1). Но такая запись не очень удобна, так мельтешение цифр в большом проекте затрудняет чтение кода. А здесь вы сразу видите, что на порту под номером 13 включается светодиод.

Далее идёт команда, отвечающая за паузу — delay(), которая имеет один параметр — количество времени в миллисекундах. В нашем примере мы сделали паузу в одну секунду (1000 миллисекунд = 1 секунда).

Следом идёт уже знакомая нам функция digitalWrite(), но уже с параметром LOW, который выключает светодиод (значение константы LOW равно 0).

И последняя строчка снова делает паузу в одну секунду.

Посмотрим, как работает программа. Когда мы загружаем программу в микроконтроллер, то Arduino активирует порт 13 в режиме выхода (функция setup()), а затем начинает последовательно выполнять четыре строчки из функции loop(): включает диод-пауза-выключает диод-пауза. Когда эти четыре строчки будут выполнены, то они снова будут вызваны и будут повторяться до тех пор, пока мы не выдернем кабель.

Немного о паузе. Теоретически можно убрать вызов функции delay() и программа будет работать. Проблема в другом — контроллер работает с частотой 16 миллионов герц (герц — одно колебание в секунду; если команда длится один такт, вывод переключается 16 миллионов раз в секунду, соответственно, состояние вывода меняется каждые 0,0000000625 секунды), человеческий глаз не способен увидеть реакцию светодиода. Необходимо немного увеличить интервал между двумя командами включения и выключения светодиода.

Что мы можем изменить в данной программе? По большому счету ничего — мы можем установить только собственные значения пауз. Поэкспериментируйте с этим. Другие изменения результата не принесут — нет смысла, например, сейчас использовать другой порт или использовать режим INPUT.

Добавляем свой светодиод (+светодиод)

Мы научились мигать встроенным светодиодом. Но на самом деле у вас не будет возможность пользоваться встроенными компонентами, а придётся самостоятельно собирать нужную конструкцию и взаимодействовать с ней. Поэтому нам понадобится отдельный светодиод, который и будет у нас и мигать, и затухать, и кашу варить (насчёт последнего я, пожалуй, погорячился). Можно использовать любой светодиод — красный, зелёный, синий.

Напомню, что диод проводит ток в одном направлении. Следовательно, необходимо всегда правильно устанавливать светодиод в своих схемах. Встроенный светодиод уже правильно припаян к плате Arduino (скажем спасибо разработчикам).

В светодиодах короткую ножку («минус») светодиода нужно соединять с землёй (GND). Светодиод не рассчитан на большой ток. Чтобы не повредить светодиод, используйте с ним резистор. Он позволяет уменьшить силу тока. В противном случае светодиод прослужит недолго или просто сгорит. Полярность резисторов не важна. Сам резистор можно подключать как до светодиода, так и после него. Я привык сначала ставить резистор, а потом светодиод по направлению от источника питания к земле.

Из первого примера с встроенным светодиодом мы помним, что он использует вывод под номером 13 (на большинстве плат). На плате есть свободный вывод с этим номером, который находится рядом с выводом GND. Берём светодиод и вставляем в эти выводы. Не забываем, что короткую ножку вставляем в GND, а длинную в вывод 13. У вывода 13 уже установлен резистор, поэтому светодиод не сгорит.

Запускаем снова программу Blink. Теперь будут мигать два светодиода: встроенный и наш. Красота!

Вернёмся к светодиодам. Как правило, в цепи идёт слишком большой ток для светодиодов. Чтобы уменьшить силу тока, используют токопонижающие резисторы (сопротивления). У светодиодов есть важные характеристики: ток питания и напряжение падения (Forward voltage). Невероятно, но факт — светодиоды разных цветов используют разные значения напряжения падения. Максимальный ток для светодиодов колеблется в районе 20 миллиампер. Для вычисления значения сопротивления используют формулу: из напряжения питания вычитаем напряжение падения и результат делим на силу тока в светодиоде в амперах. В документации обычно рекомендуют использовать резистор от 220 ohm до 1K ohm. На практике, можно использовать и 100 ом. Если поставите меньше, то будет риск спалить светодиод. При выполнении опытов с несколькими светодиодами вы можете установить разные резисторы, чтобы увидеть разницу.

Читать еще:  Hemerocallis stella de oro

На следующем уроке мы поближе познакомимся с цифровыми выводами и попробуем изменять программы под свои нужды.

Урок 12. Мигаем светодиодом Ардуино

Мы уже изучили основные вопросы по работе с аналоговыми входами/выходами. В этом уроке мы подключим нашу светодиодную цепь к одному из цифровых выводов Arduino, включим и выключим светодиод с помощью кода. Мы закрепим знания полезных функций, встроенных в язык Arduino. Нам важно на данном этапе запомнить когда и как использовать три основные функции.

pinMode(pinNumber, mode)

pinMode() (см. в справочнике) используется в setup() скетча, чтобы инициализировать каждый вывод, который мы используем в качестве входа или выхода.

Мы не можем считывать или отправлять на контакт что-либо до того, как будет определена функция pinMode().

Функция pinMode() принимает два аргумента — номер пина (как мы уже проходили в уроках ранее — каждый из выводов Arduino помечен номером) и тот режим, в котором нам нужен этот вывод — это INPUT или OUTPUT. В случае мигания светодиода мы отправляем данные из Arduino, чтобы контролировать состояние светодиода, поэтому мы используем OUTPUT в качестве второго аргумента.

digitalWrite(pinNumber, state)

digitalWrite() — это команда, которая позволяет нам устанавливать напряжение на выводе либо на 5 В, либо на землю (помните, что «земля» является синонимом 0 Вольт). Ранее мы подключали светодиод к источнику питания 5 В и увидели, что он включается.

Если вместо этого мы подключаем светодиод к одному из цифровых выводов Arduino, мы можем включить светодиод, установив вывод на 5 В, и выключить его, установив вывод на земле.

digitalWrite() также принимает два аргумента — номер контакта и состояние контакта (HIGH для 5 В и LOW для заземления).

delay(timeInMs)

delay() приостанавливает программу на заданный промежуток времени. Например, delay(2000) приостановит программу на 2000 миллисекунд (2000 миллисекунд = 2 секунды), delay(100) приостановит программу на 100 миллисекунд (1/10 секунды) и так далее.

Перед написанием финальной программы мы делаем соединения используя макетную плату.

Пишем код мигающего светодиода, который мы запустим на нашем Arduino.

Строки, начинающиеся с // являются комментариями — наши платы Arduino их игнорирует. Хорошие программисты очень часто оставляют комментарии в программе.

Также вы уже заметили все точки с запятой. Точки с запятой используются в конце каждой команды на большинстве языков программирования, в том числе и в Arduino. Если вы забудете точку с запятой, то вы увидите ошибку. Со временем, изучая другие области разработки, вы обнаружите, что многие другие языки программирования используют точки с запятой в конце каждой строки.

В этом коде ledPin является переменной. Переменные используются для хранения информации в программах, в этом скетче используем переменную ledPin для хранения числа 7. Позже в программе когда Arduino дойдет до строки с переменной ledPin, плата оценит переменную в соответствии с её текущим сохраненным значением. Итак, строка:

вычисляется Arduino как:

Фактически, мы могли бы заменить все виды использования pinMode числом 7, и программа работала бы точно так же, но использование переменной помогает нам легче читать и понимать код.

int в первой строке — это обозначение типа данных. В языке Arduino, который создан на основе C++, вы всегда должны инициализировать переменные, объявив их тип. Существует много разных типов, но пока на данном этапе нам нет необходимости их изучать. Сейчас все, что вам нужно знать — это то, что переменные типа int являются положительными или отрицательными целыми числами и вы будете часто это использовать.

Как и ожидалось, светодиод включается на одну секунду, затем выключается на одну секунду. Попробуйте изменять delay(), чтобы увидеть, как это влияет на время мигания светодиода.

Еще одна вещь, на которую стоит обратить внимание — ошибка, которую часто совершают многие. Ошибка заключается в том, что многие пропускают последний delay() в цикле loop(). Попробуйте воспроизвести эту ошибку — вы обнаружите, что светодиод остается включенным, не мигая. Это может сбить вас с толку, потому что у нас все еще есть команда digitalWrite(ledPin, LOW) в программе.

Здесь происходит отключение светодиода, но Arduino сразу же попадает в конец цикла loop() и снова начинает выполнение первой строки цикла (включение светодиода). Это происходит так быстро, что человеческий глаз не видит, как светодиод выключается на этот короткий момент, пока wbrk перезапускается.

Arduino – мигание светодиодом. Описание кода

Как уже завелось, практически каждый курс программирования начинается с программы «Hello World!», то есть, с самого простого кода, который мы можем написать, загрузить, а после наслаждаться проделанной работой.

Во встроенных системах, к которым можно отнести Arduino, простой программой является такая, которая производит поочередное включение и выключение светодиода.

Но прежде чем перейти к сборке схемы и программированию, мы познакомимся с базовой структурой программы, которая пишеться в Arduino IDE.

Весь проект Arduino был создан в качестве основы для быстрого и легкого создания и тестирования различных электронных и информационных проектов.

Типовая встроенная система работает от включения питания и до его отключения. При включении питания вначале устанавливаются параметры загрузки, а затем система выполняет программу в бесконечном цикле.

Arduino IDE упрощает программирование, создавая по умолчанию две необходимые функции: setup() и loop().

В соответствии с их названиями первая функция позволяет определить начальные параметры (стартовые), а во второй находится сам код программы, который выполняется в бесконечном цикле.

Приведенный выше код — это самый простой код программы, который можно написать, скомпилировать и запустить с помощью Arduino IDE. Правда Arduino ничего не будет делать, а только позволит скомпилировать и запрограммировать контроллер. Теперь давайте перейдем к основной части статьи.

Как подключить светодиод к Arduino Uno

Для теста нам понадобится:

Все соединяем, согласно указанной схеме.

Конечно можно подключить светодиод и резистор без использования макетной платы и соединительных проводов, но данное решение является более универсальным и элегантным.

Как можно видеть, мы использовали два контакта Arduino. Первый из них pin13 будет служить для управления светодиодом, второй – минус схемы.

Следует обратить внимание на полярность светодиода. Анод (+) светодиода нужно подключить через резистор к pin13. Катод (-) светодиода подключаем к минусу платы. После проверки правильности соединения мы можем перейти к написанию нашей первой программы.

Наша первая программа позволит поочередно включать и выключать светодиод. Частота мигания светодиода составит около 1Гц.

Программа начинается с объявления используемого контакт (ledPin). С этого момента везде, где мы будем ссылаться на «ledPin», будет ссылка на pin13 Arduino.

Затем в функции setup() мы указываем, что наш pin13 будет использоваться как выход.

Функция pinMode(pin, mode) позволяет определить, будет ли использоваться наш контакт как вход или как выход. Первый параметр функции это номер контакта, второй предопределенное значение INPUT (вход) или OUTPUT (выход).

При написании кода вы можете использовать номера контактов напрямую, но метод, приведенный в этом примере, является гораздо лучшим решением для читаемости программы.

Функция loop() содержит непосредственно сам код программы, который выполняется в бесконечном цикле.

Функция digitalWrite(pin, value) позволяет изменять статус каждого из контактов. Цифровые выходы могут иметь низкий (LOW) или высокий (HIGH) логический уровень. LOW (лог.0) — электрически замкнут на минус, а HIGH (лог.1) — около 5 В.

Номер порта в функции digitalWrite () может быть указан непосредственно в виде числа (в нашем случае 13) или обозначен так, как мы прописали его в функции pinMode () (т.е ledPin).

Читать еще:  Einhell 18в power x change

Последним элементом программы является функция delay(), которая останавливает выполнение программы на определенное время. Время задается в миллисекундах. Одна секунда это 1000 мс.

Зная, для чего служат отдельные функции программы, мы можем изучить работу программного кода целиком:

Итак, pin13 Arduino устанавливается как выход. Следующим шагом идет установка высокого состояния на Pin13 и приостановка дальнейшего выполнения кода на 0,5 сек. Затем Pin13 устанавливается в низкое состояние и исполнение кода приостанавливается на 0,5 сек. Согласно философии написания программ в Arduino IDE, функция loop () выполняется в бесконечном цикле, что вызовет визуальное мигание светодиода.

После того, как вы написали программу, скомпилируйте ее и отправьте в Arduino. Если все шаги были выполнены правильно, светодиод должен начать мигать с частотой примерно в 1 Гц.

При отсутствии положительного результата необходимо еще раз проверить правильность соединений и программный код.

Arduino мигает светодиод l

попала мне в руки Arduino Nano. Беда в том, что у меня не получается подключить её к компьютеру.
При подключении система говорит «неопознанное USB-устройство». Пытался ставить всякие-разные драйверы (для FT232RL, например, как рекомендовано) — ноль эмоций.
Код 10 и всё такое.

При этом, что интересно, после включения в питания на ардуинке начинает периодически мигать test LED, хотя бутлоадер по идее дергать его не должен.
Есть идеи?

Здравствуйте, 0x7be, Вы писали:

0>При этом, что интересно, после включения в питания на ардуинке начинает периодически мигать test LED, хотя бутлоадер по идее дергать его не должен.
0>Есть идеи?

У меня такое было. Решил, что мертвая. Может, не вся, а только USB-шный чип. Выкинул, благо заказал сразу пучек

Здравствуйте, Marty, Вы писали:

M>У меня такое было. Решил, что мертвая. Может, не вся, а только USB-шный чип.
Я залез внутрь ISP-программатором — сам контроллер живой, отзывается.
Видимо, USB-чип и правда накрылся.
Тут ещё походу дела нашёл информацию о том, что FTDI выпускала драйвера, которые кирпичат китайские поддельные чипы.
Для такой дикости даже слов не нашёл.

M>Выкинул, благо заказал сразу пучек
А где брал?

Здравствуйте, 0x7be, Вы писали:

M>>Выкинул, благо заказал сразу пучек
0>А где брал?

Да на али где-то

Здравствуйте, 0x7be, Вы писали:

0>При подключении система говорит «неопознанное USB-устройство». Пытался ставить всякие-разные драйверы (для FT232RL, например, как рекомендовано) — ноль эмоций.

FT232 бывают левые, попробуй поискать старые дрова, они более либерально к ним относятся.

Здравствуйте, Ops, Вы писали:

0>>При подключении система говорит «неопознанное USB-устройство». Пытался ставить всякие-разные драйверы (для FT232RL, например, как рекомендовано) — ноль эмоций.
Ops>FT232 бывают левые, попробуй поискать старые дрова, они более либерально к ним относятся.
Поискал, выполнил все танцы с бубнами в разных вариантах — всё равно не пашет. То чип убили новые дрова, то ли он просто бракованный.
Насобачился через ISP-разъем в контроллер залезать.

Здравствуйте, 0x7be, Вы писали:

0>Поискал, выполнил все танцы с бубнами в разных вариантах — всё равно не пашет. То чип убили новые дрова, то ли он просто бракованный.
Вроде окирпиченные тоже как-то оживляли, но я это года 3-4 назад читал, сейчас может и не откопать те посты.

Здравствуйте, 0x7be, Вы писали:

0>Тут ещё походу дела нашёл информацию о том, что FTDI выпускала драйвера, которые кирпичат китайские поддельные чипы.

А там точно FTDI? В китайских ардуинах стоят чипы CH340/341.

Здравствуйте, 0x7be, Вы писали:

0>При этом, что интересно, после включения в питания на ардуинке начинает периодически мигать test LED, хотя бутлоадер по идее дергать его не должен.
Бутлоадер на ардуинках не так работает — он сразу после ресета некоторое время ждёт передачи «магической последовательности» через UART. Если она не приходит — то он бутает программу. Во все ардуины зашивают тестовую «мигалку» при производстве — она мигает тестовым диодов раз в секунду.

0>Есть идеи?
Скорее всего у тебя в руках китайский левак, после того, как FTDI на них наехала за клонирование своего чипа, они там какой-то свой USB-мост используют, потому и дрова для него нужны свои. Посмотри внимательнее на маркировку чипа моста под лупой.

Здравствуйте, koandrew, Вы писали:

K>Скорее всего у тебя в руках китайский левак, после того, как FTDI на них наехала за клонирование своего чипа, они там какой-то свой USB-мост используют, потому и дрова для него нужны свои. Посмотри внимательнее на маркировку чипа моста под лупой.
Я знаю про эти чипы, их звать CH340G. Но у меня на ардуинке стоит именно FT232RL — по маркировке и количеству ног совпадает. Конечно, клон китайский, скорее всего.

Здравствуйте, pugv, Вы писали:

0>>Тут ещё походу дела нашёл информацию о том, что FTDI выпускала драйвера, которые кирпичат китайские поддельные чипы.
P>А там точно FTDI? В китайских ардуинах стоят чипы CH340/341.
Точно — маркировка и количество ног совпадают.

Здравствуйте, 0x7be, Вы писали:

0>Я знаю про эти чипы, их звать CH340G. Но у меня на ардуинке стоит именно FT232RL — по маркировке и количеству ног совпадает. Конечно, клон китайский, скорее всего.

Ну тогда хз. Я себе уже давно купил Atmel ICE, он умеет прошивать любые их чипы из IDE. Из «ардуины» я уже вырос, изредка использую Due (потому что она 3.3 В) только для прототипирования и первоначальных экспериментов с какими-нить чипами.

Здравствуйте, koandrew, Вы писали:

K>Ну тогда хз. Я себе уже давно купил Atmel ICE, он умеет прошивать любые их чипы из IDE. Из «ардуины» я уже вырос, изредка использую Due (потому что она 3.3 В) только для прототипирования и первоначальных экспериментов с какими-нить чипами.
Похоже, просто брак. Я забил и использую ISP-разъём + WizardProg87i. Сам контроллер работает без проблем.
Зато можно бутлоадер выкинуть и сэкономить 2.5 килобайта флеш-памяти

Здравствуйте, 0x7be, Вы писали:

0>Похоже, просто брак. Я забил и использую ISP-разъём + WizardProg87i. Сам контроллер работает без проблем.
0>Зато можно бутлоадер выкинуть и сэкономить 2.5 килобайта флеш-памяти

А нафига тогда тебе остальная плата-то? Купи лучше чипы отдельно — они стоят намного меньше, а обязательной обвязки там нет — просто подключаешь питание и программатор к нужным пинам — и вперёд. Разве что подтяжку для сброса рекомендуют ставить, чтобы проц не ресетился от рандомных наводок на «плавающий» вывод. Если не хочется возиться с SMT, эти атмеги бывают и в «классическом» корпусе DIP, которые удобно в бредборд втыкать.

Я кстати так и сделал — накупил разных атмеловских чипов по 2-3 штуки каждого типа (несколько разных 8-битников AVR, несколько типов ARM Cortex M0+, и один Cortex M4), и припаял их на адаптеры. Очень удобно экспериментировать, и всегда можно поставить чип «потолще», если ресурсов не хватает, ну или если ног маловато стало.

Здравствуйте, koandrew, Вы писали:

K>А нафига тогда тебе остальная плата-то? Купи лучше чипы отдельно — они стоят намного меньше, а обязательной обвязки там нет — просто подключаешь питание и программатор к нужным пинам — и вперёд. Разве что подтяжку для сброса рекомендуют ставить, чтобы проц не ресетился от рандомных наводок на «плавающий» вывод. Если не хочется возиться с SMT, эти атмеги бывают и в «классическом» корпусе DIP, которые удобно в бредборд втыкать.
K>Я кстати так и сделал — накупил разных атмеловских чипов по 2-3 штуки каждого типа (несколько разных 8-битников AVR, несколько типов ARM Cortex M0+, и один Cortex M4), и припаял их на адаптеры. Очень удобно экспериментировать, и всегда можно поставить чип «потолще», если ресурсов не хватает, ну или если ног маловато стало.
Мне тоже больше нравится идея «голого» чипа и я прикупил себе так же несколько штук контроллеров в DIP-корпусах.
Но эта ардуинка — часть другого товара, контроллера для робота, который заточен именно под Arduino Nano, поэтому мне пришлось повозиться с ним. Я эту платку купил, чтобы с сыном заниматься, робота с ним делаем
(юный техник и творение). Ему и с этим пока сложновато

Ссылка на основную публикацию
Adblock
detector