Resident
Калина кстати лучше В неё больше баб и картошки помещается
а если на небольшие кусочки разделить ещё больше влезет 😁👹 chunked 😂
ok-home
достаточно найти "x открывающую кавычку и первую букву, потом сразу одной машинной командой делаем p += namesize(var)+2 и получаем начало поля после двоеточия, при этом нет потерь на повторный вызов strstr и аллокации на стеке в описании грамматики это будет выглядеть как пустое правило \s\"x.{7}:
возьмите лучше заведомо рабочий токенайзер типа jsmn.h или чуть более продвинутый парсер coreJSON, все работает быстро без аллокаторов и почти не хавает ресурсов, для разбора простых json более чем достаточно
Maxx
Толь дело для поиска значения в строке завести полновесную жсон либу и обмазать ее регэкспами чтоб потом спрашивать «а чо я ей загоняю валидный жсон а оно мне нан выдает - это же было так просто» 😁
это просто "совокупность некорректных заявлений обеих сторон". один говорит "давай регэкспами!", но это не тащить либу перл-регэкспов в эмбед, а сделать конечный автомат (коим любой регэксп и является), настроенный на поиск нужного. другой говорит "нет ничего быстрее тупого поиска!", но есть. не тупой. ещё один говорит "у меня же всё работает!", а потом приходят "китайские хакеры", засылают в порт чё-нидь типа "zip bomb"... или не приходят, и всё работает, и он Прав(тм). до тех пор, пока не придут. и в любой момент можно в любого бросить какахой и поржать =)
Dmitry
возьмите лучше заведомо рабочий токенайзер типа jsmn.h или чуть более продвинутый парсер coreJSON, все работает быстро без аллокаторов и почти не хавает ресурсов, для разбора простых json более чем достаточно
мне достаточно парсить на регистрах и сырых указателях, на stm32f030/gd32e240 все библиотеки идут в жопу — там 4К ОЗУ на всё включая стек особенно с учётом того прикола, что для работы парсера есть режим с буфером ввода меньше длины собственно строки
Stanislav
достаточно найти "x открывающую кавычку и первую букву, потом сразу одной машинной командой делаем p += namesize(var)+2 и получаем начало поля после двоеточия, при этом нет потерь на повторный вызов strstr и аллокации на стеке в описании грамматики это будет выглядеть как пустое правило \s\"x.{7}:
Неа, я там выше написал что так нельзя если длина искомой переменной длиннее определенной Т.е. если ты ищешь значение для myVarSuperLongName1 то можешь попасть в myVar1”:”,”myVar2”: - первый символ совпадает, по нужному индексу : но это не то что тебе надо 🥴
ㅤ
А блин кубический. Тогда меньше. В половину где +-
S
Купи лиуензию
как будут деньги - куплю....
Mezzo Lab
Но без пресса влезет без проблем в 1³км
ㅤ
как будут деньги - куплю....
Для этого триал и нужен. Попользовался, проверил что все ок. Накопил денег, приобрел.А так оно стоит херню. 20 баксов в год че-то такое. Че там копить то?
ㅤ
ну так раз херня, купи мне за 20 баксов лицензию на год )
Почему я должен тебе покупать лицензию ?
ㅤ
То есть по твоему если это херня, то я должен рандомному человеку что-то покупать? Интересный подход
S
Почему я должен тебе покупать лицензию ?
вот, а почему я ее должен покупать? разработчики буржуйские?
Tonchik
ну так раз херня, купи мне за 20 баксов лицензию на год )
Стикеры низзя сюда... у меня был "с вас 5 тыщ" ))
Mezzo Lab
Не хочешь покупать - юзай другое
S
Если буржуйские - принципиально не буду....
ㅤ
вот, а почему я ее должен покупать? разработчики буржуйские?
Как ни странно для того чтоб пользоваться.
ㅤ
Если буржуйские - принципиально не буду....
Тогда принципиально и не пользуйся
ㅤ
Странные у тебя принципы, весьма
Valentin
Всем привет. Будьте любезны напишите кто ни будь скетчь для ESP32 в arduino ide, чтобы светодиод постепенно загорался и затем также потух. ПОЖАЛУЙСТА
Aleks
В школьной физике ток течёт в одну сторону, в последующих учебниках - в другую🤡
Ток течет от плюса к минусу во всех учебниках и измерительных приборах. Но по правилам Кирхгофа его направление совсем не важно - физика от этого не меняется. Просто если получился с минусом, то течет в направлении противоположном обходу цепи.
Aleks
ㅤ
А то 😊
Только как это связано с его вопросом не очень ясно
ㅤ
Почему квадрат всё время подключается к моим клоунам илитарным?
Aleks
Только как это связано с его вопросом не очень ясно
Резистор на 100к поставит и можно обычный светодиод подключить
Aleks
Хыы)
Aleks
Ну ок..
ㅤ
Хыы)
Ты его вопрос вообще читал изначально? Он собственно это и спросил. Но мне лень
ㅤ
2 оптоппты и тиристор чтоб мигать светодиодом?
А причем тут оптопары и тиристор? Я не понимаю зачем ты приплел свою ситуацию вообще, когда её не спрашивали
Valentin
Скриншот ведь правила позволяют здесь выкладывать?
Valentin
Нашел готовый скетч, написал скетч в FlProg и везде одна ошибка
Valentin
Посоветуйте нормальную библиотеку ESP32 для ардуино ide
ㅤ
Посоветуйте нормальную библиотеку ESP32 для ардуино ide
Что такое "нормальный библиотека esp32" ?
Valentin
У меня ошибка «ledcSetup’ was not declared in this scope» возникает, когда в коде используется устаревшая библиотека ESP32. Функция ledcSetup была удалена из новой версии пакета ESP32
ㅤ
У меня ошибка «ledcSetup’ was not declared in this scope» возникает, когда в коде используется устаревшая библиотека ESP32. Функция ledcSetup была удалена из новой версии пакета ESP32
Причем тут библиотека. Называй вещи своими именами. Если ты про фреймворк ардуино, то вроде из третьей версии выкинули эти deprecated функции. Пиши на актуальных
ㅤ
ㅤ
Доку читай там вся база
Ivan
Всем привет. Сижу изучаю ESP32 + FreeRTOS связку и столкнулся с странным на мой взгляд поведением при обработке прерываний по кнопке. Вот исходник. https://github.com/vanohaker/freertos-isr-test/blob/main/main/main.cpp Всё билдится, прошивается и запускается. В логах вижу вот такое в конце после нажатия на кнопку один раз. I (748) main_task: Started on CPU0 I (758) esp_psram: Reserving pool of 32K of internal memory for DMA/internal allocations I (758) main_task: Calling app_main() I (758) gpio: GPIO[14]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 1| Intr:1 I (768) main_task: Returned from app_main() I (3188) isr_task: GPIO[14] intr, val: 1 I (3388) isr_task: GPIO[14] intr, val: 0 I (3388) isr_task: GPIO[14] intr, val: 0 I (3388) isr_task: GPIO[14] intr, val: 0 I (3388) isr_task: GPIO[14] intr, val: 0 I (3388) isr_task: GPIO[14] intr, val: 0 Вопрос!? Почему задача gpio_task_btn выполняется 6 раз, а не один при нажатии на кнопку? Дебаунс на кнопке аппаратный, через резистор в колоом и параллельно конденсатор 0.1 микрофарад к минусу. Заранее спасибо.
ㅤ
Всем привет. Сижу изучаю ESP32 + FreeRTOS связку и столкнулся с странным на мой взгляд поведением при обработке прерываний по кнопке. Вот исходник. https://github.com/vanohaker/freertos-isr-test/blob/main/main/main.cpp Всё билдится, прошивается и запускается. В логах вижу вот такое в конце после нажатия на кнопку один раз. I (748) main_task: Started on CPU0 I (758) esp_psram: Reserving pool of 32K of internal memory for DMA/internal allocations I (758) main_task: Calling app_main() I (758) gpio: GPIO[14]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 1| Intr:1 I (768) main_task: Returned from app_main() I (3188) isr_task: GPIO[14] intr, val: 1 I (3388) isr_task: GPIO[14] intr, val: 0 I (3388) isr_task: GPIO[14] intr, val: 0 I (3388) isr_task: GPIO[14] intr, val: 0 I (3388) isr_task: GPIO[14] intr, val: 0 I (3388) isr_task: GPIO[14] intr, val: 0 Вопрос!? Почему задача gpio_task_btn выполняется 6 раз, а не один при нажатии на кнопку? Дебаунс на кнопке аппаратный, через резистор в колоом и параллельно конденсатор 0.1 микрофарад к минусу. Заранее спасибо.
Странный какой-то пример. POSEDGE он называется спадом. Состояние gpio определяется почему-то после того как событие принято а не в ISR. А зачем ты оставил включенной подтяжку внутри если у тебя есть подтяжка снаружи?
Max
ESP8266 NTP Clock with 16×2 I2C LCD Display This project uses an ESP8266 NodeMCU to create a 12-hour format NTP clock with AM/PM, date, and day of the week, displayed on a 16×2 I2C LCD https://www.hackster.io/Manoranjan2050/esp8266-ntp-clock-with-16x2-i2c-lcd-display-c4644c
ㅤ
При этом подтяжку делает к низу.. Короче тут все наоброот
ㅤ
отключи внутренню подтяжку, замени GPIO_INTR_POSEDGE на GPIO_INTR_NEGEDGE. И проверь. Подтяжка надеююсь к плюсу?
ㅤ
Ты же кнопку на минус замыкаешь или на плюс все таки?
ㅤ
Спс. Через 30 минут буду дома и попробую.
И резистор подтяжки замени с килоома на 10 ком
Ivan
Странный какой-то пример. POSEDGE он называется спадом. Состояние gpio определяется почему-то после того как событие принято а не в ISR. А зачем ты оставил включенной подтяжку внутри если у тебя есть подтяжка снаружи?
Первый раз писал и расставлял комменты в коде, а потом начал эксперименты и наверно из-за этого путаница в комментах ) Дебаунс использовать вот такой как на картинке, только без подтяжки, её я включил в контроллере. Сейчас пересоберу всё как надо.
Ivan
И нахрена резистор R1 ?
Я человек простой, вижу пример и делаю как в примере. Наверно как токоограничивающий 🤔
ㅤ
Я человек простой, вижу пример и делаю как в примере. Наверно как токоограничивающий 🤔
Ну можно обойтись без него. А так если место позволяет, можно и присрать его, да
ㅤ
Тогда оставь всё как есть в схеме. Просто пример кода у тебя не очень соответствует действительности. В том коде что ты показал указана подтяжка к земле и прерывание на фронт. Когда у тебя ровным счётом всё наоборот
Ivan
Тогда оставь всё как есть в схеме. Просто пример кода у тебя не очень соответствует действительности. В том коде что ты показал указана подтяжка к земле и прерывание на фронт. Когда у тебя ровным счётом всё наоборот
Поправил и запушил. https://github.com/vanohaker/freertos-isr-test/blob/main/main/main.cpp в целом ничего не поменялось кроме того что при нажатии теперь так I (751) main_task: Calling app_main() I (751) gpio: GPIO[14]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:2 I (761) main_task: Returned from app_main() I (3881) isr_task: GPIO[14] intr, val: 0 I (3881) isr_task: GPIO[14] intr, val: 0 I (3881) isr_task: GPIO[14] intr, val: 0 I (3881) isr_task: GPIO[14] intr, val: 0 I (3881) isr_task: GPIO[14] intr, val: 0 I (4081) isr_task: GPIO[14] intr, val: 1 I (4081) isr_task: GPIO[14] intr, val: 1 I (4081) isr_task: GPIO[14] intr, val: 1 I (4081) isr_task: GPIO[14] intr, val: 1 I (4081) isr_task: GPIO[14] intr, val: 1
ㅤ
Если система будет занята у тебя левел уже 100 раз поменяется
Ivan
Почему ты считываешь gpio_get_level в таске, а не передаешь сообщением в очередь ?
Из оф примера брал код https://github.com/espressif/esp-idf/blob/master/examples/peripherals/gpio/generic_gpio/main/gpio_example_main.c
Max
Polverine – A compact, mikroBUS-compatible environmental sensing platform with PM 2.5 and gas sensors (Crowdfunding) Polverine is a mikroBUS-compatible environmental sensing platform featuring a BMV080 PM2.5 sensor and a BME690 gas sensor, plus an Espressif ESP32-S3-MINI-1 module to add Wi-Fi 4 and Bluetooth 5 connectivity. The onboard BMV080 sensor is described as the “world’s smallest PM2.5 sensor” at 4.2 x 3.5 x 3mm. The PM2.5 particulate matter sensor is complemented… https://www.cnx-software.com/2025/02/03/polverine-compact-mikrobus-compatible-environment-sensing-platform-with-pm-25-and-gas-sensors/
Ivan
Если система будет занята у тебя левел уже 100 раз поменяется
🤔 хмм. то-есть надо считывать состояние в прерывании и отправлять в таксу?
ㅤ
Из оф примера брал код https://github.com/espressif/esp-idf/blob/master/examples/peripherals/gpio/generic_gpio/main/gpio_example_main.c
Я рад за них. Но не понятно почему они считывают состояние Пина после отправки события что пин нажат?
ㅤ
Получил, считал и отправил
ㅤ
А если у тебя обрабатываются сотни тасков в секунду с делеем. То что? Странное решение
ㅤ
Но 6 нажатий че то впечатление что дебанс у тебя не работает правильно
Ivan
Но 6 нажатий че то впечатление что дебанс у тебя не работает правильно
Долго флешку искал в FAT32 чтобы скрин сделать. Это 14 нога контроллера. Не видно чтобы дребезг был.