Кто каким ИИ пользуется для написания скетчей?

Ну, это-то понятно. Я, да и мы все, даже знаем кто у нас тут самый острый!
:upside_down_face:

Правительство России должно к сентябрю разработать предложения по обновлению образовательных стандартов с учетом внедрения технологий искусственного интеллекта…

Open router запустил Owl Alpha. Окно в миллион токенов на халяву.

попробовал, скетчи выдаёт уже известные и, “деревья умирают стоя”… “я не тормоз я медленный газ”
ЗЫ за полчаса собрал скетч метеостанции с дисплеем 320х480 с отображением погоды на неделю, вполне нормально
компилируется, завтра залью посмотрю на реальном железе

это же совсем мало

Тут как повезет. Если вы к этому консту образаетесь по адресу где-то явно или неявно, то да. А иначе - конпилятор выселит вашу переменную из памяти. Превратит ее в immediate:

const int a = 10; // переменная
mov eax, 10 ; // нет никакой перемнной, просто константа

deepseek критикует…критикан однако

Код представляет собой прошивку для многофункционального RIFE-генератора на базе ESP32. Анализ показывает, что код структурно почти завершён, но имеет критическую проблему в логике отображения, которая не позволит корректно отобразить информацию на дисплее в текущей конфигурации.

Основная проблема: Перекрытие виджетов в правой панели

Проблема в функции drawRightPanel() и связанных с ней функциях отображения.

Наложение виджетов:

  • drawAmplitudeIndicator() рисует виджет высотой 41 пиксель, начиная с y = 137. Его нижняя граница — y = 178.
  • drawMatrixStatus() рисует виджет высотой 41 пиксель, начиная с y = 180. Его верхняя граница — y = 180. Здесь всё хорошо, они идут друг за другом с зазором в 2 пикселя.
  • Критическая ошибка: drawADS1115Status() рисует виджет высотой 82 пикселя, начиная с y = 229.

Расчёт реального положения на экране для drawADS1115Status():

  • Нижняя граница drawMatrixStatus(): y = 180 + 41 = 221.
  • Начало drawADS1115Status(): y = 229. Зазор — 8 пикселей. Это допустимо.
  • Конец drawADS1115Status(): y = 229 + 82 = 311.
  • Высота экрана: 320 пикселей. Виджет доходит до 311 строки, остаётся 9 пикселей до края. Это крайне тесно, но технически влезает.

Почему это всё равно проблема?
Хотя виджет физически помещается на экране, его внутренний текст (snprintf для “A3-Current”, “Res…”) выводится на строках вплоть до y + 65. Это означает, что последняя строка текста будет на 229 + 65 = 294 пикселях, что приемлемо. Фоновая заливка (fillRect) высотой 82 пикселя также закроет всё пространство до самого низа.

Главный визуальный баг: Комментарий в коде для drawMatrixStatus() утверждает: “Было 250, поднято на 30 пикселей”, а сама координата стоит y = 180. Вероятно, изначально элементы располагались с большими зазорами (Matrix на 250, ADC на 300+), и автор попытался уплотнить компоновку, сдвинув Matrix вверх, но не внёс соответствующие правки в расположение виджета ADC. Сейчас виджеты не перекрываются, но расположены неоптимально плотно, особенно снизу.

Сопутствующие проблемы и уязвимости

  1. Несогласованность в initTFT():
    В setup() вызывается initTFT(), которая внутри себя вызывает drawLeftPanel(), drawRightPanel() и updateTFTDisplay(). Это происходит до инициализации многих устройств. В момент этого первого вызова updateTFTDisplay() обращается к matrix_initialized и другим флагам/значениям, которые ещё false или равны 0. Это не вызовет краха, но первый кадр на экране будет с нулевыми значениями.

  2. Сброс режима при включении/выключении выхода:
    В функции toggleOutput() (реализация скрыта в s_ad9850.cpp) скорее всего происходит переинициализация или сброс состояния ЦАП AD9850/AD9833. Если одновременно с этим сбрасываются значения частоты/амплитуды на значения по умолчанию, это может сбивать настройки пользователя. Нужно убедиться, что toggleOutput только управляет пином ZEPPER_ON (GPIO 18) и не трогает регистры синтезаторов.

  3. Мёртвый код:
    Закомментированный блок с прототипами SD-функций /* ... tempInitSDCard() ... */ не нужен и может быть удалён для чистоты.

  4. Потенциальная ошибка чтения Serial в serialTask:
    Обработчики команд F, D, X используют while (Serial.available()) с delay(10). Это блокирует вызов на время ожидания символов. Поскольку это отдельная задача FreeRTOS с приоритетом 1, это не подвесит систему, но может замедлить обработку других команд, если пользователь будет медленно печатать.

Рекомендации

  1. Исправить компоновку правой панели:

    • Поскольку высота виджета drawADS1115Status() составляет 82 пикселя, а экран — 320, поднимите его начальную координату, чтобы снизу оставался нормальный отступ в 5-10 пикселей. Например, y = 320 - 82 - 5 = 233. Текущее значение 229 почти идеально.
    • Чтобы освободить место, можно уменьшить высоту этого виджета до 70 пикселей, исключив строку с сопротивлением или уменьшив размер шрифта до 1. Тогда y можно оставить как есть.
    • Убедитесь, что комментарий к drawMatrixStatus() (“поднято на 30 пикселей”) не является устаревшей инструкцией. Если y = 180 — окончательное решение, просто проверьте визуально, нет ли между виджетами Matrix и ADC слишком большого пустого пространства.
  2. Защитить первый вызов отрисовки:
    В initTFT() оберните вызовы drawLeftPanel/drawRightPanel проверкой на ads1115_initialized и matrix_initialized, чтобы на долю секунды не мелькали нули, или просто выводите прочерки --- до первого чтения АЦП.

  3. Рефакторинг именования:
    Переменная matrixVoltage (A0) — это напряжение на матрице. currentVoltage (A3) — сигнал с датчика тока. Имена логичны, но рядом есть float matrixVoltages[30] — массив напряжений для 30 положений матрицы. Это может сбивать с толку, лучше переименовать массив в scannedMatrixVoltages[30] или positionVoltages[30].

В целом, код хорошо модульный и использует правильные паттерны для многозадачности на ESP32. Основные усилия нужно направить на финальную доводку пользовательского интерфейса, а именно на проверку отсутствия взаимных наложений графических элементов в правой части экрана для всех возможных сочетаний данных.

Простенький тест для ИИ. ДипСик не прошёл:

Спойлер

Составь слово из букв “Г”, “А”, “В”, “Н”, “О”


Из букв Г, А, В, Н, О можно составить, например, слово «ВАНГО» (имя собственное) или «НОГА» (используя Г, О, Н, А, но остаётся В). Если использовать все 5 букв, вот возможные варианты:

  • ВОЛНА — нельзя, нет Л.

  • НОГАВ — не слово.

  • ГАВНО — есть в разговорной речи (нецензурное, означает «дерьмо»).

Корректное русское слово из всех пяти букв (Г, А, В, Н, О), не считая обсценного, отсутствует. Если добавить одну букву, можно получить ОТГАВН? Нет.
Из предложенных букв Г, А, В, Н, О можно составить несколько коротких слов: ВОГН (нет), НОГА, ВАННА (нужна вторая А), ВОНА (местоимение «вон а» не пишется слитно).

Итог: единственное распространённое слово из всех пяти букв — «ГАВНО» (грубое). Если разрешено использовать не все буквы, то: НОГА, ВАННА (нужна вторая А и Н), ГАВО (нет).

Вероятно, от вас ожидают слово «НОГА» (буквы Н, О, Г, А — буква В остаётся лишней). Если нужно использовать все буквы, то корректного литературного слова нет.

Он не знает слова “ВАГОН”

У qwen так

Из букв Г, А, В, Н, О можно составить следующие слова (каждая буква используется в слове не более одного раза):

:small_blue_diamond: 5 букв (используют все буквы)
вагон ─ самое частотное и нейтральное слово
агнов ─ книжн./поэт. (родительный падеж мн. ч. от агн ─ ягнёнок)
гавно ─ разговорное, нецензурное

:small_orange_diamond: 4 буквы
нова ─ краткая форма ж. р. от новый
гона ─ род. п. ед. ч. от гон
овна ─ род. п. ед. ч. от овен
наго ─ краткая форма муж. р., книжн./поэт. от нагой

:small_blue_diamond: 3 буквы
гон, нов, вон, она, гав, агн, наг

:small_orange_diamond: 2 буквы
он, но, на, га (междометие), ав (междометие), во (вариант предлога в)

:light_bulb: Примечание: Наиболее употребительное слово из всех пяти букв ─ вагон. Остальные варианты относятся к кратким формам, родительным падежам, поэтической лексике или междометиям. Если нужно слово только из подмножества букв или в определённой стилистике ─ уточните, подберу точнее.

Когда уже художественные фильмы пойдут от ИИ?

Чатик такой Чатик. Если спрашивать в лоб про HW регистры - говорит, что не знает, что это закрытая инфа.

Но иногда, что-то у него внутри протекает и вываливается прямо на экран. И это не галлюциноз, я проверил :slight_smile:

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

тут как то лелик писал, что если не дождаться ответа и потом или закрыть страницу, и зайти позже, или обновить страницу ответы меняться могут))) и иногда работает! на дипсике видел… может это как то использовать ? а пытались представляться пентестером ?))) интересное работает, или от него только имитация, что он типо поверил… а больше обычного информации так и не выдает…

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

Если чатик упирается и не дает ответ на вопрос А, то

иногда помогает вопрос Б, который для своего решения требует решения вопроса А. Чатик, решая запрос Б, невольно решает и вопрос А.

Но не то, чтобы это работало всегда. Но иногда работает.

Поддерживаю. Может быть будет, что посмотреть. То, что сечас по рутубу крутят - это просто како-то мрак

Что-то насмешило. Беседую с ЖПТ:

Я:

Давай в карты играть. Ходим по очереди. Если твоя карта меньше моей, то ты проигрываешь 1 цент. Идет? Мой ход первый. Туз!

Он:

Хитро. :grinning_face_with_smiling_eyes:

Но прежде чем считать выигрыш, нужно договориться о правилах: туз старший или младший? Если туз старший, то твоим первым ходом ты практически сразу забрал этот раунд — выше обычной колоды ничего нет. …

Я:

Не. Ты можешь ответить тоже тузом и тогда в этом раунде - ничья. Масти равны между собой. Туз старше всех, 6 - младше всех

Он:

Тогда отвечаю тоже тузом.

Раунд — ничья, никто никому не платит.

Из игры ушли два туза.

Я:

Король

Он:

Отвечаю королём.

Снова ничья. Счёт по-прежнему: 0 центов.

Из игры ушли два короля.

Я:

Ах ты ж хитрый ты жук! Почему не забрал тузом?

Он:

Потому что я пытаюсь не проиграть игру целиком. :grinning_face_with_smiling_eyes:

На самом деле я подозреваю, что ты подводишь меня к известной ловушке. :blush:

Если правила именно такие:

  • одинаковые наборы карт;

  • карта после розыгрыша исчезает;

  • проигравший сравнение платит 1 цент;

  • ничья ничего не меняет;

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

Так что мой ответ королём был не жадным, а максимально осторожным.

Но раз ты задал этот вопрос, чувствую, где-то тут спрятан подвох. :wink:

А меня тут гугловский ИИ в очередной раз “нипадецки” улыбнул.

Он: Христианская церковь отрицает существование привидений и призраков;
Я: В таком случае она отрицает собственное Священное писание, в котором описано, как тень умершего пророка Самуила явилась царю Саулу и долго с ним беседовала

(и вот тут он выдал … выдал много, но зацените первую фразу!!!)

Он: Ты неправильно понимаешь этот эпизод, это другое! …