WR88

WR88

Пикабушник
Дата рождения: 18 сентября
13К рейтинг 64 подписчика 37 подписок 13 постов 8 в горячем
Награды:
5 лет на Пикабу
590

Свой текст для OLED 128x64

В очередном своём проекте я решил использовать китайский OLED дисплей разрешением 128х64 точки с интерфейсом подключения I2C.

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

Но после курения весьма немногочисленных и однотипных гайдов по работе с такими экранами я понял, что круче руководств как подключить его к дуньке (4 провода, смех) и вывода на него стандартного примера, ничего во всеобъемлющем интернете толком то и нет... Да и ещё у него есть такой недостаток как скудность стандартных шрифтов – в стандартной библиотеке их всего 5, два из которых буквенные и три циферные, причём самый большой циферный выполнен в каком-то псевдоготическом стиле.

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

В общем ни один из стандартных шрифтов мне не подходил категорически. Ну чтож, подумал я, значит надо сделать свой шрифт с блекджеком и шлюхами. Дело за малым – найти гайд и бабахнуть. Но тут всплыла ещё одна проблема – гайдов по этому делу нет, только ссылки на мёртвые сайты, хождения вокруг да около, троллинг, закольцованные комментарии. Ныть на форумах я не собирался, ожидая что кто-то сделает всю работу за меня, поэтому принял решение расковырять библиотеку, а конкретнее файл DefaultFonts.c, лежащий в её папке. Итак, открываем его и видим портянку из шестнадцатеричного кода с комментами.

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

Ну думаю круто, сейчас возьму фотошоп, нарисую в монохроме шрифт, загоню его в прогу конвертер картинок в хекс-код, забью в наш DefaultFonts.c и дело в шляпе. Ок, рисую шрифт 20х40:

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

Сохраняю в картинку каждый символ, перегоняю его в хекс с помощью DotFactory (скрин наспех, делал уже потом, для данного поста, восьмёрка кривая, как видно по визуализатору, не исправлял настройки программы):

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

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

Значит не так всё просто как кажется… В конечном итоге разобрался и опишу процесс пошагово на примере одного символа.

Начну пожалуй с того, что каждый шрифт в файле DefaultFonts.c представляет собой блок с заголовком в виде:

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

Где MediumNumbers - имя шрифта, а набор из четырёх байтов - параметры. Итак по порядку:

0x0c - ширина шрифта, в данном случае 12 пикселей

0x10 - высота шрифта, тут равна 16ти пикселям

0x2d - порядковый номер первого символа согласно таблице ASCII

0x0d - общее количество символов в шрифте (блоке)

Теперь постараюсь ещё подробнее, чтобы не извращаться с дорисовкой ноликов, ширину принимаем кратной 4ке, то есть 4, 8, 12, 16 и тд. С высотой попроще, позже объясню как правильно её корректировать. Количество символов наверное можно не объяснять, в данном примере она равна 13ти и можно тупо посчитать строки - их ровно 13, справа даже комментарии есть какой символ зашифрован. По поводу кода символа согласно ASCII - ниже таблица, например если нужно чтобы шрифт начинался с двойки - пишем 0x32 (50 номер в десятичной), если например с буквы Q - пишем 0x51 (81 в десятичной).

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

В данном примере сделаем шрифт из одного символа, с размерами 24х32, который будет печататься на экран вместо цифры "0". Так как все делают метеостанции и умные дома, то решил нарисовать наспех такой символ:

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

Заметьте, картинка 24х30 пикселей, нестандартная высота для примера, цвет неважен. Хоть сине-зелёную сделайте.

Дальше валим её набок вправо, затем делим её справа налево на колонки по 8 пикселей, открываем любой текстовый редактор (или тетрадку). Я предпочитаю обычный Microsoft Word, где делаю таблицу из двух колонок - в первой у нас будут двоичные числа, во второй - перевод в 16тиричную. В принципе всё видно на картинках ниже:

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

Забиваем в таблицу числа в виде ХХХХХХХХ (8 бит или 1 байт) согласно заполненности цветом, у меня белый - 0, чёрный - 1. Занятие муторное, но нормальных программ для этого дела я не нашёл, наверное плохо искал.

В итоге получаем 4 блока, нумерация идёт справа налево, повторюсь. В фотошопе прекрасно видно - фон как раз таки состоит из клеток 8х8 пикселей.

Вы наверное заметили, что получилось 3 блока по 8 пикселей и последний на 6 пикселей. Как быть с последним? Просто допишем нули в начало:

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

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

Не забываем отделять все числа запятыми!

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

Когда мучения закончатся - вставляем полученное содержимое в файл DefaultFonts.c в новый свеженький блок:

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

Обзовём шрифт Symbol, параметры будут "0x18, 0x20, 0x30, 0x01," что равнозначно 24х32 пикселя, 48 стартовый номер (цифра "0") и всего 1 символ в шрифте.

Далее осталось дело за малым - накидать скетч и залить в ардуино:

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

В итоге получаем это:

Свой текст для OLED 128x64 Arduino, Oled, Шрифт, Своими руками, Длиннопост

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

Как обычно замечу что на гениальность не претендую, возможно есть способы быстрее и продуктивнее. Но этот пост позволит разобраться в принципах формирования шрифта в этой библиотеке. Гайд не исчерпывающий и для меня остались некоторые пробелы - почему например нельзя сделать шрифт произвольного размера, допустим 37х21. Если ответ на этот вопрос появится в комментариях - буду рад. Так же если имеются дополнения и вопросы - пишите, не стесняйтесь.

Показать полностью 14
16

Самодельный регулируемый БП (ещё один)

Самодельный регулируемый БП (ещё один) Своими руками, Блок питания, Длиннопост

В прошлом моём посте про печатные платы некоторые (а именно @DaemoNPro) заинтересовались моим регулируемым блоком питания. Поэтому не стану долго тянуть и выложу фото внутренностей этого самодельного устройства.

Начну с того, что какое-то время назад стал ощущать острую нехватку источника питания с возможностью регулирования тока и напряжения. Ничего нового изобретать я не стал. Так как напряжение и ток мне были нужны небольшие, то за основу взял блок питания от ноутбука, купленный на радиорынке за 300р. Параметры блока вроде 19,5в и 3,5А, вполне себе хватит для моих целей. Регулятором выступит китайский DC-DC преобразователь на 5 китайских ампер, индикатором - всем известный вольтметр-амперметр с того же али. Осталось всё впихнуть в корпус от CD-рома и готово. На первом фото как-то всё кривовато получилось, на самом деле всё ровно.

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

Самодельный регулируемый БП (ещё один) Своими руками, Блок питания, Длиннопост

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

Самодельный регулируемый БП (ещё один) Своими руками, Блок питания, Длиннопост

Собственно разъём и тумблер вид изнутри, никакого термоклея, всё на родных защёлках.

Самодельный регулируемый БП (ещё один) Своими руками, Блок питания, Длиннопост
Самодельный регулируемый БП (ещё один) Своими руками, Блок питания, Длиннопост

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

Самодельный регулируемый БП (ещё один) Своими руками, Блок питания, Длиннопост

Вот и тот самый блок. Между ним и корпусом каптоновый скотч, прозрачный держатель из пластиковой бутылки, всё через шайбы на болтах к днищу.

Самодельный регулируемый БП (ещё один) Своими руками, Блок питания, Длиннопост
Самодельный регулируемый БП (ещё один) Своими руками, Блок питания, Длиннопост

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

Самодельный регулируемый БП (ещё один) Своими руками, Блок питания, Длиннопост
Самодельный регулируемый БП (ещё один) Своими руками, Блок питания, Длиннопост

Знаю что неаккуратно и вермишель, но прибор делался из того, что было и на скорую руку. Схему подключения можно найти в интернете, там под каждый вольтметр-амперметр своя. Разъём usb выводить не стал, так как он мне не нужен.

Показать полностью 9
109

Ещё один пост про печатные платы

Всем доброго времени суток! Решил написать как делаю печатные платы дома методом ЛУТ. Конечно же таких постов было уже много, но мой тоже лишним не будет. Итак, приступим.

Завалялся у меня дисплей Winstar W0802, это обычный LCD экранчик на 2 строки по 8 символов.

Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост

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

Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост

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

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

Ну, как говорится, теперь дело за малым - сделать саму плату. Первым делом печатаем шаблон на китайской бумаге для ЛУТа (на фото уже подготовленная под травление плата и запасной шаблон).

Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост
Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост

Затем надо перевести весь тонер на заготовку из фольгированного текстолита. Делаю я это так, слегка зачищаю наждачкой медь, затем на короткое время, примерно на 10 секунд, макаю в раствор для травления, до тех пор, пока медь не станет слегка розовой. Ополаскиваю под проточной водой, вытираю бумажной салфеткой, не касаясь меди пальцами. Потом прикладываю приготовленный шаблон, накрываю сверху парой листов бумаги (газеты) и проглаживаю утюгом на максимальной температуре.

После этого кладу получившийся бутерброд в воду на некоторое время. Смысла смывать ЛУТ-бумагу сразу нет, надо дать её размокнуть и стать слегка раскисшей - после этого скатываем верхний слой бумаги пальцами и аккуратно сдираем оставшуюся плёнку с текстолита. Результат - полностью перенесенный рисунок, на плёнке тонера не остаётся, если всё правильно сделано.

Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост

Пятаки на плате умышленно кривые, перестраховался от кривой засверловки.

дальше приклеиваю плату в банку с персульфатом аммония. Травлю им, потому что всё видно хорошо и риск испачкаться минимален. Но несмотря на это одеваю перчатки и стараюсь не капать на одежду - дыры проедает, причём незаметно и не сразу. Для ускорения травления приспособил маленький компрессор с аквариумной приспособой для пузырьков. Питаю 4-5в от самодельного блока питания. Так же баночку с раствором ставлю на водяную баню.

Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост

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

Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост

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

Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост

Снимаем тонер наждачкой:

Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост

Края меди вроде не драные, пойдёт.

Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост

Теперь сверлим отверстия под элементы, сверлю ручным моторчиком с твердосплавными свёрлами из того же Китая. Питается всё 9-12в от того же самого блока питания.

Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост
Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост

Процесс пайки показывать не буду, не фоткал. В конечном итоге получилось что-то такое:

Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост
Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост
Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост
Ещё один пост про печатные платы Лут, Печатная плата, Своими руками, Микроконтроллеры, Длиннопост

В конечном итоге имеем устройство, питающееся от 5в с разъёмом usb, 3 кнопки, подключенных к одному аналоговому входу, нагрузка коммутируется через мосфет IRFR320A, сток и исток которого выведены в двухпиновый разъём, индикаторный светодиод на задней части. Всё управляется Atmega8 в DIP-корпусе, почему такие детали выбраны? Потому что они у меня были)) Код буду писать в Arduino IDE, потому что я ленивая задница и ни в чём другом не умею.

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

Показать полностью 15
7

Осеннее обострение

Осеннее обострение Бабка, Псих

Видимо опоздал я на волну про соседей-психов, но всё же. В общем начну с самого начала.

Примерно с полгода назад стали с женой обращать внимание на странный стук, как будто кто-то херачит молотком по стене, подумали что ремонт кто-то делает, к этому мы как-то спокойно относимся. Поначалу стук был днём, в нормальное для него время. С середины, наверное, августа стали тупо просыпаться ночью от этого стука, в 3 ночи, в 4, в 5 утра, всегда по-разному, но с завидной регулярностью. Как-то не подумали начать выяснять кто и где стучит, других забот хватает.

И вот на прошлой неделе звук стал одновременно и по стенам передаваться и с улицы, позавчера в 11 вечера меня это достало, я выглянул в окно и охуел - на втором этаже (а мы живём на шестом) в окно по пояс высунулась бабка, седая как сенсей из "Убить Билла", держит в руке топор и хуярит обухом по стене дома под своими окнами. Из окон повысовывалиь соседи и тоже смотрят. Недолго думая сунул ноги в кеды и побежал на улицу пока бабка не скрылась, успел снять короткое видео с ней в главной роли. Топор она успела спрятать и теперь стучит доской, которую хер знает где взяла. Чуток постучав, она повырубала везде свет и закрыла окна. Подождал, устал мёрзнуть и пошёл домой, с целью вызвать наряд доблестных стражей порядка. Сам звонок и ожидание пропущу. Наряд приехал наверное через 3 минуты, оказывается они только что приезжали на вызов от этой бабки. Написав заявление на неё, что она мешает спать своим стуком, ушёл домой.

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

Вся херня в том, что вчера связался с участковым, которому передали это дело и он объяснил что все заявления в таких случаях в нашей стране - просто трата бумаги. Бабку отправить на лечение могут только по решению суда, родственников специально никто искать не будет и не собирается, наряд гонять тоже смысла нет. Хочется спросить - что делать в таких случаях, есть ли какие-то способы как-то разрешить ситуацию?

За вчерашний день, по словам жены, бабка стучала раза 4, молотком деревянным для мяса, доской разделочной, палкой, пилой по дереву. Не знаю как остальным, но я считаю ненормальным что человек с такими тараканами в голове имеет дома нехилый арсенал колюще-режущего и метательного оружия, спокойно открывает окна и не поддаётся никаким попыткам вразумить себя. Мало ли что взбредёт ей в голову, придёт ночью с топором к кому-нибудь в гости или из окна швырнёт, в того же клиента медцентра, а там люди с детьми приходят.

Баянометр ругался на картинку, но она для привлечения внимания.

Показать полностью
20

Найдён ключ-брелок NISSAN

Найдён ключ-брелок NISSAN Бюро находок, Москва, Бирюлёво восточное, Длиннопост

Вчера в районе Бирюлёво-Восточное нашёл на прогулке ключ-брелок от автомобиля NISSAN, лежал в траве, машин рядом не было, внутри корпуса есть какой-то номер, больше никаких пометок нет. Точное место находки - проезд между школой №508 и детским садом №423. Отдам владельцу по проверке ну и по предъявлению ПТС. Если кто сталкивался с подобной ситуацией - посоветуйте как лучше поступить.

Просьба не топить, комменты для минусов будут внутри. Лучше поспрашивайте знакомых. Если за пару-тройку дней не найду хозяина - отдам охране в 508 школу.

Найдён ключ-брелок NISSAN Бюро находок, Москва, Бирюлёво восточное, Длиннопост
Показать полностью 2
Отличная работа, все прочитано!