[Из песочницы] Интерпретатор Brainfuck на Arduino

Скорее всего, о языке Brainfuck слышали многие, кто изучал программирование. Из этих многих, некоторые реализовывали интерпретатор этого языка. Я решил собрать интерпретатор на базе Arduino, чтобы можно было таскать его с собой и набивать в дороге простейшие программки. Постой, скажете вы, но на смартфонах давно есть интерпретаторы на любой вкус, на кой нужно таскать с собой такую коробку? Because it’s fucking awesome!


Что мне понадобилось:

1. Arduino Pro mini;
2. LCD 16×2 i2c;
3. Четыре кнопки;
4. Аккумулятор 18650;
5. Выключатель;
6. Провода;
7. Макетная плата, на чём всё собрать;
8. Коробка для корпуса.

Собираем всё вместе. Кнопки вешаем на пины 2, 3, 4, 5. Экран подключаем к A4 (SDA), A5 (SCL). Для кнопок я не использую подтягивающие резисторы (использую внутренние), может это нехорошо, но деталек меньше, а для меня это важнее. Как программировать pro mini читайте в интернете. Ничего сложного. Весь код скетча лежит на гитхабе.

Несколько моментов. Да, обработка нажатия кнопок с учётом дребезга контактов, возможно, не самая удачная, тем более, что используются «магические числа» — короче мрак. В программе есть пять режимов:

0 — меню (по-умолчанию), для отображения информации о других режимах и перехода в них;
1 — редактирование;
2 — исполнение;
3 — сохранение в EEPROM;
4 — загрузка из EEPROM.

При загрузке программы из EEPROM, её можно будет редактировать (набранная программа заменится на загруженную) и пересохранить или выполнить.

У меня всё работает от аккумулятора 18650, хотя ардуина пятивольтовая. Удачи!