telegamochka: (Default)
telegamochka ([personal profile] telegamochka) wrote2010-02-09 02:00 pm

Знакомство с Arduino, часть 2. Морзе-клавиатура: альфа-версия

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


Аккордная клавиатура - это...

видел твой код на хабре

[identity profile] kalobyte.livejournal.com 2010-02-10 07:52 pm (UTC)(link)
в один прекрасный момент ты упрешся в невозможность обойти некоторые ограничения этого языка
например в одной функции из него будет задействован таймер, а тебе он понадобится для других целей

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


можеш у меня почитать для начинающих http://kalobyte.com/category/avr-learning
http://kalobyte.com/category/noob-said
еще есть хороший материал http://easyelectronics.ru/category/nachinayushhim

Re: видел твой код на хабре

[identity profile] telegamochka.livejournal.com 2010-02-11 11:52 am (UTC)(link)
О низкоуровневом программировании некоторое представление имею - доводилось и программки для БЗ-34 писать (морской бой, самообучающаяся программа для игры в ним - в рамках 96 инструкций для процессора, 16 регистров и стека), и работать с ассемблером для Z80 и x86 (в основном работа с графикой - базовые операции с видеопамятью, всякие брезенхеймы, кое-что посложнее).

Что касается качества кода, processing, как я понимаю, вариация на тему классического C, которому не 10 и не 20 лет, который использовался и используется в т.ч. для программирования достаточно ограниченных по ресурсам устройств. А C-компиляторы (без плюсОв) давно отточены и генерят неплохой код. Так что для работы с некритичными по времени и объему задачами C вполне подходит. При том, что си-компилятор генерит вполне компактный код, он позволяет не задумываться ни о хранении переменных в регистрах, ни о стеке при работе с подрограммами. Как минимум для работы с альфа-бета версиями софта Си в 90% случаях годится - и предпочтительней, чем голый ассемблер.

Если алгоритмически отлаженная версия программы не устраивает в плане объема кода или времени выполнения - всегда можно или отдельные куски, или всю программу переписать на ассемблере. Но отладка сколько-нибудь сложного кода на ассемблере способна в разы затормозить работу. Преписать уже отлаженную сишную программу на ассемблер в большинстве случаев окажется быстрее.

> этот язык развращает

Классический C не может развратить :) Развращают и оболванивают - языки типа бейсика :) Вообще, язык стоит выбирать в зависимости от задачи. А одна из задач, которую мог бы решать Arduino, как мне кажется - это пробуждение интереса у тинейджеров к созданию собственных устройств. И тот же processing позволит интересующемуся подростку быстрее заняться реализацией своих идей. А разобравшись с азами, можно ассемблером заняться - если будет необходимость и желание :)

Спасибо за ссылки :)

Re: видел твой код на хабре

[identity profile] kalobyte.livejournal.com 2010-02-11 12:45 pm (UTC)(link)
я не имел в виду переход на асм, сам его с 94 года не осилил
я к тому, что твоя плата использует очень дорогой мк для твоей задачи
мега8 стоит 1.5 бакса и ты бы могла сделать свою клавиатуру с бездрайверным хид усб
сам софтовый усб занимает 2к и у тебя остается еще 6к
например http://www.obdev.at/products/vusb/hidkeys.html

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

и про компиляторы
гцц дает разницу до 56 байт между while и for в пользу while
разница между компиляторами для авр тоже огромна и гцц не самый оптимальный

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

Re: видел твой код на хабре

[identity profile] telegamochka.livejournal.com 2010-02-11 01:10 pm (UTC)(link)
> я к тому, что твоя плата использует очень дорогой мк для твоей задачи

Знаю, я покупала самую "навороченную" именно для того, чтобы на ней можно было собирать прототипы самых разнообразных устройств. Хотелось бы сделать аккордную клавиатуру, датчик пульса и беспроводной алфавитно-цифровой дисплей (по блюту цепляется к нетбуку терминала и выводит на очки-дисплей окно консоли в текстовом режиме). "Морзе" - это просто маленький простой проект для того, чтобы освоить ардуину. Потом его можно будет расширить до действительно аккордной клавиатуры. А делать ее мы собираемся уже на PIC - и, возможно, с переписыванием программы на ассемблер (смотря что оправданней получится - или использовать немного более дорогой PIC'овский МК, или потратить время на переписывание кода под более дешевый). Так что Ардуино - это просто ввариант для быстрой сборки прототипа и проверки - стоит ли тратить время на устройство, реализованное именно таким образом. Если девайс окажется неюзабелен, обиднее будет убить на него месяц качественной разработки, чем потратить неделю на быструю сборку из Arduino :)

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

Почему? Если пользоваться уже готовыми shield'ами, вроде, никакой пайки-разводки не нужно? Другое дело, что мне для подключения к ардуине купленных жк-дисплея и бт-модуля придется ваять какую-то обвязку (надеюсь, правильно употребляю термин).

> хотя щас платы изготовить можно в домашних условиях при помощи ламинатора, у меня там фотка и описание есть

Про лазерно-утюжную тезнологию я знаю :) Но для меня спаять что-то сложнее оборванного телефонного провода - проблема. Когда мне нужно было припаять к COM-разъему 9 проводков, я, за полчаса осилив 5, сломалась. Так что припаивать микросхему или доже панельку на плату - недоступное для меня искусство :))

Кстати, в плане компактности кода - какой компилятор ты бы рекомендовал под AVR?

Re: видел твой код на хабре

[identity profile] kalobyte.livejournal.com 2010-02-11 01:48 pm (UTC)(link)
я тебе могу сказать по опыту, что применять тот твой индикатор для вывода из консоли смысла особого нет
точней если ты только будеш выводить туда цифры и чуток букв
например вот так http://img142.imageshack.us/i/dscf00035ha.jpg/

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

к тому же юзабельность зависит от внешнего вида и корпуса
это самое сложное в изготовлении девайса
так что тренируйся на выпаивании из разных плат, это совсем несложно при наличии правильного паяльника и инструмента
вот смотри http://www.youtube.com/watch?v=FBhq_lnxRHA&feature=related

компилятор бери гцц, но лучше iar, хотя он платный и распространен у профи
библиотек больше под гцц

Re: видел твой код на хабре

[identity profile] ibnteo.livejournal.com 2010-02-27 10:30 pm (UTC)(link)
ATmega8 - 160 р.
ATmega168 - 260 р.
Не сильно то он дороже. К тому же для мега8 нужен программатор, например внутрисхемный стоит 960 р. (BM9010 USB). CraftDuino (вариант Arduino) стоит 900р., его просто берешь, и подключаешь к компьютеру через USB, больше ничего не нужно, ни паять (на первых этапах), ни собирать первую схему.

(все цены с chip-dip.ru)

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

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

Re: видел твой код на хабре

[identity profile] kalobyte.livejournal.com 2010-02-28 12:52 am (UTC)(link)
щас уже полно материала по программированию для совсем начинающих
в ардуине стоит загрузчик и он привязан к частоте кварца
не для всех проектов пойдет дефолтный кварц и программатор все равно нужен будет
щас можно сделать усб программатор на базе фт232 или 245 без мк

Re: видел твой код на хабре

[identity profile] ibnteo.livejournal.com 2010-02-28 02:14 am (UTC)(link)
Я пока не нашел даже близкое к Arduino для начинающих. Поэтому буду делать первый проект на нем. А дальше посмотрим. Вы мне говорите о проблемах, о которых я даже не подозреваю. Когда разберусь с Arduino, может быть и буду делать программатор, и использовать другие микроконтроллеры. За информацию спасибо, буду иметь ввиду.

Re: видел твой код на хабре

[identity profile] kalobyte.livejournal.com 2010-02-28 02:30 am (UTC)(link)
да у меня на сцайте есть или http://easyelectronics.ru/category/avr-uchebnyj-kurs