Моя сексуальная фантазия на выходные - выспаться во всех позах.О злободневном. И даже немножко наболевшем.
Времени нет ни на что.
Во-первых, только вчера утром пришла самая главная партия железа для
анонсированного тут ультимативного индикатора-всего-на-свете.
Что интересно, первым делом я заказал самую важную часть устройства, то есть LED`ы. Посылка потерялась где-то в дебрях почты. Я накатал жалобу и получил возврат денег за покупку, после чего заказал LED`ы у другого продавца, - чтобы не рисковать, сразу две сотни, трёх- и пятимиллиметровых. Каким образом заказ двух разных типов LED`ов у одного продавца, отправляемый в одной коробке, уменьшает риск потери посылки, - не спрашивайте, всё равно не отвечу. В любом случае, прошло больше месяца, прежде чем я их получил. Обычная посылка доходит за 15-20 дней. Итого, с момента размещения самого первого заказа (5 марта) до получения почти всех деталей (20 мая) прошло два с половиной месяца.
Вот от этого я собираюсь отказаться.
В конструкции ультимативного индикатора появилось изменение.
Четырёхзначное семисегментное табло я, видимо, использовать не буду, потому что у него каждую цифру необходимо зажигать по отдельности: там тоже используются 12 контактов, так что, с точки зрения программы, никакой разницы между одной из 12-LED`овых полосок индикаторов и одним из знаков табло нет. А значит, выставление значений на всех четырёх полосках LED`ов и вывод данных на этот индикатор займут одинаковое время. Если, как я думал до сих пор, я буду переходить к следующей полоске каждые 10 миллисекунд, то в секунду у меня будет 100 переходов, из которых на LED`ы придётся только половина, а значит, каждая полоска LED`ов будет включаться только 12,5 раз в секунду. При таком frame rate есть шанс, что я увижу мерцание, которого хотел бы избежать. С другой стороны, именно такая частота смены картинки выбрана для анимации: 12 кадров в секунду, и обычно этого хватает. Можно, конечно, повтыкать в систему конденсаторы, но я не знаю, как система с конденсаторами будет себя вести, и мне лень выполнять расчёты. Да ещё я посмотрел на яркость этого табло и ужаснулся: им можно комнату вместо лампочки освещать. Поэтому я принял волевое решение -
И вот на это заменить.
Заменить четырёхзначное табло
символьным дисплеем, содержащим две строки по 16 символов. Управляющий интерфейс этого дисплея - 16 контактов, но я не буду показывать японские иероглифы, поэтому мне нужно только 12 контактов, а именно с 12 контактами я всё время и работаю. И даже из них некоторые в управлении не нуждаются, - к примеру, яркость подсветки и контраст я могу повесить на
реостаты и подкручивать их ручками, хотя, конечно, идея
динамически управлять подсветкой крайне соблазнительна.
Если я буду за каждый 10-миллисекундный time slot обновлять по два символа на этом дисплее, то весь дисплей я обойду за 16 обращений = 160 миллисекунд. Поскольку к дисплею я обращаюсь только каждый пятый раз, (а ещё четыре раза я обновляю полоски LED`ов), полное обновление дисплея займёт 0,8 секунды. Но, с другой стороны, самая длительная команда (перевод курсора в первый символ первой строки) выполняется дисплеем за 1,5 миллисекунды, а обычно команда выполняется за 37 микросекунд, это в 40 раз быстрее. Используя 40-микросекундные команды, за 10 миллисекунд я успею выполнить 250 команд, то есть обойти весь экран четыре раза.
Вчера ночью сел паять это страшное устройство. Спаял один из боковых модулей, 12 LED`ов с 220Ω сопротивлениями и с 14-контактным коннектором. Кстати, они получатся не совсем взаимозаменяемыми, потому что LED`ы в модуле расположены не по центру, а смещены в сторону. Весь процесс занял у меня четыре часа, с 23:20 до 3:20. Ну, это была первая попытка паять после очень долгого перерыва, так что в целом результатом я доволен.
Если сегодня будет возможность, начну паять тот кусок железа, к которому должна подключаться вторая половина провода с коннектором. Там будет
демультиплексор выбора полоски LED`ов, он же, по совместительству, - переключатель данных на LCD-экранчик, по одному транзистору питания для каждого модуля LED`ов, 12 транзисторов питания для каждого отдельного LED`а и 8 штук коннекторов - 4 коннектора для полосок LED`ов, 1 для LCD-экрана и 3 запасных. Или даже 9 коннекторов, потому что ещё один коннектор я использую для трёх кнопочек и термодатчика. В целом получается довольно большая доска, потому что я не хочу экономить место. Имея один готовый модуль LED`ов и эту доску, уже можно будет переходить к тестированию устройства.
С точки зрения программного обеспечения, я уже умею посылать по USB 16 бит информации, ловить её в микроконтроллере и потрошить на 12 бит данных и 4 бита выбора канала, после чего выводить по 5 вольт напряжения на нужные контакты портов B и С, согласно полученным битам. То есть посылать данные из компьютера и зажигать лампочки я, в принципе, уже могу. Логики в этом пока нет никакой, я тупо включаю те LED`ы, которые были запрошены через USB, но для первоначального тестирования мне и этого хватит.
Зато уже сейчас можно подсчитать себестоимость этого устройства - без учёта работы:
- Один демультиплексор CD74HC238E - 1.15 доллара.
- Одна 16-контактная база для демультиплексора - 0.10 доллара.
- 2 метра термоусадочной изоляционной трубки - 0.99 доллара.
- Один термодатчик DS18B20 - 0.98 доллара.
- Плата микроконтроллера Atmel® AT90USB162 - 18.95 доллара.
- Один LCD-экран размером 16×2 символа (ещё не пришёл) - 0.99 доллара.
- Два 10KΩ потенциометра для регулировки яркости и контраста - 1.98 доллара.
- Две ручки для этих потенциометров - 0.80 доллара.
- 48 синих 3-мм LED`ов - 2.88 доллара.
- Транзисторы C945 для каждого отдельного LED`а - 0.50 доллара.
- Более мощные транзисторы для выбора канала - точную марку пока не назову - 0.25 доллара.
- 3 метра 14-жильного серого кабеля для подключения модулей к основной плате - 9.48 долларов. (Понятно, я все три метра не использую).
- 14-контактные коннекторы, по 20 «мальчиков» и «девочек» - 15.96 доллара. (Я только сейчас сообразил, что какие-то коннекторы стоили мне почти столько же, сколько плата с микроконтроллером).
- Проводки - 6 долларов за огромную пачку.
- Печатная плата какого-то совершенно невообразимого размера, чуть ли не 40×12 см. - 7.00 долларов.
Итого: 68.01 доллара или 250 шекелей. И это ещё без учёта моего времени, которое самый ценный ресурс.
Может быть, в самом деле было бы дешевле такое устройство просто купить?.. :) С другой стороны, по себестоимости это ровно столько же, сколько любые две из
моих моделек.
Вот он, самый красивый в мире самолёт.
Кстати, о модельках… Я их по-прежнему клею. После очень сложной «Меркавы IV» из 560 с лишним деталей я склеил вертолёт «Apache», и сейчас занялся
моделью самого красивого самолёта в мире -
«SR-71 Blackbird».
В-третьих, для работы я в свободное от работы время пишу крутейший веб-сервер. Распространяться, зачем и для чего, не буду, скажу только, что если получится его написать, я облегчу жизнь куче людей, которые сейчас вынуждены пользоваться программой для работы из командной строки.
А в-четвёртых, я для
shele4ka пишу роман, в совершенно новом для себя жанре. Добрался уже до 140-й страницы. Скармливаю его основной и единственной читательнице порциями по 10-15 страниц. И когда после очередной порции Шеля жалобно спрашивает меня: «Кися, ну ты ведь правда ещё не хочешь спать? Сиди и пиши, падла, Луна ещё высоко!» - лучшей музыки для ушей и придумать нельзя.
Вдобавок у меня ещё впереди домашка, - слава Богу, из неё три четверти я уже сделал, - и подготовка к экзамену, который будет через месяц. Понятно теперь, почему я каждый день ложусь спать в четвёртом часу утра?..
Где на всё это найти время, а?