Клеточный автомат «Жизнь» Конвея на Arduino Nano с OLED 128x64
Компоненты и материалы
| Беспаечная макетная плата (половинка) | 1 |
| OLED 128x64 (I2C) | 1 |
| Перемычки | 4 |
| Arduino Nano R3 | 1 |
О проекте
Оригинал: runtimeprojects.com
Проект использует I2C OLED 128×64 для отображения клеточного автомата на Arduino Nano.
Необходимо
- 2× маленькие макетные платы (или 1 стандартная)
- Arduino Nano (подойдёт и Uno)
- OLED I2C 128×64
- 4 перемычки
Предварительные знания
Предполагается, что вы знаете, что такое Arduino, умеете пользоваться IDE и загружать скетчи. Базовые навыки программирования (желательно C) также приветствуются.
Теория: Клеточный автомат «Жизнь»
Сетка клеток, каждая в одном из двух состояний: жива (1) или мертва (0). Два правила Джона Конвея:
- Рождение: Мёртвая клетка с ровно 3 живыми соседями становится живой.
- Выживание: Живая клетка с 2 или 3 живыми соседями остаётся живой, иначе умирает.
Подробнее — Википедия: Жизнь (игра).
Схема подключения
Подключите Arduino и OLED к макетной плате:
- Arduino — OLED
- 3.3V — VCC (проверьте требования вашего OLED к напряжению!)
- GND — GND
- A4 — SDA
- A5 — SCL
Две макетки соединил зад к заду — получился мини-телевизор.


Программирование
Для работы с OLED используем две библиотеки Adafruit:
- Adafruit GFX — графика и текст: GitHub
- Adafruit SSD1306 — драйвер для SSD1306 128×32 и 128×64: GitHub
Скетч на GitHub: klauscam/Arduino-Cellular-Automata
Важные замечания
Строка 51: display.begin(SSD1306_SWITCHCAPVCC, 0x3C); — адрес 0x3C может отличаться. Подбирайте экспериментально.
Горизонтальные полосы на фото — артефакт частоты обновления OLED и камеры.
Код
Библиотеки (GitHub)
Производственный процесс
- Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
- Создание анимации и игр на LCD 16×2 с Arduino UNO
- Умный вольтметр на Arduino и смартфоне — простое DIY-проект
- Pixie: DIY-наручные часы на Arduino Pro Mini и NeoPixel — стильный светодиодный тахометр времени
- Управление Arduino Uno из Python 3: команды через последовательный порт и демонстрация с LED
- Высокоскоростной тахометр на Arduino: новый алгоритм измерения RPM до 2 знаков после запятой
- eDOT: точные Arduino-часы и метеостанция с встроенным ИК-пультом
- Сборка компактного FM-радио на Arduino Nano и RDA5807M
- Система учёта рабочего времени на RFID, Arduino и Google Таблицах
- Продвинутая система обнаружения падений: Arduino + Windows IoT + Azure Cloud