Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
«Дурак подкидной и переводной» — классика карточных игр! Яркий геймплей, простые правила. Развивайте стратегию, бросайте вызов соперникам и станьте королем карт! Играйте прямо сейчас!

Дурак подкидной и переводной

Карточные, Настольные, Логическая

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Stm32 + Программирование

С этим тегом используют

Микроконтроллеры Электроника Arduino Своими руками IT Программист IT юмор Разработка Python Картинка с текстом Юмор Все
25 постов сначала свежее
109
as91
as91
4 года назад

Простой лайфхак, если сломался сенсор на телефоне, а посидеть на любимом сайте очень хочется⁠⁠

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

Сначала в формате видео, а для тех, кому больше нравится текст, текстовая версия ниже.

Теперь текстовая версия.


Если у вас телефон перестал реагировать на касания к нему, но посидеть на любимом сайте ну очень хочется, то не стоит унывать, есть простой лайфхак!

Возьмите джойстик iDrive от BMW, в моем случае от F-серии. Наверняка и у вас такой завалялся.

Простой лайфхак, если сломался сенсор на телефоне, а посидеть на любимом сайте очень хочется Лайфхак, BMW, Пятница, Stm32, Программирование, Паяльник, Видео, Длиннопост, Рукоделие с процессом, Юмор

Дальше нужно подружить этот джойстик с нашим телефоном. Для этого берем микроконтроллер Stm32f105 или аналогичный, разводим под него печатную плату и пишем прошивку. Данный микроконтроллер имеет всего 64 ножки и припаять его на плату не вызывает ни каких проблем. Допаиваем Can модуль, стабилизатор напряжения и USB разъем. О программировании STM32 есть много уроков, код является интуитивно понятным и не требует дополнительных пояснений.

Простой лайфхак, если сломался сенсор на телефоне, а посидеть на любимом сайте очень хочется Лайфхак, BMW, Пятница, Stm32, Программирование, Паяльник, Видео, Длиннопост, Рукоделие с процессом, Юмор

В результате получаем плату, которая слушает джойстик iDrive и передает команды на телефон по USB. Подключается она к телефону через OTG провод.

Простой лайфхак, если сломался сенсор на телефоне, а посидеть на любимом сайте очень хочется Лайфхак, BMW, Пятница, Stm32, Программирование, Паяльник, Видео, Длиннопост, Рукоделие с процессом, Юмор

После подключения на экране планшета появляется курсор, как будто к нему подключена мышка. Джойстик распознает касания 1 или 2 пальцами, поэтому доступно как управление мышкой, так и прокрутка 2мя пальцами.

Простой лайфхак, если сломался сенсор на телефоне, а посидеть на любимом сайте очень хочется Лайфхак, BMW, Пятница, Stm32, Программирование, Паяльник, Видео, Длиннопост, Рукоделие с процессом, Юмор

Вот и все, наслаждаемся любимым сайтом! Единственный недостаток - джойстику iDrive нужно дополнительное питание 12 вольт. У меня он питается от дополнительного блока питания.  Это досадное недоразумение можно решить повышающим конвертором с 5 вольт до 12, и тогда данный лайфхак станет мобильным!

Показать полностью 4
[моё] Лайфхак BMW Пятница Stm32 Программирование Паяльник Видео Длиннопост Рукоделие с процессом Юмор
77
52
RamzessII
4 года назад

Одна голова хорошо, две лучше. Программирование микроконтроллеров⁠⁠

Всем привет. Вот уже чуть больше года я занимаюсь программированием микроконтроллеров. Начинал как и все школьники с ардуино а потом уже перешёл на чистые АВР. Скажу вам следующие придумывать и реализовывать свои проекты то ещё занятие. Так как времени этому уделяешь крайне мало.
Бывает прийдешь вечером с работы с мыслью что нибудь покодить а пока поел, залип в Ютубе уже и спать пора. Вообщем нужна была какая нибудь мотивация.
И вот я пишу этот пост. Тут хочу найти человека который тоже хочет более серьезно углубить свои познания в микроконтроллерах. Предлагаю изучать вместе. Как я себе это вижу: сидят два три чувака в дискорде и курят даташит на микросхему, паралельно пишут код и просто приятно общаются. Если среди читающих есть такие люди, прошу отписаться в комментах.
В идеале начать изучать стм32.
Спасибо за внимание)

Одна голова хорошо, две лучше. Программирование микроконтроллеров Микроконтроллеры, Программирование, Atmega, Stm32
Показать полностью 1
Микроконтроллеры Программирование Atmega Stm32
76
13009
Ramzezka
Ramzezka
5 лет назад

Озвучил стиралку в стиле кожаных ублюдков)⁠⁠

звуковой модуль jq6500 плюс stm32.


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


хотел сначала просто мелодию сделать. и тут понеслось...


основная проблема была снять сигналы с платы стиралки. для этого ее пришлось немного исследовать.

включение и выключение по нажатию кнопки POWER, при этом проверяются импульсы динамический индикации на плате. если они есть, значит вкл. иначе выкл.


начало цикла стирки тупо по нажатию кнопки PLAY


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


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


простейший конечный автомат позволил найти нужный момент в этой цепочке.


дальше сложность была в том, как отследить состояние диода. снять с него напряжение без дополнительного ОУ никак бы не получилось.


после исследования платы я понял, что для динамической индикации используется матрица светодиодов 7 на 7.


далее решено было найти 2 входа (вертикаль и горизонталь) , состояние которых как то коррелировало с горением диода. с двухканальным осциллом это было не трудно.


В итоге , все получилось ))

Озвучил стиралку в стиле кожаных ублюдков) Своими руками, Кожаные ублюдки, Бот, Восстание машин, Stm32, Программирование, Видео, Длиннопост, Стиральная машина

Для питания был взять какой то развязывающий DC\DC преобразователь из 12в в 5в. Линейный стабик не вытянул звуковой модуль)

Показать полностью 1
[моё] Своими руками Кожаные ублюдки Бот Восстание машин Stm32 Программирование Видео Длиннопост Стиральная машина
816
123
AfterBefore
6 лет назад

Вторая жизнь старому стрелочному мультиметру⁠⁠

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост
Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Выбираем провод с более резким наклоном прямой. В моем случае получилось что при максимальном отклонении стрелки напряжение равно 96,4 мВ. Для оцифровки микроконтроллером мало, но ничего страшного, это напряжение можно усилить операционным усилителем. Подойдет любой ОУ, я взял LM2904, просто потому что у меня такой был. Смотрим документ на микросхему – два ОУ в одном корпусе, максимальное выходное напряжение Vcc-1.5v. Запитывать будем от 3.3 вольт, значит надо подобрать коэффициенты усиления так, чтобы при зашкаливающей стрелке ОУ выдавал максимально возможное напряжение.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Готово. Первый каскад усиливает напряжение со стрелки мультиметра в 10 раз, второй каскад усиливает выход первого в зависимости от настройки потенциометра. Для тестов я собрал все на старом кусочке текстолита.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

На борту у нее микроконтроллер STM32F103C8T6. Есть АЦП и USB. Подходит. Для первоначальной настройки предлагаю воспользоваться STM32CubeMX. Включаем тактирование, настраиваем кварцевые резонаторы.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Включаем и настраиваем АЦП, не забываем про прерывание по готовности.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

АЦП будет запускаться по событию таймера, настраиваем таймер.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Таймер тактируется частотой 48 МГц, с предделителем 24 и периодом 2000 получится, что он будет запускать АЦП каждую 1 мс. В принципе так часто нет смысла, но мы будем использовать усреднение значений, поэтому пусть будет. Включаем USB, выбираем Custom HID.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Генерируем проект и переходим к написанию кода. Я использовал System Workbench for STM32. Добавляем в «main.c» запуск таймера и АЦП, и несколько глобальных переменных.


/* USER CODE BEGIN PV */

//uint16_t adc_arr[ADC_MAX_CONVERSATIONS];

uint16_t adc_to_send;

uint32_t adc_sum;

uint8_t adc_counter;

uint8_t send_flag;

volatile uint16_t x;

/* USER CODE END PV */

/* USER CODE BEGIN 2 */

HAL_ADC_Start(&hadc1);

HAL_ADC_Start_IT(&hadc1);

HAL_TIM_Base_Start(&htim3);

/* USER CODE END 2 */


В прерывании прибавляем к переменной значение с АЦП и увеличиваем счетчик. Когда счетчик достигнет 200, усредняем значение и перекладываем в буфер для отправки по USB. Поднимем флаг, что пора отправлять.


/* USER CODE BEGIN 4 */

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){

adc_sum+=HAL_ADC_GetValue(hadc);

adc_counter++;

if(adc_counter==ADC_MAX_CONVERSATIONS){

HAL_GPIO_TogglePin(LD_1_GPIO_Port,LD_1_Pin);

adc_to_send=adc_sum/ADC_MAX_CONVERSATIONS;

adc_counter=0;

adc_sum=0;

send_flag=1;

}

}

/* USER CODE END 4 */


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


/* USER CODE BEGIN WHILE */

while (1)

{

// HAL_GPIO_TogglePin(LD_1_GPIO_Port,LD_1_Pin);

if(send_flag){

send_flag=0;

..USB_Send_report(adc_to_send);

}

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

}


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


/* 34 */

0x07, /* bLength: Endpoint Descriptor size */

USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: */

CUSTOM_HID_EPOUT_ADDR, /*bEndpointAddress: Endpoint Address (OUT)*/

0x03, /* bmAttributes: Interrupt endpoint */

CUSTOM_HID_EPOUT_SIZE, /* wMaxPacketSize: 2 Bytes max */

0x00,

0x20, /* bInterval: Polling Interval (20 ms) */

/* 41 */


Далее составим «HID Report» дескриптор в программке HID Descriptor Tool.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Тут мы говорим, что наше устройство сообщает температуру в комнате (Usage). Report Size=8 и Report Count=4 означают, что 32 бита посылается от устройства к компьютеру (Input) и столько же от компьютера к устройству (Output). Нам из этого всего понадобится только 2 байта, остальное на будущее. Сохраняем как заголовочный файл, и копируем в наш код (куб там оставил место в файле usbd_custom_hid_if.c). Так же надо проверить соответствие размеров репорт дескриптора 35 байт и размер буфера под отправку (тут должно быть 5 байт, потому что мы еще указали Report ID – это еще 1 байт в самом начале). Прошьем и проверим, что устройство правильно определилось в системе.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Раскомментируем функцию отправки в файле «usbd_custom_hid_if.c» и заполняем, указав первым байтом Report ID, дальше наше значение АЦП.


/* USER CODE BEGIN 7 */

/**

* @brief Send the report to the Host

* @Param report: The report to be sent

* @Param len: The report length

* @retval USBD_OK if all operations are OK else USBD_FAIL

*/

static uint8_t USBD_CUSTOM_HID_SendReport_FS(uint8_t *report, uint16_t len)

{

return USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, report, len);

}

uint8_t USB_Send_report(uint16_t data){

Rep_buffer[0]=0x01;//report id

Rep_buffer[1]=data>>8;

Rep_buffer[2]=data;

Rep_buffer[3]=0xFF;

Rep_buffer[4]=0xFF;

return USBD_CUSTOM_HID_SendReport_FS(Rep_buffer,5);

}

/* USER CODE END 7 */


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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Осталось написать программку под Windows, которая бы все это обрабатывала. Берем любимую среду программирования и библиотеку для работы с HID устройствами. Я взял старенькую Delphi 7 и библиотеку компонентов JEDI VCL. Из нее нужны «TJvHidDeviceController» и «TJvHidDevice». Добавляем обработчик «OnEnumerate» у девайс контроллера, в него по очереди прилетают все HID устройства при вызове энумерации. Остается отфильтровать наше устройство по VID и PID, затем связать с компонентом «TJvHidDevice».


function TUSBMeter.HidControllerEnumerate(HidDev: TJvHidDevice; const Idx: Integer): Boolean;

begin

if (IntToHex(HidDev.Attributes.VendorID,4)=VID)and

(IntToHex(HidDev.Attributes.ProductID,4)=PID) then

begin

if (HidDev.Caps.OutputReportByteLength=OUT_REPORT_COUNT_AMPERAGE) then

HidController.CheckOutByIndex(HidAmperage,Idx);

usb_ready:=true;

end;

Result := True;

end;


Данные будут приходить в обработчик «OnDeviceData». В нем вычисляем из посылки значение АЦП и выводим куда-нибудь для проверки.


procedure TUSBMeter.HidControllerDeviceData(HidDev: TJvHidDevice; ReportID: Byte; const Data: Pointer; Size: Word);


var

buf:^byte;

begin

if (IntToHex(HidDev.Attributes.VendorID,4)<>VID)or((IntToHex(HidDev.Attributes.ProductID,4)<>PID)) then exit;

buf:=Data; // rep

adc_abs:=buf^;

adc_abs:= adc_abs shl 8;

inc(buf);

adc_abs:=adc_abs+(buf^);

inc(buf);

callback;

end;


Теперь надо сделать пересчет, добавим на форму RadioGroup и настроим как на переключателе мультиметра. Я не стал добавлять шкалу сопротивлений, не нужна.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Заведем так же масштабирующий массив для пересчета и массив с единицами измерений.


const

scale_arr: array[1..18] of real = (600,300,150,60,30,15,6,3,0.75,1500,300,60,15,3,0.6,0.12,0.000012,1);

scale_arr_symb: array[1..18] of string[2] = ('V','V','V','V','V','V','V','V','V','mA','mA','mA','mA','mA','mA','mA','uA','');


Для пересчета еще понадобятся два граничных значения acd_min и adc_max. Подключаем потенциометр к мультиметру, выставляем стрелку на 0 и смотрим, что присылается в программу. Если тоже 0 – хорошо, если нет – не беда, подкорректируем. Потом выставляем стрелку на максимум и так же смотрим. Важно чтобы когда стрелка «зашкаливала» значение продолжало увеличиваться, так будет запас. Если этого нет, надо подкрутить потенциометр ОУ. У меня получилось 0 и 2365. Пересчитываем и выводим уже на основное табло.


procedure TMainForm.HID_Callback;

var

s:string;

buf:string;

rec_s:string;

begin

s:=floattostr(((meter.ADC-adc_min)/(adc_max-adc_min))*scale_arr[RadioGroup1.ItemIndex+1]);

buf:=copy(s,1,5);

buf[pos(',',buf)]:='.';

Label2.Caption:=buf;

end;

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост
Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост
Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Большая часть готова, теперь надо прикрутить запись в файл, страницу настроек с сохранением и красивый GUI. Формат файла я взял CSV, так как из него будет легко строить графики в Экселе.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост
Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост
Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост
Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост
Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Все, готово. Осталось собрать все в корпус мультиметра, свободного места там полно. Прорезать отверстие под USB шнурок и убрать обратно на самую дальнюю полку до тех пор, пока не понадобится снять долгий график разряда аккумулятора или график потребления тока каким-нибудь устройством.


Надеюсь, кому-нибудь будет полезно.

Показать полностью 23 1
[моё] Мультиметр Новая жизнь старых вещей Схемотехника Микроконтроллеры Arduino Stm32 Delphi Программирование Видео Длиннопост
45
16
peredelkin
peredelkin
7 лет назад

Время кодить⁠⁠

Время кодить Arm, Stm32, Бессонница, Программирование

Пришел с работы и проспал до 23:30 примерно.
За окном 4:30 примерно. Ковыряюсь с захватом дпкв.
К 8 на работу.

[моё] Arm Stm32 Бессонница Программирование
49
4
Trofen
Trofen
7 лет назад

2048, OLED, Arduino⁠⁠

Решил поделиться с вами своим относительно старым проектом, а именно игра 2048 на arduino. Делал достаточно давно и просто потому что было скучно. Вывод реализовал на OLED дисплей 128х64.

2048, OLED, Arduino Arduino, Oled, 2048, Программирование, Игры, Stm32, Длиннопост

Со временем код портировал и на STM32, благо C++ портируется достаточно просто.
Управление, как вы уже успели заметить, выполняется с помощью джойстика. Нужен ли там именно джойстик, а не кнопки? Нет. Почему я использую джойстик? Потому что могу.

2048, OLED, Arduino Arduino, Oled, 2048, Программирование, Игры, Stm32, Длиннопост

В игре реализован подсчет счета, рекорда(с записью рекорда в EEPROM), а так же 1 отмена за игру. Как показала практика, самое сложное это отображение. Сложно сделать его достаточно красивым при таком разрешении. Саму обработку игрового процесса можно продумать и реализовать за пару часов.

2048, OLED, Arduino Arduino, Oled, 2048, Программирование, Игры, Stm32, Длиннопост

В жизни это дело выглядит красивее, чем на фото. Проверка на gameover тоже есть, достаточно эффективная. Сначала поиск пустых ячеек, а, если их нет, поиск 2 одинаковых чисел рядом. Если сделать это все в корпусе, на кнопках и маленьком аккумуляторе(или вообще CR2032, почему нет?), Получится очень портативная игровая консоль. Интересно, что было бы, если бы такая штука появилась в СССР, на равне с волком яйцеловом? Что вы об этом думаете?

Показать полностью 3
[моё] Arduino Oled 2048 Программирование Игры Stm32 Длиннопост
6
60
KotDonKihot
7 лет назад
Сообщество Ремонтёров

Stm32, ST купила Atollic⁠⁠

Новость эта случилась в декабре и прошла как-то мимо. Но случайно заглянув на сайт Atollic обнаружил, что средство разработки TrueSTUDIO новой версии 9 теперь стал бесплатен, включая функции Pro! Я уже скачал и протестировал, работает прекрасно и без ограничений и на Windows, и самое главное на Linux. Из коробки, без всяких плясок с бубнами, это наверно единственный полноценный бесплатный и пригодный под Linux инструмент, я перемучился уже со всеми. С stlink v2 дружит, но лучше взять с поддержкой jtag (китайцы и такие делать начали за 150 руб). С jtag отладка будет с live expressions.
И в Stm32CubeMX есть генерация кода для TrueStudio.

[моё] Stm32 Программирование Текст
13
Партнёрский материал Реклама
specials
specials

Сколько нужно времени, чтобы уложить теплый пол?⁠⁠

Точно не скажем, но в нашем проекте с этим можно справиться буквально за минуту одной левой!

Попробовать

Ремонт Теплый пол Текст
126
ComradeBulkin
ComradeBulkin
7 лет назад
Сообщество Ремонтёров

Темы будущих уроков по STM32⁠⁠

На волне вчерашнего поста https://pikabu.ru/story/18_podrobneyshikh_urokov_po_programm...


Есть идеи по написанию уроков по различным темам в разрезе STM32. Приглашаю @DmitryAR, @witiliar, @XanderEVG, @Arimf, @Alexey9, @slonofil, и @AlexGyver к обсуждению. Сам я занимаюсь разработкой и проектированием автоматики для отопительных систем на биотопливе, готов говорить в этом разрезе.


Собственно не вижу смысла говорить об основах языка, вроде типов данных. @AlexGyver это уже осветил. Но может стоит это преподнести в разрезе C99, а не C++?


Вот темы, которые я бы мог осветить, по разделам:


Основы программирования в разрезе C99 и STM32:

- #define: хитрости и приёмы

- SWITCH/CASE или IF/ELSE: когда и где применять

- Битовые операции: хитрости и приёмы


Фишки в разрезе STM32:

- FreeRTOS: планировщик, семафоры, стэки

- CubeMX и HAL: как сохранить переносимость кода, как искать нужные функции, где искать примеры и прочее

- Настройка таймеров, их различия, где искать информацию в документации по их параметрам

- RTC

- ADC и DAC

- Обработчик ошибок с задержками с использованием FreeRTOS (собственная библиотека)

- Простая Round Robin База данных (собственная библиотека)



Среда программирования и аппаратная отладка:

- Настройка собственной среды под Linux и Windows

- Настройка Sublime Text, System Workbench for STM32, KEIL

- Отдельно по KEIL: стилизация под Monokai, дебагинг, трэйсинг, настройка компилятора

- Логический анализатор (могу рассказать про Saleae Logic)


Модули:

- Принципы работы шин I2C, SPI. Их достоинства и недостатки. Различные режимы: Polling, Interrupt, DMA

- Watchdog: IWDG и WWDG - назначение, настройка

- Использование 7-сегментных дисплеев: подключение напрямую к МК и с помощью драйвера MAXIM MAX6950/MAX6951 (собственная библиотека)

- SPI EEPROM STM M95xxx (собственная библиотека)

- I2C расширители портов NXP PCA9671 и PCF8574  (собственная библиотека)


Проектирование схем и хитрости:

- Как правильно разводить резонаторы

- Дребезг кнопок: триггеры Шмитта и RS-триггер

- Защита портов (в разрезе дискретных и аналоговых для токовых петель)

- Импульсные и линейные регуляторы напряжения:  подбор элементной базы, разводка

- Реле: электромагнитные и твердотельные. Схемы подключения и различия использования

- В разрезе твердотельных реле особенно хочу остановиться на снабберных цепях

- Энкодеры

- Токовая петля

- Onewrire

- RS485 и Modbus (может имеет смысл рассмотреть их отдельно). По Modbus могу преподнести материал по адаптации FreeModbus Slave и собственную реализацию Modbus Master с использованием DMA и FreeRTOS

- Подключение датчика температуры PT100 напрямую (без звезды) с использованием ОУ в схеме стабилизации тока

- Фазовое регулирование напряжения: датчик нуля, табличные расчёты, таймеры


Проектирование готовых изделий:

- Проектирование плат в KiCAD: принципы работы, создание деталей, 3D-моделей и прочее

- Проектирование готового изделия в FreeCAD: сборочный чертёж, 3D-модель и т.д.


Отдельно могу поговорить об учёте и хранении радиодеталей, тем более, что использую самописную программу для этого.


Ну и на закуску, вот несколько готовых изделий:

Темы будущих уроков по STM32 Arduino, Программирование, Микроконтроллеры, Stm32, Длиннопост, Ремонт техники
Темы будущих уроков по STM32 Arduino, Программирование, Микроконтроллеры, Stm32, Длиннопост, Ремонт техники
Темы будущих уроков по STM32 Arduino, Программирование, Микроконтроллеры, Stm32, Длиннопост, Ремонт техники
Темы будущих уроков по STM32 Arduino, Программирование, Микроконтроллеры, Stm32, Длиннопост, Ремонт техники
Темы будущих уроков по STM32 Arduino, Программирование, Микроконтроллеры, Stm32, Длиннопост, Ремонт техники
Показать полностью 5
[моё] Arduino Программирование Микроконтроллеры Stm32 Длиннопост Ремонт техники
102
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии