Сообщения

PS4 Dualshock инверсия правого стика по оси X за два часа.

Изображение
В опциях многих (почти всех) новых игр можно инвертировать только ось Y для обзора (правого стика). Я привык к играм, где можно инвертировать ось X, поэтому мне очень трудно, почти невозможно, играть в новые шутеры. По случаю я купил Battlefront II и убедился, что больше нескольких секунд на поле я продержаться не могу.

Electrum LR-15LED (A-LR-0592) Пронесло!

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

Пробуем ШИМ

Изображение
Быстрая проба ШИМ, основанной на таймере. Для эксперимента будем использовать Timer 4. Подключим светодиод, как показано на схеме ниже. Пин PB9 можно использовать, как выход PWM (TIM4_CH4). Выполним простые шаги: Инициализация ШИМ: PWM_TIM4_Init(1000 {частота ШИМ}); Установим коэффициент заполнения: PWM_TIM4_Set_Duty(duty_cycle, _PWM_NON_INVERTED, _PWM_CHANNEL4); Здесь мы указываем, что сигнал ШИМ не инвертирован, канал таймера - 4. Запускаем ШИМ на четвертом канале таймера, который физически подключен к PB9: PWM_TIM4_Start(_PWM_CHANNEL4, @_GPIO_MODULE_TIM4_CH4_PB9); Максимальное значение коэффициента заполнения (Duty cycle) мы можем получить при вызове функции инициализации. Period:= PWM_TIM4_Init(1000 {частота ШИМ}); Для каждого значения частоты ШИМ генератора, значение максимального коэффициента заполнения будет разным, чем выше частота, тем меньше разрешение генератора ШИМ. Для STM32F103C8T6, для стандартных настроек тактирования , отношения частот и...

Настраиваем показания энкодера для применения в меню

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

Подключаем LCD 20x4 к STM32 Blue Pill

Изображение
Для подключения дисплея используем GPIOB, так как пины этого порта толерантны к напряжению 5V. Сам дисплей питается от 5V. Для настройки контраста используем переменный или подстроечный резистор, значение его сопротивление может быть от 4.7K до 10K.

Настройка тактирования для BluePill (STM32F103C8)

Изображение
Стандартная конфигурация тактирования STM32F103C8T6. Подходит почти для всех случаев использования микропроцессора, включая возможность работы с USB. Если понадобится тактировать внешние устройства, в этой конфигурации мы можем получить 8 MHz или 36 MHz на GPIOA.B8 (пин PA8)

Процедура инициализации таймера для работы с энкодером

Изображение
InitTIM2(it2Mode: Byte; it2Edge1, it2Edge2: Byte; it2ARV : Word); Параметры, которые необходимо передать при вызове процедуры: it2Mode 0 - прямой счет, используется первый канал 1 - прямой счет, используется второй канал 2 - режим енкодера, счет по обоим каналам 3 - режим энкодера, счет по первому каналу, направление по второму каналу 4 - режим энкодера, счет по второму каналу, направление по первому каналу it2Edge1 - выбор фронта для первого канала. 0 - передний фронт, 1 - задний фронт it2Edge2 - выбор фронта для второго канала. 0 - передний фронт, 1 - задний фронт it2AVR - значение переполнения счетчика, 0 - 65535