AIR / 328 · ATmega328P
Room Terra / Arduino UNO Mini
Общая экосистема на Arduino UNO Mini. Растения, травоядные и хищники реагируют на показания комнатных датчиков. Плата обновляет мир и обслуживает его сайт, даже когда ни один браузер не подключён.

Arduino UNO Mini
ATmega328P · 16 MHz
2 KiB SRAM · 32 KiB Flash
Комнатные датчики
Данные о температуре, влажности, освещённости, CO₂ и давлении поступают на плату по I²C и PWM.
Мир на плате
Целочисленные расчёты, шаг в 10 секунд и до 128 животных. Работа разбита на небольшие операции, чтобы датчики и HTTP продолжали работать.
Сайт через Ethernet
W5500 обрабатывает TCP. Arduino отправляет сжатые HTML, CSS и JavaScript из флеш-памяти; браузер отображает мир по снимку его состояния объёмом 480 байт.
Правила мира и технические подробности
Растения
Четыре уровня биомассы на клетку. Свет, влажность и температура влияют на рост; травоядные съедают растения, сокращая запас пищи на карте.
Травоядные
Выбирают более безопасные клетки с пищей. Питание восстанавливает энергию, обмен веществ расходует её. Четыре укрытия защищают их от хищников.
Хищники
Когда голодны, охотятся на добычу поблизости. Для размножения нужны энергия, место и достаточно добычи; голод может привести к вымиранию популяции.
Среда и местность
Карта 32 × 32 замкнута по краям: переход через край ведёт на противоположную сторону. Пруд из 24 клеток непроходим и увлажняет берега. Влажность почвы постепенно меняется вслед за влажностью воздуха в комнате; CO₂ и давление тоже влияют на рост. Это игровые правила, а не биологический прогноз.
Ночь определяется датчиком освещённости: 3 минуты при 25 лк или ниже включают ночной режим; 3 минуты при 41 лк или выше возвращают дневной. При показаниях между порогами текущий режим сохраняется.
Общий мир для всех посетителей
Посадка растения стоит 1 единицу запаса, добавление травоядного — 3, хищника — 8. Общий запас для всех — 12 единиц; он пополняется на 1 каждые 10 минут. После успешного действия все ждут 60 секунд до следующего.
Действия проверяются и применяются на границе шагов симуляции; неудачные действия не расходуют запас. Автоматического спасения популяций нет. Мир хранится в оперативной памяти и запускается заново при перезагрузке платы.
Память и передача данных
Растения занимают 256 байт: по 2 бита на клетку. Каждое животное помещается в 16-битную запись. Четыре HTTP-соединения используют общую рабочую область на 512 байт; сжатые файлы интерфейса хранятся в памяти программ.
Публичный сайт подключается напрямую к плате по HTTP через порт 8080. Исходный код, инструкции по сборке и правила симуляции — на GitHub.



