Pull to refresh
5
-1.5
Send message

История одного осциллографа на stm32

Reading time5 min
Views45K


Чуть больше года назад, мне в голову пришла мысль о том, что хорошо бы было сделать осциллограф. Тогда мне хотелось, чтобы это было независимое устройство с собственным TFT дисплеем, да и вообще, идея разобраться с TFT дисплеями, мне казалась очень перспективной. Спустя некоторое время на али был заказан TFT размером 3.2 дюйма с драйвером SSD1289.

На тот момент у меня уже был опыт программирования микроконтроллеров AVR, поэтому решил запустить дисплей на моём любимом Atmega16. Дойдёт ли дело до создания осциллографа тогда ещё не знал, но то что буду в своих проектах использовать TFT знал точно, поэтому не стал искать сторонние библиотеки, а решил написать свою, которой пользуюсь и по сей день.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments45

Начинаем изучать STM32 или Управляем светом по-умному

Reading time8 min
Views232K

Небольшое вступление


Однажды, заехав в очередную съемную квартиру, я столкнулся с определенным неудобством, которое достаточно сильно напрягало: выключатель света в основной комнате оказался за шкафом-стенкой, который был прикручен к стене, и его перестановка была невозможна т.к. на это требовалось значительно много времени и сил. Решить данную проблему хотелось очень сильно и в голову пришла одна мысль: сделать дистанционный пульт для управления освещением!

Именно с идеи создания собственного пультика для управления светом в комнате и началось моё увлечение электроникой, микроконтроллерами и различными радиоустройствами.
Читать дальше →
Total votes 45: ↑36 and ↓9+27
Comments203

Программируем микроконтроллеры ESP32 и STM32 на C# (nanoFramework)

Reading time31 min
Views47K
dotnet nanoFramework

.NET nanoFramework — это бесплатная платформа с открытым исходным кодом, основанная на .NET и предназначена для малых встраиваемых устройств, микроконтроллеров. С её помощью можно разрабатывать различные устройства для Интернета вещей, носимые устройства, научные приборы, робототехнические устройства, можно создавать прототипы и даже использовать на промышленном оборудовании. В первой части мы познакомились с платформой .NET nanoFramework, её архитектурой, основными возможностями, посмотрели примеры программного кода. Теперь перейдем к практике, установим nanoFramework на микроконтроллеры серии ESP32 и STM32, напишем первый «Hello World!», поработаем с аппаратными интерфейсами, и оценим переносимость кода с «большого» .NET на платформу nanoFramework.
Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments118

Лаборатория-мастерская в деревне. Малыми средствами, своими руками, с самого начала

Level of difficultyMedium
Reading time7 min
Views22K

Квартирный вопрос, испортивший, как всем известно, людей нашего времени, тем не менее решается. И решается куда как проще на некотором удалении от столиц и крупных городов, а в глуши и вовсе зачастую приходится только набраться решимости и закатать рукава… Речь пойдёт о строительстве небольшого приусадебного всепогодного и всесезонного помещения в основном для некрупного настольного технического творчества. Строительство при этом велось весьма невеликими средствами, в одиночку, без применения строительной техники и почти без использования наёмной рабочей силы. С другой стороны, и публика мы непривередливая и некапризная.
Читать дальше →
Total votes 195: ↑194 and ↓1+193
Comments145

Как я с 0 поднял свой уровень английского до B2 и подтвердил этот уровень на экзамене IELTS Academic

Level of difficultyEasy
Reading time10 min
Views153K

Привет, Хабр!

В этой статье я расскажу о своем опыте изучения английского языка и поделюсь вещами которые работали и не работали для меня. Процесс изучения языка очень индивидуален, и никогда нельзя утверждать что верный какой-то один метод / схема (хотя некоторые статьи на Хабре прямо говорят: вот этот метод правильный, а вот этот нет).

Начнем с бекграунда и причин.

Я – инженер машиностроитель (мой профиль – торцевые уплотнения вращающихся валов). Я начал работать в своей отрасли сразу после бакалавра, параллельно заканчивая магистратуру, и как только я начал работать, я стал стараться впитать как можно больше теоретических знаний по моей специальности из академических источников. Достаточно бысто я понял, что последняя серьезная книга по моей специальности на русском языке была написана в 1978 году. И спустя больше чем 40 лет технологии сильно поменялись, а вот их описание на русском языке отсутствовает. Зато я нашел на reddit людей работающих в штатах в моей же отрасли. Они мне насоветовали кучу классной литературы. Разумееется, она вся на английском, и русского перевода не имеет.

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

Конечно, перед началом обучения я прочитал много статей на хабре о том как люди учат языки. Некоторые из них поражали скоростью овладения материалом (что-то вроде с нуля до fluent за 4 месяца). Но одна вещь была неизменна – у всех был какой-то план изучения языка.

Читать далее
Total votes 173: ↑169 and ↓4+165
Comments220

Простой Blender. Часть 1

Reading time6 min
Views223K
image
КДПВ. По мотивам.

О чем пост


Пост написан по мотивам этого комментария . Особенно вдохновила картинка в ответах к этому комментарию. Изначально хотел здесь написать про UI и основы моделлинга в Blender, но выходит многовато (я словообилен). Поэтому, про моделлинг — позже (если публика захочет). А здесь — про UI Blender с точки зрения непрофессионала.
Тоже хочу танк нарисовать!
Total votes 55: ↑53 and ↓2+51
Comments38

Blender 2.49b + Python 2.6 – используем клавиатуру в своей игре

Reading time5 min
Views5.8K
Blender – свободно распространяемая программа с открытым исходным кодом для создания трехмерной графики и компьютерных игр, которая поддерживает Python в качестве «встроенного» языка программирования.

Python – интерпретируемый язык программирования.

Данный топик пытается укрепить иллюзию, что, обладая минимальными познаниями в Блендере и Питоне, каждый сможет создать свою игру. Из всего, что можно сделать с помощью Питона в Блендере, для начала рассматривается простейшее взаимодействие с клавиатурой. Так же в топике пошагово в скриншотах описаны минимально необходимые методы работы с Блендером: запуск, сохранение сцены, манипуляции с объектом, добавление сенсоров и контроллеров и т. д.
Читать дальше →
Total votes 39: ↑37 and ↓2+35
Comments12

Blender 2.6 + Python 3.2 – задействуем устройства ввода в собственной игре

Reading time26 min
Views14K
Прошлый топик, посвященный простейшему способу использования клавиатуры в Блендере с помощью Питона, дал нам только начальные знания об интерфейсе Блендера, а так же принципах работы с Питоном в Блендере.

Однако, если мы хотим разработать полноценную игру, то нам нужно более серьезное решение – современная игровая индустрия предлагает гораздо более широкий выбор устройств ввода, чем одна только клавиатура, а список возможных действий и событий в игре не исчерпывается движением единственного игрового объекта.
В данном топике мы попробуем создать законченную, расширяемую, универсальную систему взаимодействия с устройствами ввода в игре при помощи программирования на Python 3.2 в Blender 2.6.

Читать дальше →
Total votes 42: ↑39 and ↓3+36
Comments4

Уровни английского языка: детальный разбор критериев в 2023

Level of difficultyEasy
Reading time10 min
Views45K

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

Читать далее
Total votes 19: ↑16 and ↓3+13
Comments4

GPT-4: Чему научилась новая нейросеть, и почему это немного жутковато

Level of difficultyEasy
Reading time23 min
Views242K

В этой статье мы разберем новые удивительные способности последней языковой модели из семейства GPT (от понимания мемов до программирования), немного покопаемся у нее под капотом, а также попробуем понять – насколько близко искусственный интеллект подошел к черте его безопасного применения?

Поехали →
Total votes 208: ↑200 and ↓8+192
Comments338

Пишем собственный WYSIWYG редактор на основе веб-компонентов и textarea. Часть 1

Level of difficultyMedium
Reading time14 min
Views7.1K

Всем привет, последние пару месяцев я активно изучаю тему веб‑компонентов, собираю и нарабатываю опыт, а затем делюсь своими наработками с другими с целью обменяться опытом, получит новый опыт, фидбек и понять куда двигается разработка в вебе и шагать дальше за новым опытом. Все ниже изложенное не является инструкцией как делать нужно, а является примером того, как сделать возможно на текущий момент в 2023 году, у меня уже набрался небольшой опыт (8 публикаций и 3 веб‑компонента на гитхабе) и я решился попробовать сделать что‑то серьезнее чем просто очередную реактивную кнопку или лайки, в первой части моей публикации я проведу вас по MVP веб‑компонента wc-wisywig, немного затронем философию семантики, браузерные API и обменяемся опытом, потестим HTML5 теги в статье на хабре. Для нетерпеливых сразу вот ссылка на демо и git репозиторий. Остальных ждет техничесий лонгрид, прошу под кат)

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments23

Когда байты были маленькими

Reading time7 min
Views16K

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

В публикации - три короткие "живые" истории. Первая про старое железо и 6-битные байты. Вторая про старый софт и Министерство Обороны. И третья про старые баги и новые айФоны.

Читать далее
Total votes 80: ↑80 and ↓0+80
Comments74

Памятка по работе с Canvas API

Reading time2 min
Views15K


Доброго времени суток, друзья!

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

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

Для меня это также своего рода промежуточный итог в изучении холста.

Код разбит на отдельные блоки-песочницы, которые для удобства чтения помещены под «кат».

Парочка важных моментов.

Ширину и высоту холста лучше определять с помощью атрибутов:

<canvas width="300" height="300"></canvas>

Если мы хотим, чтобы холстом была вся область просмотра, то делаем следующее:

const width = canvas.width = innerWidth
const height = canvas.height = innerHeight

Холст и двумерный контекст рисования я обычно определяю следующим образом:

const canvas = document.querySelector('canvas')
// не путать с объектом jQuery
const $ = canvas.getContext('2d')

Довольно слов.
Total votes 22: ↑21 and ↓1+20
Comments2

Домашний веб-сервер для чайников

Reading time14 min
Views236K

Привет, Хабр! Относительно недавно после пары лет перерыва в айти, потраченных на изучение японского языка, мне пришлось срочно обновлять свои знания на работе. Ну знаете, искать возможности исполнить все хотелки начальника, как и положено эникею. Меня ждало много увлекательных открытий, но при этом, как водится, и немало боли и борьбы с непонятками. Docker, контейнеры, реверс DNS и реверс прокси, получение TLS сертификатов. В какой-то момент я наконец дошёл до удобного решения, которым я теперь хочу поделиться.

В своё время домашний сервер очень облегчил бы мне понимание Docker’а, да и удобство работы с ним неслабо бы повысил. Поэтому возникла идея написать эту статью, после прочтения которой любой человек даже с поверхностными знаниями в информационных технологиях сможет поставить себе постоянно доступный домашний сервер на базе Docker Swarm с удобной веб-мордой, простым получением TLS-сертификатов и Heroku-подобным функционалом (для чего будем использовать PaaS CapRover). 

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

Читать далее
Total votes 27: ↑25 and ↓2+23
Comments29

Очень типобезопасно! Концепт продвинутой расширяемой системы единиц измерения с generic math для .NET

Reading time3 min
Views4.9K

Что может быть лучше десятка пары часов проведенных с дженериками и compile time safety в C#?

В этом очерке о единицах измерения, а точнее о том, как можно сделать потенциально очень крутую систему с полной проверкой на этапе компиляции, автоматической конверсией единиц измерения, кастомизированностью и расширяемостью во все стороны! Да, и еще неплохой производительностью. И вообще!

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments15

Что нужно знать про арифметику с плавающей запятой

Reading time14 min
Views936K


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

Арифметика с плавающей запятой почему-то считается экзотической областью компьютерных наук, учитывая, что соответствующие типы данных присутствуют в каждом языке программирования. Я сам, если честно, никогда не придавал особого значения компьютерной арифметике, пока решая одну и ту же задачу на CPU и GPU получил разный результат. Оказалось, что в потайных углах этой области скрываются очень любопытные и странные явления: некоммутативность и неассоциативность арифметических операций, ноль со знаком, разность неравных чисел дает ноль, и прочее. Корни этого айсберга уходят глубоко в математику, а я под катом постараюсь обрисовать лишь то, что лежит на поверхности.
Читать дальше →
Total votes 245: ↑242 and ↓3+239
Comments75

Наглядное объяснение чисел с плавающей запятой

Reading time4 min
Views212K
image

В начале 90-х создание трёхмерного игрового движка означало, что вы заставите машину выполнять почти не свойственные ей задачи. Персональные компьютеры того времени предназначались для запуска текстовых процессоров и электронных таблиц, а не для 3D-вычислений с частотой 70 кадров в секунду. Серьёзным препятствием стало то, что, несмотря на свою мощь, ЦП не имел аппаратного устройства для вычислений с плавающей запятой. У программистов было только АЛУ, перемалывающее целые числа.

При написании книги Game Engine Black Book: Wolfenstein 3D я хотел наглядно показать, насколько велики были проблемы при работе без плавающей запятой. Мои попытки разобраться в числах с плавающей запятой при помощи каноничных статей мозг воспринимал в штыки. Я начал искать другой способ. Что-нибудь, далёкое от $(-1)^S * 1.M * 2^{(E-127)}$ и их загадочных экспонент с мантиссами. Может быть, в виде рисунка, потому что их мой мозг воспринимает проще.

В результате я написал эту статью и решил добавить её в книгу. Не буду утверждать, что это моё изобретение, но пока мне не приходилось видеть такого объяснения чисел с плавающей запятой. Надеюсь, статья поможет тем, у кого, как и у меня, аллергия на математические обозначения.
Читать дальше →
Total votes 76: ↑73 and ↓3+70
Comments46

Учебный видео-курс по арифметике с плавающей запятой в формате IEEE-754. Часть I

Reading time4 min
Views4.9K
Арифметика с плавающей запятой хорошо понятна далеко не всем программистам. Раньше я работал в разных IT-фирмах и с удивлением обнаруживал, что даже опытные программисты теряются, когда возникает задача подобрать $\varepsilon$ для сравнения двух чисел с плавающей запятой в коде вроде такого:

if (abs (a-b) < EPS) . . .

Они наивно выбирали одно и то же число типа 1e-8 для всех своих проектов, создавая тем самым потенциальное место проявление суровых ошибок. Более того, они пытались сравнивать два числа типа double вот так:

if (a < b) . . .

не понимая, за что же я их ругал, когда видел подобные глупости. Я уже не говорю о том, какой ужас могла вызвать константа типа 0x400921fb54442d18 (всего лишь число $\pi$), которую можно увидеть в некоторых старых программах или на экране отладчика.


Читать дальше →
Total votes 16: ↑12 and ↓4+8
Comments5

Как начать работать с GitHub: быстрый старт

Reading time6 min
Views1.2M


Распределенные системы контроля версий (DVCS) постепенно замещают собой централизованные. Если вы еще не используете одну из них — самое время попробовать.

В статье я постараюсь показать, как можно быстро начать экспериментировать с git, используя сайт github.com.

В статье не будут рассмотрены различия между разными DVCS. Также не будет детально рассматриваться работа с git, по этой теме есть множество хороших источников, которые я приведу в конце статьи.
Читать дальше →
Total votes 182: ↑165 and ↓17+148
Comments51

Information

Rating
Does not participate
Registered
Activity