Как придумать задание
Инструкция для преподавателя: из чего состоит задание для лаборатории, готовый пример, промпты для нейросети и что означают отказы проверки.
Как придумать задание
Задание для лаборатории может сделать любой преподаватель — сам или с помощью нейросети. Это не программирование: вы описываете схему с неисправностью, а ученик её чинит. Сайт проверит задание за вас и не даст отправить сломанное.
Как это работает
- Вы описываете задание — это один объект JSON.
- Нажимаете «Проверить». Прямо в браузере собирается схема, запускается эталонный скетч и проверяется, что задача вообще решается, а спрятанные дефекты и правда ломают её и находятся приборами.
- Отправляете. Задание сразу работает у ваших классов — занятие можно вести уже сегодня.
- Владелец сайта смотрит его и либо публикует в общий каталог, либо возвращает с замечанием. Вернули — поправьте и отправьте снова.
Присылают только ОПИСАНИЕ задачи. Никакого кода сайт от вас не принимает и не исполняет: поэтому песочница открыта всем преподавателям, а не избранным.
Из чего состоит задание
| Поле | Что это |
|---|---|
| id | короткое имя латиницей, для себя |
| title | название, которое увидит ученик |
| parts | детали схемы: резисторы, светодиоды, кнопки, земля |
| wires | провода: какой вывод с каким соединён |
| sketch | ИСПРАВНЫЙ скетч — эталон, по которому видно, что задача решается |
| channels | что проверяем: вывод платы и светодиод, который он зажигает |
| faults | что сломано в схеме, которую увидит ученик |
Две вещи, на которых спотыкаются чаще всего:
Плату в parts не перечисляют. Она добавляется сама и называется arduino. В проводах её выводы пишут именами, как на самой плате: arduino:D13, arduino:A0, arduino:GND, arduino:5V.
Скетч в задании — исправный. Это не ошибка: по нему движок проверяет, что задача в принципе решается. Ломает схему поле faults, и ученик получит уже сломанную.
Готовый пример
Светофор из трёх светодиодов, у одного оборван резистор. Скопируйте, вставьте в форму и нажмите «Проверить» — это задание проходит все проверки.
{
"id": "traffic-demo",
"title": "Светофор не переключается",
"parts": [
{ "id": "r1", "type": "resistor", "params": { "ohms": 220 } },
{ "id": "led1", "type": "led" },
{ "id": "r2", "type": "resistor", "params": { "ohms": 220 } },
{ "id": "led2", "type": "led" },
{ "id": "r3", "type": "resistor", "params": { "ohms": 220 } },
{ "id": "led3", "type": "led" },
{ "id": "g", "type": "gnd" }
],
"wires": [
{ "a": "arduino:D13", "b": "r1:0" }, { "a": "r1:1", "b": "led1:0" }, { "a": "led1:1", "b": "g:0" },
{ "a": "arduino:D12", "b": "r2:0" }, { "a": "r2:1", "b": "led2:0" }, { "a": "led2:1", "b": "g:0" },
{ "a": "arduino:D11", "b": "r3:0" }, { "a": "r3:1", "b": "led3:0" }, { "a": "led3:1", "b": "g:0" }
],
"sketch": "int red = 13;\nint yellow = 12;\nint green = 11;\n\nvoid setup() {\n pinMode(red, OUTPUT);\n pinMode(yellow, OUTPUT);\n pinMode(green, OUTPUT);\n}\n\nvoid loop() {\n digitalWrite(red, HIGH); digitalWrite(yellow, LOW); digitalWrite(green, LOW);\n delay(100);\n digitalWrite(red, LOW); digitalWrite(yellow, HIGH); digitalWrite(green, LOW);\n delay(100);\n digitalWrite(red, LOW); digitalWrite(yellow, LOW); digitalWrite(green, HIGH);\n delay(100);\n}\n",
"channels": [
{ "pin": 13, "ledId": "led1", "name": "D13 · красный", "color": "#e0563b" },
{ "pin": 12, "ledId": "led2", "name": "D12 · жёлтый", "color": "#ffd866" },
{ "pin": 11, "ledId": "led3", "name": "D11 · зелёный", "color": "#4a9d5f" }
],
"faults": [ { "target": "r2", "kind": "open" } ]
}
Что проверяет движок
Четыре вещи, и все — прогоном настоящей схемы, а не по формальным признакам:
- скетч работает — компилируется и не виснет;
- задача решается — исправная схема с этим скетчем зажигает и гасит каждый канал;
- дефект что-то ломает — с ним хотя бы один канал перестаёт работать;
- дефект видно приборами — мультиметр в какой-то точке показывает не то, что на исправной схеме. Иначе ребёнок не сможет его найти.
Отказ приходит человеческим текстом: «дефект не обнаружить приборами», «исправная схема со своим же скетчем не заработала». Это и есть подсказка, что чинить.
Промпт для нейросети
Вставьте это в любую нейросеть, поменяв две последние строки под свою тему.
Придумай учебное задание на поиск неисправности для симулятора Arduino UNO.
Ответь ОДНИМ объектом JSON, без пояснений и без markdown вокруг него.
Формат:
{
"id": "короткое-имя-латиницей",
"title": "Название для ученика",
"parts": [ { "id": "r1", "type": "resistor", "params": { "ohms": 220 } }, ... ],
"wires": [ { "a": "arduino:D13", "b": "r1:0" }, ... ],
"sketch": "исправный скетч Arduino целиком, одной строкой с \n",
"channels": [ { "pin": 13, "ledId": "led1", "name": "D13 · красный", "color": "#e0563b" }, ... ],
"faults": [ { "target": "r1", "kind": "open" } ]
}
Правила, которые нельзя нарушать:
1. Плату в parts НЕ перечисляй: она добавляется сама и называется "arduino".
Её выводы в проводах пиши именами: arduino:D13, arduino:A0, arduino:GND, arduino:5V.
2. Выводы остальных деталей нумеруются с нуля: "r1:0", "led1:1".
3. Каждый светодиод подключай к выводу платы ЧЕРЕЗ резистор 150–470 Ом,
вторым концом — на землю (деталь типа "gnd").
4. Каналов от 2 до 4. Канал — это пара «вывод платы + светодиод, который он зажигает».
5. Скетч обязан в цикле и ЗАЖИГАТЬ, и ГАСИТЬ каждый канал: только digitalWrite,
pinMode и delay, задержки 50–200 мс, без Serial и без бесконечных ожиданий.
6. faults — от 1 до 3 штук. kind: "open" (обрыв), "short" (замыкание),
"reversed" (деталь наоборот), "dead-pin" (мёртвый вывод).
Дефект должен ЛОМАТЬ хотя бы один канал и быть заметен мультиметром.
7. Дефект НЕ ставь на плату (arduino): такой не найти приборами.
Тема задания: СВЕТОФОР НА ТРЁХ СВЕТОДИОДАХ.
Сложность: средняя.
Ответ целиком вставьте в поле «Описание задачи» и нажмите «Проверить».
Если проверка не прошла
Не переписывайте руками — покажите нейросети причину отказа. Обычно хватает одного круга.
Это описание задания не прошло проверку симулятора.
Причина отказа:
<<вставьте сюда текст, который показала кнопка «Проверить»>>
Исправь JSON так, чтобы причина ушла, и верни ЕГО ЦЕЛИКОМ — одним объектом
JSON, без пояснений. Ничего лишнего не добавляй и правила из прошлого
сообщения не нарушай.
Текущий JSON:
<<вставьте сюда своё описание задания>>
Сколько звёзд поставить
Сложность — вещь сравнительная, поэтому смотрите не на себя, а на детей.
| Звёзды | Кому |
|---|---|
| ★ | первое занятие: один канал, один явный обрыв |
| ★★ | два-три канала, дефект находится прозвонкой |
| ★★★ | нужно рассуждать, где мерить; дефект один, но неочевидный |
| ★★★★ | несколько дефектов или дефект, который виден только под нагрузкой |
| ★★★★★ | для тех, кто прошёл курс: сочетание дефектов, ложные следы |
Владелец сайта может звёзды поправить, когда будет публиковать: он видит весь каталог и ровняет сложность по нему.
Что дальше
- Песочница — прислать задание и посмотреть чужие.
- Поиск неисправностей — урок про то, как дети будут их искать.
- Мультиметр — какими приборами они это делают.