Пауза в 5 раз больше стала, скорее всего, из-за обработчиков прерываний. Вообще, эти макросы _delay_ms() и прочие подобные создают цикл задержки, учитывая только тактовую частоту контроллера, но по очевидным причинам не принимают во внимание время на обработку прерываний.
В ПДД это довольно чётко описано (раздел 8, пункт 1). Вопрос ещё в том, что манёвр можно обозначать одной рукой. Я обычно левую руку держу на тормозе, поэтому показываю правой: вытянутая вправо — поворот направо, согнута в локте и направлена вверх — налево.
Пользуясь случаем, передаю привет от первокурсников нашего общего университета! Все очень благодарны за вашу работу. (Правда, сам я по старой привычке жил и работал в vim… :) )
Респект автору, проект очень интересный! Но возник вопрос (возможно, по невнимательности): можно ли к системе подключать «нативные» драйверы (написанные на Си/С++ под хост-платформу)?
В программе очень много переменных типа float, и, соответственно, операций с ними.
Ну, на самом деле, если контроллер выполняет только одну задачу (например, данную), на глаз это не заметно. Другое дело, если вы захотите написать что-то более серьёзное, а особенно при использовании прерываний, могут начаться проблемы. Время выполнения операций с плавающей точкой на AVR идёт даже не на микро-, а на миллисекунды.
Да, большие массивы могут так же неожиданно заполнить всю оперативку (которой в ардуине совсем немного, в Uno всего 2 КБ).
Современные симисторы вроде BT-139 с корпусом TO-220 могут протащить через себя долговременный ток 16А и пиковый что-то около 150А. Правда, его следует тогда снабдить радиатором.
На 220В мощность, которую выдержит симистор — порядка 3 кВт. Так что ТЭНом управлять можно. В крайнем случае можно поискать симостор чуть помощнее.
Ой, вот это точно в дефиците. Впрочем, кнопок я пока тоже не нашёл соответствующих, но есть прямая отсылка на китайских поставщиков типа dealextreme или satistronics.
Насчёт «программно переключаемого свитча» я бы предложил какое-нибудь touch-решение с led-индикацией, но для этого нужно либо самому разбираться, либо призывать радиолюбителей, кто с этим работал. Тут не помешает навык работы с МК, и всё зависит от того, куда всё это добро нужно подключать.
Отдельные большие кнопки — точно бывают, обычно квадратные (такие ставят на всякие игровые автоматы).
Что имеется в виду под «программным переключением положения»? Переключатели бывают, движковые, например (на игрушках разных обычно ставят). У него позиция чётко видна, можно сверху более аккуратную ручку установить.
Вот про блоки кнопок — надо искать. Сейчас на ЧиДе посмотрю, там всё слишком дорого, конечно, но зато есть очень грамотный каталог, можно хотя бы представить, что бывает.
К слову, (реальная) максимальная пропускная способность USB куда выше, чем у UART (тот же STM32F103, если не ошибаюсь, максимально разгоняет USART до 8 мегабит, и то, вряд ли терминал ПК протащит такую скорость, и провод нужно очень короткий и экранированный). Для USB гораздо меньше проблем в этом плане (хотя и STM32 не будет работать в High-speed, Full-speed с потолком в 12 Мб/с он протащит без особых проблем). Только это уже не HID-устройство будет, как автор сказал, а несколько другое.
Как мне кажется, UART очень хорошо использовать внутрисхемно (для соединения нескольких чипов) и для соединения с ПК какого-нибудь простого контроллера (типа AVR; хотя туда есть программный V-USB, не всегда разумно его использовать). Где можно использовать USB — почему бы и нет? Вопрос только в том, насколько часто ваше устройство должно связываться с ПК (мне очень часто приходится делать устройства, которые после однократной настройки по тому же UART уходят в «свободное плавание», там городить USB-стек смысла не вижу).
Мне кажется, что перевод иногда логично разбивать на части, хотя бы потому что перевод — это утомительный и долгий процесс. Просто для себя, особенно, если автор не занимается переводами профессионально. Хотя читать порой действительно не очень удобно.
Кстати, если я правильно понимаю, то при активном USB-соединении, мы теряем как минимум 2 ножки (D+ и D-). К тому же в программной реализации USB-стека на AVR (скорее всего, V-USB), в основном цикле вертится функция usb_poll(), которая кушает много процессорного времени.
А ещё интересно, как они разогнали её до 20 МГц. То есть, сам чип спокойно работает на этой частоте, но внешнего осциллятора я не вижу, а внутренний умеет только 8 МГц. Скорее всего, на плате есть отдельная RC-цепь, тогда ещё минус ножка.
<сарказм>А ардуино-совместимые платы на ATtiny5 сделают? Она ещё в несколько раз меньше.</сарказм>
Я сначала по 100 Ом навесил, после сборки оказалось, что всё довольно равномерно светится. Но вообще мне кажется, что в такой схеме лучше наоборот — уменьшить сопротивление на G и B. Дойдут руки — перепаяю. Хотя и сейчас всё в порядке.
Да, интересно… Есть такая штука, как Rolling Ball Switch, используются как индикаторы вибрации. Вроде бы простейшие не очень дорогие. Можно будет попробовать такой применить, при встряхивании обрабатывать прерывание на контроллере, переключая режим. Вместо выключения посылать контроллер в глубокий сон (он там около 1 мкА кушать будет, но это совсем не фатально, несколько лет будет держаться от CR2032).
И тогда пускать светяшки в производство, что уж там ;)
Ну, экспериментально не проверял, но можно посчитать из потребляемого тока и ёмкости типичной CR2032:
Самый большой ток (в режиме «все светодиоды на полную, белый свет») — 6.37 мА.
Когда не горит красный светодиод (в любом режиме) — не выше 1.8 мА.
Примем стандартную величину в 5 мА. Ёмкость CR2032 — 225 мА/ч.
Если не брать в расчёт экспоненту Пекерта, время работы от одной батарейки — 45 часов.
Если считать ток разряда 1.8 мА — 125 часов.
Kidar, если бы у меня под рукой были герконы, как в вашем случае, их можно было бы встроить в конструкцию. Но герконов не оказалось, да и манипуляции с батарейкой не очень сложные.
Опечатка так опечатка ;)
Ну, на самом деле, если контроллер выполняет только одну задачу (например, данную), на глаз это не заметно. Другое дело, если вы захотите написать что-то более серьёзное, а особенно при использовании прерываний, могут начаться проблемы. Время выполнения операций с плавающей точкой на AVR идёт даже не на микро-, а на миллисекунды.
Да, большие массивы могут так же неожиданно заполнить всю оперативку (которой в ардуине совсем немного, в Uno всего 2 КБ).
На 220В мощность, которую выдержит симистор — порядка 3 кВт. Так что ТЭНом управлять можно. В крайнем случае можно поискать симостор чуть помощнее.
Насчёт «программно переключаемого свитча» я бы предложил какое-нибудь touch-решение с led-индикацией, но для этого нужно либо самому разбираться, либо призывать радиолюбителей, кто с этим работал. Тут не помешает навык работы с МК, и всё зависит от того, куда всё это добро нужно подключать.
Что имеется в виду под «программным переключением положения»? Переключатели бывают, движковые, например (на игрушках разных обычно ставят). У него позиция чётко видна, можно сверху более аккуратную ручку установить.
Вот про блоки кнопок — надо искать. Сейчас на ЧиДе посмотрю, там всё слишком дорого, конечно, но зато есть очень грамотный каталог, можно хотя бы представить, что бывает.
Как мне кажется, UART очень хорошо использовать внутрисхемно (для соединения нескольких чипов) и для соединения с ПК какого-нибудь простого контроллера (типа AVR; хотя туда есть программный V-USB, не всегда разумно его использовать). Где можно использовать USB — почему бы и нет? Вопрос только в том, насколько часто ваше устройство должно связываться с ПК (мне очень часто приходится делать устройства, которые после однократной настройки по тому же UART уходят в «свободное плавание», там городить USB-стек смысла не вижу).
А ещё интересно, как они разогнали её до 20 МГц. То есть, сам чип спокойно работает на этой частоте, но внешнего осциллятора я не вижу, а внутренний умеет только 8 МГц. Скорее всего, на плате есть отдельная RC-цепь, тогда ещё минус ножка.
<сарказм>А ардуино-совместимые платы на ATtiny5 сделают? Она ещё в несколько раз меньше.</сарказм>
И тогда пускать светяшки в производство, что уж там ;)
Самый большой ток (в режиме «все светодиоды на полную, белый свет») — 6.37 мА.
Когда не горит красный светодиод (в любом режиме) — не выше 1.8 мА.
Примем стандартную величину в 5 мА. Ёмкость CR2032 — 225 мА/ч.
Если не брать в расчёт экспоненту Пекерта, время работы от одной батарейки — 45 часов.
Если считать ток разряда 1.8 мА — 125 часов.