@@ArduNotes я в последнее время предпочитаю альтернативную форму записи - and гораздо тяжелее перепутать с bitand, чем & vs &&. Или можно для бинарного использовать старую форму, а для логического новую.
@@ArduNotes Zinkin Mitya Интересно в условии стоит millis .т.е. таймают по условию должен быть миллисекундах, а вывод Serial.print показывает в микросекунда. Как? Как я понимаю минимальная задержка будет 10 миллисекунд.
Алекс, сделай разбор кода какого-нибудь своего проекта. Видео с светомузыкой на гиперкубе было топовым, очень классно и понятно ты все объяснил. Я потом, используя тот алгоритм, переписал старую твою светомузыку и выглядит это прекрасно. Я это к тому, чтоб ты рассказал про какой-то код на каком-то более конкретном примере
Класс, игрался со связью по serial между 8266 и ардуино пару лет назад. Спаял делитель так как платы на разное напряжение и... Забросил) самое время достать снова всю эту шляпу и поиграться снова. Спасибо за все тонкости и за асинхронность. Жму волосатую руку.
Ооо, то что надо, спасибо большое! У меня контроллер моноколеса периодически шлет массив с циферками, с ними мне как раз нужно будет работать в ардуине.
Вооооооооот я уже начинаю разбираться в кодах! А это сулит новые свершения. БлагоДарю тебе Гувер за твои старания, ты и сам от этого получаешь неистовое удовольствие!)
Я в свое время написал для VBA приложений JSON парсер для хранения данных и обмена между приложениями в текстовом формате, получилось достаточно просто и эффективно, но для для ресурсов микроконтроллера лучшее решение применение команд: ключ, значеие.
esp 8266 - интересный модуль, в теории у него много возможностей но самая известная и пожалуй классическая- естественно деуатентификатор. Поэтому хотелось бы узнать что то ещё чтобы разнообразить работу с данным модулем
@@MrDent-tp4ke деуатентификатор? Это что же такое "естественное", "классическое" и "самое известное", что о нём даже Гугл не слыхивал? Поясните это на понятном языке, пожалуйста.
Чтобы упростить процесс приема пакета - все эти таймауты - можно же использовать структуру TLV ru.m.wikipedia.org/wiki/Tag-length-value Часть пакета tag/type и length имеет фиксированную длину, а длина пэйлоада будет известна из поля length, в итоге мы точно знаем когда надо начинать парсить, а таймаут оставить для определения битости пакетов
Когда то давно изучал c, сейчас пишу только на python, и вдруг натыкаюсь на этот видос, аж мурашки по коже побежали как вспомнил обязательное присвоение типа переменной и указатели, ууфф.
Для пользователя вариант "название пробел аргумент пробел аргумент..." куда приятнее (просто разделители иные). Можно функции мутить int argc, char* argv[] и ещё char answer[] для записи в эту строку ответа. Удобно. Предпочитаю именно этот метод, т.к. лень ещё прогу делать с крутилками и жмакалками Но вот между устройствами только структуры, только хардкор.
Еще хотелось бы видео по сетевым каким то протоколам тот же изернет+интернет и работе с радиопередачей данных вифи/лора/блютуз и другие - т.е. что то в этом направлении.
инторнетный протокол слишком сложный для 8 битного контроллера и жрет много ресурсов есть готовые библиотеки для этого и там тот же принцип как и тут, парсить все равно придется а как передавать данные - зависит от конкретной библиотеки
расскажи о средствах обеспечения помехозащищенности) алгоритмы что делать если пакет не пришел до конца, пакет пришел битый (с искажениями) и т.д. о CRC, протоколах подтверждения от устройства об успешном получении пакета и т.д.
@@ArduNotes почему, я лично реалезовал пару проектов на нем? Согласен что на АВР это не очень эфективно, но тем не менее возможность разделить на потоки различные не ресурсоемкие процедуры на потоки иногда очень удобно
@@Shef-Il согласен, но все-таки обычные ардуинки лучше не использовать для таких проектов. FREERTOS может быть полезен на esp, тем более на 32 он уже "предустановлен".
@@MAD_ALEX не в обиду, но если вы спрашиваете "зачем" и вспоминаете про "милис" вы явно очень начинающий, ведь это тоже самое что спросить"зачем вы летите в Египет, ведь солнце светит и на Урале"
ВАЖНО! (тем кто как я не понимает ничего в Ардуино и коде подсказка). В строчке if (Serial.available() > 1){ заменить 1 на 0 что бы было if (Serial.available() > 0){ Тогда всё будет работать нормально.
А ещё такой затык. Не хотел работать один из цифровых пинов нормально. Работал только после значения за 200. Но когда поменял пин, всё заработало как надо. Так что имейте ввиду. Может кому то будет полезно.
очень простые уроки, возьмем строку, это делается так {прошло 3 секунды видео} вот так легко и просто мы получили межгалактический зведолет с возможностью генерации субатомных частиц
В примере чтения строки с записью нуля в конце - ошибка же :) переполнение стека при получении 30 символов! (ruclips.net/video/Ul03Vkg9A40/видео.html) Нужно или буфер выделять с запасом на 0 в конце, или в метод чтения передавать макс длину на 1 меньше.
Столкнулся с интересным косяком. Стояла скорость 230400 и как я не изголялся, функция parsInt выдавала только первую цифру ( пример, отправляем 453, получаем 4) либо ноль... Я весь моск сломал в попытке понять что делаю не так..... Потом снизил скорость до "классических" 9600 и все заработало как положено. Может кому пригодится.
Очень полезный урок. Подскажите что лучше использовать чтобы парсить ответы от SIM800. Уперся в то, что.... чем больше добавляют условий и обработку запросов, то строка (at) приходящая от SIM800 уменьшается... while (SIM800.available() > 0) { at += char(SIM800.read()); } if (at.indexOf("ATD" + phon + ";") > -1) { ******* } else if (at.indexOf("+CLIP:") > -1 { ******* }
Если по сериалу управляет человек, то такой код будет оправдан, однако если какая-либо программа, то логичнее создать структуру (СИшную, с определенным размером) и в readBytes передавать указатель на структуру, тогда все поля автоматом заполнятся
попробуй отправить сишную структуру из программы на питоне или из андроид приложения, сделанного в конструкторе =) я не просто так сказал, что текстовые строки - самый универсальный способ, не просто так люди JSON придумали и всё на нём сейчас работает.
@@ArduNotes На уровне приложений можно конечно парсить json и в ряде случаев так делать правильно как раз из за читаемости таких форматов. Однако если мы программируем МК, то часто производительность критична. Один лишь заголовок с двумя/тремя полями в большинстве случаев легко в байт поместится (upd: в простейших случаях конечно, но смысл понятен) . А в python кстати есть тип для работы с байтами, даже есть модуль struct.
Привет. Я хочу сделать голосовую интеллект для телевизора, чтоб использовать место пульта. Как собрать плату для данного задач. Сделайте пожалуйста видеоролик по этой направления. Спасибо заранее
8:47 тут проблема - если массив заполнится полностью на 30 символов, то мы зайдем за его границы. в readBytesUntil надо оставить 30, а в переменной надо сделать char data[30 + 1];
Вроде писал всё по гайду, но когда хотел отключить светодиод он посылает меня куда подальше и не хочет отключать его в чём может быть проблема? Может в моей рукожопости?
Сейчас стандартный формат для такого обмена данными это JSON. Изобретать свои смысла особо не имеет, только гиморрой получим при подключении к какому-нибудь HomeAssistant, Node-RED итд
@@krutoyinfo Тут чувак в видео ключи-значение передает, типа между множеством устройств. Включая MQTT, веб итд. Лучше JSON для этого ничего не придумано. Если б речь шла только про два устройства и UART, я бы наверное такого не предложил.
а ты видел сколько килобайт памяти он отжирает на Ардуино и с какой скоростью работает?? Использовать настолько дикий инструмент для передачи нескольких данных это прям моё почтение...
опробовал вариант Вариант 3 (однобуквенный, без задержки) прекрасно но только с положительными числами при подачи минусового числа выход 0 можно это както исправить уже мозги кипят
У меня такая проблема возникла. Ардуино мега, на ней CD модуль, GPS, Oied дисплей, Барометр DPS310, Кнопка сброса высоты, nRF24L01 Модуль с CD модулем отказался работать по SPI , Пришлось через сериал1 меги принять сериал с ардуино нано на которой установил nRF24L01( он принимает коррекцию высоты с базы, что то типо псевдо ртк ) Этот сигнал при включении сразу принимается, А ПОСЛЕ ВЫКЛЮЧЕНИЯ БАЗЫ ЧЕРЕЗ ЭННОЕ ВРЕМЯ, СИГНАЛ ВСЁ ЕЩЁ МЕЛЬТИШИТ В ПОРТУ МЕГИ СЕКУНД 20, а так же записывается на карту, В ЧЕМ МОЖЕТ БЫТЬ ПРОБЛЕМА ???
Протокол передачи данных лучше использовать от Алекса Гивера или писать самому. Официальные протоколы связи медленные и пожирают память и крайне тупо написаны.
потоки на микроконтроллерах - как костыль в одном месте. Мейнлуп должен быть один, всё остальное - по таймеру на миллис, как в самых базовых уроках. Что то требовательное ко времени - в прерываниях таймера. Про потоки забыть
Урок полезный, но есть один недочет по библиотеке парсинга. При выделении памяти в методе "split" на переменную "str" стоит волшебный коэффициент "2". При моих экспериментах возникала ошибка памяти HEAP CORRUPT, устранить которую я смог только повысив коэффициент до 10.
на какой платформе тестировался код? Здесь 2 имеет смысл веса указателя, в AVR это 2 байта. Я заменил двойку на sizeof(char*), должно везде работать корректно
Как удостовериться что пакет принят полностью, и закончен по символу терминатора, а не таймауту? у меня когда пакеты идут часто они иногда смешиваются и всё плохо становится
15:13 ошибка, вместо логического "И" там бинарный, странно, что не вылезло при тестировании.
спасибо! Исправлю в примерах
@@ArduNotes я в последнее время предпочитаю альтернативную форму записи - and гораздо тяжелее перепутать с bitand, чем & vs &&. Или можно для бинарного использовать старую форму, а для логического новую.
@@ArduNotes Zinkin Mitya
Интересно в условии стоит millis .т.е. таймают по условию должен быть миллисекундах, а вывод Serial.print показывает в микросекунда. Как? Как я понимаю минимальная задержка будет 10 миллисекунд.
@@MiaminZD Вывод показывает сколько микросекунд исполнялся код на 39-40 строке, а вызываться он будет не чаще, чем раз в 10 миллисекунд
Спасибо огромное! Без этого не работало. Этот комментарий должен быть вверху.
Второе название канала - "ценнейшая находка для ардуинщика".
Высший пилотаж, объяснить сложное просто. Спасибо!😊
Ты мои мысли прям читаешь) Перелопатил по этой теме уже все что можно
Алекс, сделай разбор кода какого-нибудь своего проекта. Видео с светомузыкой на гиперкубе было топовым, очень классно и понятно ты все объяснил. Я потом, используя тот алгоритм, переписал старую твою светомузыку и выглядит это прекрасно. Я это к тому, чтоб ты рассказал про какой-то код на каком-то более конкретном примере
Класс, игрался со связью по serial между 8266 и ардуино пару лет назад. Спаял делитель так как платы на разное напряжение и... Забросил) самое время достать снова всю эту шляпу и поиграться снова. Спасибо за все тонкости и за асинхронность. Жму волосатую руку.
Ооо, то что надо, спасибо большое! У меня контроллер моноколеса периодически шлет массив с циферками, с ними мне как раз нужно будет работать в ардуине.
очень бы хотелось увидеть уроки про переход от ардуин к голым мк. минимальную обвязку чипа, подключение к компу и т.д.
огромный гайд выйдет через пару недель
@@ArduNotes когда
Очень интересно!Хоть и не понятно много чего
Вооооооооот я уже начинаю разбираться в кодах! А это сулит новые свершения. БлагоДарю тебе Гувер за твои старания, ты и сам от этого получаешь неистовое удовольствие!)
Я в свое время написал для VBA приложений JSON парсер для хранения данных и обмена между приложениями в текстовом формате, получилось достаточно просто и эффективно, но для для ресурсов микроконтроллера лучшее решение применение команд: ключ, значеие.
Ой, на 8:50 - потенциальная запись за пределы массива.
(если придёт пакет в 30 байт, то мы запишем NULL в 31й элемент массива)
Спасибо большое за ценный урок! Очень важная информация!
Благодарю, доступно, подробно, а главное интересно.
*Л. а. й. к.*
Лучший канал по абдуринке!
Абдуринка - это выступления ВВП по ТВ :)
Англоязычный ютюб смотри, там это давно уже все есть. И проекты покруче
@@krutoyinfo ссылку на аналогичный урок пожалуйста
@@krutoyinfo Дайте ссылку плз.
Давно хотел научиться передавать команды на ардуино или esp по блютуз и вай фай. Спасибо. Жду следущий урок
Сколько небольших производств заработало благодаря Гайверу, самому в этом всём разобраться очень сложно)
Я 4 года ждал это видео
Лайк за Терминатора )
кренеть, вот теперь начнётся жара...
Урок ценный но уже тяжел для понимания начинающим.
Ничего не понял, но очень познавательно.
Как то, года 3 назад. Просил такой видос, дождался)))
Такая же херня
Спасибо! То, что надо!
Вот бы ещё по uart мульти-точке урок. Чтобы решение коллизий попинать
а уроки с esp и сетью будут?)
да
esp 8266 - интересный модуль, в теории у него много возможностей но самая известная и пожалуй классическая- естественно деуатентификатор. Поэтому хотелось бы узнать что то ещё чтобы разнообразить работу с данным модулем
А ESP 32 будут?
@@MrDent-tp4ke деуатентификатор? Это что же такое "естественное", "классическое" и "самое известное", что о нём даже Гугл не слыхивал?
Поясните это на понятном языке, пожалуйста.
Вот конечно еще бы вы медленнее все рассказывали. Но всё равно вы очень крутой спасибо вам огромное.
Чтобы упростить процесс приема пакета - все эти таймауты - можно же использовать структуру TLV
ru.m.wikipedia.org/wiki/Tag-length-value
Часть пакета tag/type и length имеет фиксированную длину, а длина пэйлоада будет известна из поля length, в итоге мы точно знаем когда надо начинать парсить, а таймаут оставить для определения битости пакетов
Когда то давно изучал c, сейчас пишу только на python, и вдруг натыкаюсь на этот видос, аж мурашки по коже побежали как вспомнил обязательное присвоение типа переменной и указатели, ууфф.
Зато скорость роботы кода выше в разы
когда нибудь программисты совсем деградируют)
в десятки и сотни
Круто и простопонятно, ещё ещё требуют наши мозги
Спасибо за видео и советы Поучительный материал
Ой спасибо, братик, какраз к дипломной работе подоспел!!!!
Для пользователя вариант "название пробел аргумент пробел аргумент..." куда приятнее (просто разделители иные). Можно функции мутить int argc, char* argv[] и ещё char answer[] для записи в эту строку ответа. Удобно. Предпочитаю именно этот метод, т.к. лень ещё прогу делать с крутилками и жмакалками
Но вот между устройствами только структуры, только хардкор.
между устройствами да, структуры) в другом уроке будем разбирать
@@ArduNotes , в догонку к методу:
Можно несколько вариантов для ключа использовать
case 'r':
Print("big r")
case 'R':
Код на r
Break
Расскажи как паркинг можно сделать на прерываниях на примере разбора данных от GPS. Это было бы здорово.
очень полезный видос! Спасибо!
Еще хотелось бы видео по сетевым каким то протоколам тот же изернет+интернет и работе с радиопередачей данных вифи/лора/блютуз и другие - т.е. что то в этом направлении.
Это требует много времени и стоит денег
инторнетный протокол слишком сложный для 8 битного контроллера и жрет много ресурсов
есть готовые библиотеки для этого и там тот же принцип как и тут, парсить все равно придется
а как передавать данные - зависит от конкретной библиотеки
Спасибо, Alex🤝
Json мне нравится)
а ёлочка?
нет блин xml
Тоже ждешь финальную серию руки терминатора?
аааа круто, скорей бы новый урок
расскажи о средствах обеспечения помехозащищенности) алгоритмы что делать если пакет не пришел до конца, пакет пришел битый (с искажениями) и т.д. о CRC, протоколах подтверждения от устройства об успешном получении пакета и т.д.
А нельзя ли json читать и отправлять ардуиной?🤔
Здравствуйте Алексей можно пожалуйста отдельный урок по esp8266, заранее спасибо)))
Его зовут Александр))
Пасибо за уроки, чуваки
В 0:12 после рабочего дня это было так жоска, будто я снова на первой субботней паре по квантам)))
Но все равно спасибо, тема важная.
Ждём урока по FreeRTOS!!!!!!!
не имеет смысла на AVR
@@ArduNotes почему, я лично реалезовал пару проектов на нем? Согласен что на АВР это не очень эфективно, но тем не менее возможность разделить на потоки различные не ресурсоемкие процедуры на потоки иногда очень удобно
@@Shef-Il согласен, но все-таки обычные ардуинки лучше не использовать для таких проектов. FREERTOS может быть полезен на esp, тем более на 32 он уже "предустановлен".
@@Shef-Il зачем, если есть миллис и на крайний случай прерывания таймера
@@MAD_ALEX не в обиду, но если вы спрашиваете "зачем" и вспоминаете про "милис" вы явно очень начинающий, ведь это тоже самое что спросить"зачем вы летите в Египет, ведь солнце светит и на Урале"
kruto raskazal, vsio ponetna
Шикарный канал, почему рекламмы нет
у нас только JLCPCB на рекламе, остальное не подходит по тематике =)
красававчег очень актуально и подробно обьяснено
Говори медленнее, приходится скорость воспроизведения снижать.
оверклок мозга включается в /boot/config.txt
Отличное видео, давай тольно на СИ...
А оно на чем, на бейсике или питоне?..
Сделай web для теплицы!
Супер тема !!!
Респект!
Хорошее видео. Лайк.
ВАЖНО! (тем кто как я не понимает ничего в Ардуино и коде подсказка).
В строчке if (Serial.available() > 1){
заменить 1 на 0 что бы было if (Serial.available() > 0){
Тогда всё будет работать нормально.
А ещё такой затык. Не хотел работать один из цифровых пинов нормально. Работал только после значения за 200. Но когда поменял пин, всё заработало как надо. Так что имейте ввиду. Может кому то будет полезно.
Мощщщно! =)
Актуально, спасибо.
очень простые уроки, возьмем строку, это делается так {прошло 3 секунды видео} вот так легко и просто мы получили межгалактический зведолет с возможностью генерации субатомных частиц
Добрый день, подскажите будет обзор на параллельную работу ардуино, (по двум проводам соединяются от 2 и более), аналогия с ARINC 629.
А есть подробный урок про организацию ethernet связи?
нету
жесть
@@ArduNotes а будет?
В примере чтения строки с записью нуля в конце - ошибка же :) переполнение стека при получении 30 символов! (ruclips.net/video/Ul03Vkg9A40/видео.html) Нужно или буфер выделять с запасом на 0 в конце, или в метод чтения передавать макс длину на 1 меньше.
Подкину идею, счётчик ёмкости аккумов с логгированием на ПК, графики, ограничение по току, напряжению 🙂
давай ещё код Хэмминга на ардуйне =)
будет, я свою реализацию замутил
А я использую json формат, передаю данные через lora, вроде тоже неплохо работает.
Интересно, почему про sscanf никто не говорит? Очень удобная стандартная функция.
Класс!
контрольная сумма должна быть. и это правильно
Об этом в отдельном уроке
Респект
SPI это тоже протокол передачи данных?
В библиотеке Gyveroled в файле ExtFont для esp8266 надо include заменить на просто иначе не компилируется
странно, у людей компилилось. Мб у тебя яверсия ядра старая?
Да, у всех esp свои файлы работы с памятью и т.д. Это нужно учитывать и подключать нужные библиотеки с помощью макросов.
Лучше всего байтовые протоколы фиксированного размера
это да
Годнота!
Сделай видео,как с приложения.
Столкнулся с интересным косяком. Стояла скорость 230400 и как я не изголялся, функция parsInt выдавала только первую цифру ( пример, отправляем 453, получаем 4) либо ноль... Я весь моск сломал в попытке понять что делаю не так..... Потом снизил скорость до "классических" 9600 и все заработало как положено. Может кому пригодится.
Очень полезный урок.
Подскажите что лучше использовать чтобы парсить ответы от SIM800.
Уперся в то, что.... чем больше добавляют условий и обработку запросов, то строка (at) приходящая от SIM800 уменьшается...
while (SIM800.available() > 0) {
at += char(SIM800.read());
}
if (at.indexOf("ATD" + phon + ";") > -1)
{
*******
} else if (at.indexOf("+CLIP:") > -1
{
*******
}
Привет.
Я хочу сделать голосовую интеллект для телевизора, чтоб использовать место пульта.
Как собрать плату для данного задач. Спасибо заранее
Если по сериалу управляет человек, то такой код будет оправдан, однако если какая-либо программа, то логичнее создать структуру (СИшную, с определенным размером) и в readBytes передавать указатель на структуру, тогда все поля автоматом заполнятся
попробуй отправить сишную структуру из программы на питоне или из андроид приложения, сделанного в конструкторе =) я не просто так сказал, что текстовые строки - самый универсальный способ, не просто так люди JSON придумали и всё на нём сейчас работает.
@@ArduNotes На уровне приложений можно конечно парсить json и в ряде случаев так делать правильно как раз из за читаемости таких форматов. Однако если мы программируем МК, то часто производительность критична. Один лишь заголовок с двумя/тремя полями в большинстве случаев легко в байт поместится (upd: в простейших случаях конечно, но смысл понятен) . А в python кстати есть тип для работы с байтами, даже есть модуль struct.
@@ArduNotes Кстати поля структуры можно делать массивами char, результат будет тот же самый, что вы показали, только писать парсер не надо
case 2 после обрыва передачи продолжает выдавать шим по последним данным,как обнулить если данные не приходят?
Привет.
Я хочу сделать голосовую интеллект для телевизора, чтоб использовать место пульта.
Как собрать плату для данного задач. Сделайте пожалуйста видеоролик по этой направления.
Спасибо заранее
Я первый, ахахаха, впервые такое пишу ))
8:47 тут проблема - если массив заполнится полностью на 30 символов, то мы зайдем за его границы. в readBytesUntil надо оставить 30, а в переменной надо сделать char data[30 + 1];
Вроде писал всё по гайду, но когда хотел отключить светодиод он посылает меня куда подальше и не хочет отключать его в чём может быть проблема? Может в моей рукожопости?
Сейчас стандартный формат для такого обмена данными это JSON. Изобретать свои смысла особо не имеет, только гиморрой получим при подключении к какому-нибудь HomeAssistant, Node-RED итд
А JSON можно как-то подружить под нужды самодельной аппаратуры управления для разных летающих игрушек?
@@derungebundener2019 Библиотеки для работы с ним есть под любые платформы. ArduinoJson например.
Ты пару чисел передаешь, какой нах джсон? Наслушался гдето модных слов?
@@krutoyinfo Тут чувак в видео ключи-значение передает, типа между множеством устройств. Включая MQTT, веб итд. Лучше JSON для этого ничего не придумано. Если б речь шла только про два устройства и UART, я бы наверное такого не предложил.
а ты видел сколько килобайт памяти он отжирает на Ардуино и с какой скоростью работает?? Использовать настолько дикий инструмент для передачи нескольких данных это прям моё почтение...
2-3 месяца назад заказал эти платки за 2$. А сейчас - 3.5-4$ из за дефицит чипов.
опробовал вариант Вариант 3 (однобуквенный, без задержки) прекрасно но только с положительными числами при подачи минусового числа выход 0 можно это както исправить уже мозги кипят
Теоретически можем использовать, что б метеостанция скидивала график смени всех датчиков?
У меня такая проблема возникла. Ардуино мега, на ней CD модуль, GPS, Oied дисплей, Барометр DPS310, Кнопка сброса высоты, nRF24L01 Модуль с CD модулем отказался работать по SPI , Пришлось через сериал1 меги принять сериал с ардуино нано на которой установил nRF24L01( он принимает коррекцию высоты с базы, что то типо псевдо ртк ) Этот сигнал при включении сразу принимается, А ПОСЛЕ ВЫКЛЮЧЕНИЯ БАЗЫ ЧЕРЕЗ ЭННОЕ ВРЕМЯ, СИГНАЛ ВСЁ ЕЩЁ МЕЛЬТИШИТ В ПОРТУ МЕГИ СЕКУНД 20, а так же записывается на карту, В ЧЕМ МОЖЕТ БЫТЬ ПРОБЛЕМА ???
Протокол передачи данных лучше использовать от Алекса Гивера или писать самому. Официальные протоколы связи медленные и пожирают память и крайне тупо написаны.
Как грамотно организовать этот парсер в большом проекте, где много датчиков и мейнлупов?
Хочу урок про альтернативу pthread в ардуинках
потоки на микроконтроллерах - как костыль в одном месте. Мейнлуп должен быть один, всё остальное - по таймеру на миллис, как в самых базовых уроках. Что то требовательное ко времени - в прерываниях таймера. Про потоки забыть
Интересно насколько сложно реализовать отправку данных через протокол CAN
Программный can?) А вы знаете толк в извращениях..)
Го мэш на есп забахаем? Или общение по блютузу
Урок полезный, но есть один недочет по библиотеке парсинга. При выделении памяти в методе "split" на переменную "str" стоит волшебный коэффициент "2". При моих экспериментах возникала ошибка памяти HEAP CORRUPT, устранить которую я смог только повысив коэффициент до 10.
на какой платформе тестировался код? Здесь 2 имеет смысл веса указателя, в AVR это 2 байта. Я заменил двойку на sizeof(char*), должно везде работать корректно
@@ArduNotes Я тестировал на esp32. Да, т.к. она 32 битная, то размер указателя на ней 4 байта. Затупил)
Хе вспомнил прошивку марлин и отправку gcode на принтер, ведь там все так же
всегда пинал данные по i2c, изменившиеся байты и целочисленные(деля на 4 (analog) или смещая
держи в курсе)
Подскажите, пожалуйста, parseint обрабатывает числа со знаком "минус"?
а когда управления аруино и светодиодами по otg на смартвоне
Как удостовериться что пакет принят полностью, и закончен по символу терминатора, а не таймауту? у меня когда пакеты идут часто они иногда смешиваются и всё плохо становится
чтото мне это напоминает протокол tcpip на минималках
А готовые протоколы типа протобуф или жсон есть?