15:32 зачем делать массив на 1 элемент? uint8_t tx_buffer = adress; а в функцию передачи SPI пишем адрес нашей переменной &tx_buffer, или раз отправляете 2 байта то можно было сделать массив на 2 элемента записать туда данные и одним вызовом функции передачи отправит туда сразу 2 байта. Библиотеки лучше подключать ( даже сказать правильнее ) делать в корне проекта папку и в нее кидать все файлы относящиеся к данной библиотеке и в проекте подключать эту папку. Тогда если много библиотек все структурировано и нет бардака =)
Пример рабочий. Автору салют! Не нашел вывод точки в любую позицию. Может кому-нибудь пригодиться. //вывод цифры в произвольную позицию с установкой точки или без void max7219_SendInt_point(int pos, int a, _Bool b){ char mass[9] = { 0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B, 0x5F, 0x70, 0x7F, 0x7B}; ////массив чисел для 7-сегментного индикатора if (b == 1) { max7219_Transmit(pos, mass[a]|0x80); //установка точки } else max7219_Transmit(pos, mass[a]); } вызов max7219_Display_Clean(); max7219_SendInt_point(1,2,1); max7219_SendInt_point(5,3,0); max7219_SendInt_point(8,7,1); max7219_Send_int32_t(12345678); //вывод числа max7219_Transmit(0x01, 0x80); //вывод цифры в позицию 1 max7219_Intensity(3); //яркость
добрый день! Тут только переделывать/дописывать библиотеку.По сути дела надо 2 числа переделать в текст и вывести это на дисплей. Может потом сделаю эту функцию. Вы уже не первый, кто спрашивает про это)
@@Solderingironspb на MAX7219 больше используют модуль точечной матрицы 8x8 светодиодов. а на TM1638 как раз 8-разрядный модуль дисплея ну и + там кнопки. преимущество? да в принципе нет. Ну все ровно Спасибо за видио и пояснения.
Добрый вечер. Здесь сложно даже чего-то Вам посоветовать. Я начинал с ардуино. Чего-то делал. Смотрел различные уроки. Сама суть - это начать что-то делать свое, а не повторять за кем-то проекты. Начнете делать свое - тут же пойдет рост знания языка в гору. Вы будете спотыкаться на каждом шагу, НО Вы сами же будете находить ответы на свои вопросы. Так шаг за шагом и изучите. Теория без практики - ничто. Сразу начинать изучать Stm32 без знания Си - это похвально конечно? но сложно. Можете посмотреть мой урок#00. Я там рассказывал про книги, которые я читаю. И вот курс "штурмуем stm32" как раз нацелен на то, чтоб человек вник в Си на примере МК STM32F103C8T6 (книга "Си для встраиваемых систем").
Я думал на счет этого, т.к. многие видео с телефона смотрят. Но меня пока останавливают две вещи: 1) Программировать становится жутко неудобно. 2) Если на монтаже увеличивать картинку, то дисплей постоянно будет прыгать туда-сюда, т.к. скачу из окна в окно. Да и времени на обработку, которого у меня итак, к сожалению, совсем нет, уйдет в разы больше(
Как тут выполняется согласование уровней? Я на сколько понимаю про согласование уровней, у STM32 напряжение логической единицы 3,3 В, а у драйвера MAX7219 логическая единица начинается индикации с 4,5 В. Поэтому включается в микроконтроллере для выходных логических сигналов режим "с открытым стоком" которые толерантны к 5 В и установливается внешние подтягивающие резисторы 1 - 5 кОм к +5 В.
Вроде все так сделал, несколько раз перепроверил, файл main вручную вводил, но этап инициализации не работает (дисплей не светится). Может на китайской плате SPI не работает?
@@Solderingironspb , Да тоже Blue pill. 407VET6 пробовал такая же ситуация (не работает) . Осцциллографом становился на шину MOSI и ничего там не увидел. Буду разбираться.....
по поводу осциллографа. Там частота же большая. Мой домашний осциллограф(FNIRSI DSO PRO) ничего не может зафиксировать. Поэтому, для этих целей, я пользуюсь логическим анализатором Saleae Logic 16.
@@Solderingironspb я пробовал логически анализатор KINGST VIS. Он какую то билибербу видит, я таких символов не отправляю. Отправка идёт, но как - то через ж.....
@@Solderingironspb допустим вот один из вариантов работы: если в цикл while вписать очистку дисплея, то дисплей потухший. Если очистка не вписана в основном цикле while, а перед ним то на дисплее горят все символы и сегменты (типа тест) . Провода в пределах 20-ти сантиметров. Я уже и частоту снижал через предделитель до 200 -та ( окрукленно) килоГерц. Все равно работает все не адекватно.
Спасибо за труд . У меня такая проблема переход из единиц в десятки происходит на цифре 9 а должен на 0 . В библиотеке не могу найти где это исправить . Глянь пожалуйста когда время будет . Зарание блогодарен.
Добрый день! Напишите мне вконтакте, я так хоть со скринами смогу ответить. Ссылка на главной странице канала или на github. На крайний случай на почту olegdizzvolkov@yandex.ru
ничего себе...А мою библиотеку подключали без каких либо изменений? #define никакие не удаляли? При инициализации ставили дилей 100 мс, а потом max7219_Init()? Отправку значений делаете через max7219_Send_int32_t(int32_t value)? И еще. При отладке, попробуйте отправляемые значения на дисплей, вывести в отладку. Что он шлет...Можете мне проект скинуть на почту. Я гляну.
Зашёл посмотреть, как подключить дисплей, а до кучи разобрался, как в СПИ отправлять, однозначно лайк
Спасибо за уроки. С УВАЖЕНИЕМ!
Отличный урок, спасибо!
Спасибо, помогли быстро разобраться
Спасибо помог. (первая строчка в таблице с нулями нужна что бы отправить данные на вторую микросхему)
т.е. No-Op тоже стоит отправить при инициализации?
Ждём урок про i2c)
15:32 зачем делать массив на 1 элемент? uint8_t tx_buffer = adress; а в функцию передачи SPI пишем адрес нашей переменной &tx_buffer, или раз отправляете 2 байта то можно было сделать массив на 2 элемента записать туда данные и одним вызовом функции передачи отправит туда сразу 2 байта.
Библиотеки лучше подключать ( даже сказать правильнее ) делать в корне проекта папку и в нее кидать все файлы относящиеся к данной библиотеке и в проекте подключать эту папку. Тогда если много библиотек все структурировано и нет бардака =)
Тут вы правы. Надо попробовать)
Вы бы не могли пример здесь написать?
Пример рабочий. Автору салют! Не нашел вывод точки в любую позицию.
Может кому-нибудь пригодиться.
//вывод цифры в произвольную позицию с установкой точки или без
void max7219_SendInt_point(int pos, int a, _Bool b){
char mass[9] = { 0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B, 0x5F, 0x70, 0x7F, 0x7B}; ////массив чисел для 7-сегментного индикатора
if (b == 1) {
max7219_Transmit(pos, mass[a]|0x80); //установка точки
}
else max7219_Transmit(pos, mass[a]);
}
вызов
max7219_Display_Clean();
max7219_SendInt_point(1,2,1);
max7219_SendInt_point(5,3,0);
max7219_SendInt_point(8,7,1);
max7219_Send_int32_t(12345678); //вывод числа
max7219_Transmit(0x01, 0x80); //вывод цифры в позицию 1
max7219_Intensity(3); //яркость
Можно существенно облегчить получение кода символа используя "декодер" pro-diod.ru/programms/max7219-dekoder.html
Доброго вам и спасибо за уроки! Скажите пожалуйста как вывести 2 переменные в разные сегменты? например температура в 0 сегмент, а время в 4 сегмент?
добрый день! Тут только переделывать/дописывать библиотеку.По сути дела надо 2 числа переделать в текст и вывести это на дисплей. Может потом сделаю эту функцию. Вы уже не первый, кто спрашивает про это)
@@Solderingironspb тогда будем ждать примеров! Спасибо!
ЖДЁМ урок на TM1638.
А в чем его преимущество перед данной микросхемой?) Загуглил. Там такие платы здоровые. Туда и кнопки напихали и диодов куча...
@@Solderingironspb на MAX7219 больше используют модуль точечной матрицы 8x8 светодиодов. а на TM1638 как раз 8-разрядный модуль дисплея ну и + там кнопки.
преимущество? да в принципе нет. Ну все ровно Спасибо за видио и пояснения.
Привет! спасибо за урок ! Вот бы урок конкретно по языку C приминительно к stm32. Низнаю с чего начать изучение языка ...
Добрый вечер. Здесь сложно даже чего-то Вам посоветовать. Я начинал с ардуино. Чего-то делал. Смотрел различные уроки. Сама суть - это начать что-то делать свое, а не повторять за кем-то проекты. Начнете делать свое - тут же пойдет рост знания языка в гору. Вы будете спотыкаться на каждом шагу, НО Вы сами же будете находить ответы на свои вопросы. Так шаг за шагом и изучите. Теория без практики - ничто. Сразу начинать изучать Stm32 без знания Си - это похвально конечно? но сложно. Можете посмотреть мой урок#00. Я там рассказывал про книги, которые я читаю. И вот курс "штурмуем stm32" как раз нацелен на то, чтоб человек вник в Си на примере МК STM32F103C8T6 (книга "Си для встраиваемых систем").
@@Solderingironspb Спасибо ✋🏻
Хорошо бы сделать крупнее шрифт при демонстрации текста
Я думал на счет этого, т.к. многие видео с телефона смотрят. Но меня пока останавливают две вещи: 1) Программировать становится жутко неудобно. 2) Если на монтаже увеличивать картинку, то дисплей постоянно будет прыгать туда-сюда, т.к. скачу из окна в окно. Да и времени на обработку, которого у меня итак, к сожалению, совсем нет, уйдет в разы больше(
А как микросхема работает от 3.3 вольта (на видео красный провод) если в даташите на max7219 4-5.5v o_0 ?
Не знаю) работала и работала хорошо)
@@Solderingironspb Я тоже запустил ( CS только через HAL и на макетке ) ... магия)) спасибо за содержательное видео.
Как тут выполняется согласование уровней?
Я на сколько понимаю про согласование уровней, у STM32 напряжение логической единицы 3,3 В, а у драйвера MAX7219 логическая единица начинается индикации с 4,5 В. Поэтому включается в микроконтроллере для выходных логических сигналов режим "с открытым стоком" которые толерантны к 5 В и установливается внешние подтягивающие резисторы 1 - 5 кОм к +5 В.
Добрый день!
Данный модуль просто питал от 3.3В.
Работает идеально. Не сбоит.
Спасибо, возьму на заметку
@@Solderingironspb да, MAX7219 стабильно валит от внешнего 3,3V, и это очень актуально кто подключают SPI от ST_LINK клона, иначе глючет
Спасибо!!! P.S. а что значит: поднять ножку, опустить ножку?
Высокий и низкий логический уровень. Вкл и выкл, если совсем уж просто)
@@Solderingironspb спасибо
Вроде все так сделал, несколько раз перепроверил, файл main вручную вводил, но этап инициализации не работает (дисплей не светится). Может на китайской плате SPI не работает?
А плата какая? Тоже blue pill?
@@Solderingironspb , Да тоже Blue pill. 407VET6 пробовал такая же ситуация (не работает) . Осцциллографом становился на шину MOSI и ничего там не увидел. Буду разбираться.....
по поводу осциллографа. Там частота же большая. Мой домашний осциллограф(FNIRSI DSO PRO) ничего не может зафиксировать. Поэтому, для этих целей, я пользуюсь логическим анализатором Saleae Logic 16.
@@Solderingironspb я пробовал логически анализатор KINGST VIS. Он какую то билибербу видит, я таких символов не отправляю. Отправка идёт, но как - то через ж.....
@@Solderingironspb допустим вот один из вариантов работы: если в цикл while вписать очистку дисплея, то дисплей потухший. Если очистка не вписана в основном цикле while, а перед ним то на дисплее горят все символы и сегменты (типа тест) . Провода в пределах 20-ти сантиметров. Я уже и частоту снижал через предделитель до 200 -та ( окрукленно) килоГерц. Все равно работает все не адекватно.
Спасибо за труд . У меня такая проблема переход из единиц в десятки происходит на цифре 9 а должен на 0 . В библиотеке не могу найти где это исправить . Глянь пожалуйста когда время будет . Зарание блогодарен.
Добрый день! Напишите мне вконтакте, я так хоть со скринами смогу ответить. Ссылка на главной странице канала или на github. На крайний случай на почту olegdizzvolkov@yandex.ru
@@Solderingironspb u.pcloud.link/publink/show?code=kZ1RjFXZiKkV1RIISPbyyhcB2t4fWjYAV0JV Посмотри проблему .
ничего себе...А мою библиотеку подключали без каких либо изменений? #define никакие не удаляли? При инициализации ставили дилей 100 мс, а потом max7219_Init()? Отправку значений делаете через max7219_Send_int32_t(int32_t value)? И еще. При отладке, попробуйте отправляемые значения на дисплей, вывести в отладку. Что он шлет...Можете мне проект скинуть на почту. Я гляну.
@@Solderingironspb u.pcloud.link/publink/show?code=kZ1RjFXZiKkV1RIISPbyyhcB2t4fWjYAV0JV Проект лови .
Пробуйте сейчас yadi.sk/d/_uwOUY5BVAmqpA
P.S. Проверить полноценно не могу, т.к. F411мк ко мне только едет еще.