• Написание скрипта расстановки элементов по кругу для Eagle CAD

    • Tutorial

    Некоторое время назад я задался вопросом равномерной круговой расстановки элементов на печатной плате. Сначала расставлял вручную через полярные координаты, потом сгенерировал последовательность команд для всех 30 элементов и разом выполнил все в командной строке Орла. Сегодня же я затрону тему написания собственного ULP скрипта Eagle Cad для равномерной и автоматической расстановки элементов по кругу.
    Читать дальше →
  • Математика на пальцах: линейно-квадратичный регулятор

    • Tutorial

    Пара часов из жизни математика-программиста или читаем википедию


    Для начала в качестве эпиграфа цитирую rocknrollnerd:
    — Здравствуйте, меня зовут %username%, и втайне раскрываю суммы из сигма-нотации на листочке, чтобы понять, что там происходит.
    — Привет, %username%!


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

    Если ПИД я ещё себе худо-бедно на пальцах представляю (вот моя статья, которую с какого-то перепугу перенесли на гиктаймс), то про другие способы управления я даже и не слышал толком. Итак, моя задача — это представить себе (и объяснить студентам, а заодно и вам), что такое линейно-квадратичный регулятор. Пока что работы с железом не будет, я просто покажу, как я работаю с литературой, ведь именно это и составляет львиную долю моей работы.

    Раз уж пошёл эксгибиционизм про мою работу, то вот вам моё рабочее место (кликабельно):

    Математика для программистов!
  • Математика на пальцах: ардуино головного мозга или линейно-квадратичный регулятор для управления электродвигателем

    • Tutorial

    Постановка задачи: как со школьными знаниями дойти до выводов университетского уровня


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

    Как я уже говорил в предыдущих статьях, мои знакомые студенты хотят построить обратный маятник, но умаялись подбирать коэффициенты ПИД-регулятора, поэтому я неспешно смотрю, что такое линейно-квадратичный регулятор, ну а заодно и вам пересказываю то, что прочитал. Задача для этой статьи — показать, как воплотить в железе одномерный пример из статьи про линейно-квадратичный регулятор. Грубо говоря, я хочу написать написать управление для сервомотора: у меня есть текущее положение оси привода и текущая скорость её вращения, я хочу её остановить в заданном положении. Я попытался было прочитать схожую статью на эту тему, но, признаться, ничего в ней не понял, поэтому сел разбираться самостоятельно, предпочтительно на пальцах и без страшных слов типа дифференциальных уравнений Лагранжа-Эйлера.

    Продолжая рабочий эксгибиционизм, знакомлю вас с Bubble Bobble, который живёт у нас с коллегой в кабинете. Он рецензирует статьи для конференции SIGGRAPH.


    Читать дальше →
  • STM32F4: GNU AS: Мигаем светодиодом (Версия для STM32F4 Discovery, Оптимизация) (Часть 3)

    • Tutorial
    Ну что же, новогодние праздники кончились, и начались трудовые будни :-) Продолжим разбираться с ассемблером на примере микроконтроллера STM32F4

    Ссылки на прошлые публикации:
    STM32F4: GNU AS: Программирование на ассемблере (Часть 1)
    STM32F4: GNU AS: Мигаем светодиодом (Оживление) (Часть 2)

    В комментариях никто не отписался о том что ему удалось запустить «мигалку» на STM32F4 Discovery — значит либо не пробовали, либо не удалось. Исправим эту мелочь:
    Читать дальше →
  • Что такое grep и с чем его едят

      Эта заметка навеяна мелькавшими последнее время на хабре постами двух тематик — «интересные команды unix» и «как я подбирал программиста». И описываемые там команды, конечно, местами интересные, но редко практически полезные, а выясняется, что реально полезным инструментарием мы пользоваться и не умеем.
      Небольшое лирическое отступление:
      Года три назад меня попросили провести собеседование с претендентами на должность unix-сисадмина. На двух крупнейших на тот момент фриланс-биржах на вакансию откликнулись восемь претендентов, двое из которых входили в ТОП-5 рейтинга этих бирж. Я никогда не требую от админов знания наизусть конфигов и считаю, что нужный софт всегда освоится, если есть желание читать, логика в действиях и умение правильно пользоваться инструментарием системы. Посему для начала претендентам были даны две задачки, примерно такого плана:
      — поместить задание в крон, которое будет выполняться в каждый чётный час и в 3 часа;
      — распечатать из файла /var/run/dmesg.boot информацию о процессоре.

      К моему удивлению никто из претендентов с обоими вопросами не справился. Двое, в принципе, не знали о существовании grep.

      image

      Поэтому… Лето… Пятница… Перед шашлыками немного поговорим о grep.
      Читать дальше →
    • Hg Init: Часть 2. Основы Mercurial

      • Перевод
      Это вторая часть из серии Hg Init: Учебное пособие по Mercurial от Джоэля Спольски (Joel Spolsky). Возможно, вы захотите прочитать и первую часть «Переобучение для пользователей Subversion».

      Даже если вы работаете в одиночку, то вам стоит использовать Mercurial. Так вы сможете получить все прелести контроля версий. Эта часть покажет насколько просто добавить каталог в Mercurial, чтобы с легкостью отслеживать предыдущие версии.

      Часть 2. Основы Mercurial



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


      Читать дальше →
    • «Весёлый повар» на FBD шаг за шагом

        Приветствую всех.

        Предыдущие статьи были о небольших проектах, сделанных по одному и тому же принципу:

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

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

        В качестве примера была выбрана игра «Электроника ИМ-04 — Веселый повар».



        Под катом описание по шагам, как написать эту игрушку на языке программирования FBD.
        Читать дальше
        • +24
        • 10,8k
        • 4
      • STM32 и FreeRTOS. 5. Приносим пользу и добро!

        • Tutorial
        На всякий случай, а то вдруг санкции применят (смаил). Описываемый случай не имеет никакого отношения к реальности и является целиком и полностью выдумкой автора

        Раньше было про потоки, семафоры, очереди и HAL

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



        Вооружившись осциллографом, я полез внутрь.
        Читать дальше →
      • Советы по пропорциям и масштабу в играх

        • Перевод


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

        Очевидно, если в вашей игре нет персонажей, этот пост может быть бесполезен для вас (но может быть, он пригодится вам в следующем проекте). Такой подход не ограничивается гуманоидными песонажами и может применяться к антропоморфным и неодушевлённым объектам.
        Читать дальше →
        • +36
        • 9,9k
        • 1
      • Скрипт для тех, кому лень разбираться в Linux

        Сфер применения Linux может быть очень много. Особенно, когда арендовать VPS стало можно от $1 в месяц. Кроме стандартного использования под хостинг сайтов, его используют в качестве сервера для игр (CS:GO, Terraria, Minecraft), в качестве Proxy-сервера и VPN-сервера. Под майнинг криптовалют. Под резервное хранилище бэкапов. Под домашнюю торренто-качалку. А также для тестирования, разработки и просто различных экспериментов. Именно доступность VPS на базе Linux с огромным спектром возможного его применения привела к популяризации Linux. Но желающих использовать Linux значительно больше, чем людей, которые умеют его использовать. И часто именно слабые познания администрирования Linux останавливают людей от его использования. Ну или просто усложняют таким людям жизнь — им приходится часами ковыряться в мануалах, форумах и «статьях для новичков».

        Да мне и самому надоело лазить по специализированным форумам, каждый раз, когда приходится сделать шаг влево или шаг вправо относительно того, что я уже научился делать. Именно поэтому, со временем, все типовые вещи я свёл в один скрипт с дружелюбным интерфейсом, который умеет делать всё сам. Начиналась всё с малого. Скрипт просто автоматизировал установку нужного мне софта. Но за полгода он превратился уже в весьма серьёзную утилиту весом 85 Кб, в которой более 2100 строк кода. Скрипт ранее нигде не выкладывался. Использовался только в личных целях мной и несколькими моими товарищами. Пришло время им поделиться с публикой. Уверен, многим людям он способен сэкономить кучу времени.

        Чтобы понять, что он умеет, проще всего глянуть на заглавный скриншот:


        Далее подробнее опишу, что и как он делает.
        Читать дальше →