Интерпретатор Brainfuck на Arduino

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

image

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

1. Arduino Pro mini;
2. LCD 16x2 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, её можно будет редактировать (набранная программа заменится на загруженную) и пересохранить или выполнить.

image

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

image
Support the author
Share post

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 10

    0
    За что вы так сим-карту?
      0
      >У меня всё работает от аккумулятора 18650, хотя ардуина пятивольтовая.

      ATmega32U4 работает в диапазоне напряжения питания 2.7-5.5 V. Линейный регулятор MIC5219 допускает минимальное входное напрядение 2.5 V при падении порядка 350 mV.
      Таким образом, теоретически минимальное напряжение до которого может разряжаться аккумулятор может быть 2.7 + 0.35 =~ 3 V. Следует учесть, что что при минимальном напряжении 2.7 V тактовая частота на которой работает ATmega не должна превышать 8 Mhz, поэтому имеет смысл сразу установить ее прошивкой fuse-оф. И еще, на плате ардуино должна быть перемычка SJ1 позволяющая запитать в обход регулятора, что имеет смысла сделать для исключения потерь и увеличения продолжительности работы.
        0
        А причём ATmega32U4 к Arduino Pro mini? Хотя всё то же касается и ATmega328. Ну и перемычки на Pro mini нет, но вывод питания напрямую есть.
          0
          Я смотрел схему Pro micro, детали могут отличаться но суть та-же.
            0
            Pro micro- это вообще отдельная ветвь эволюции, у неё куча отличий от Pro mini, главное из которых- наличие USB интерфейса. Плюс куча плюшек, но и цена в три раза больше (
        0
        Коробочка крутая, но скотча маловато :)
          0
          Скотч вместо синей изоленты. Как так можно!
          0
          Я очень-очень давно хочу сделать себе «мини-компьютер» с кучей эзотерических языков. Все упирается в то, что не могу найти нормальный дисплей (хотя бы символьный, на 10 строк). Хз, может не там ищу, конечно. Если кто-то посоветует такой дисплей для ардуинки, буду благодарен.
            0
            Любой 12864 дисплей, скажем, с ST7595? Продаются много где, поддерживаются u8g. Если разрешение мало — экраны на ILI9341, единственное, графический буфер придётся хранить с помощью магии (частичной перерисовки) — у *ino слишком мало ОЗУ.
            0
            Эх, а я надеялся увидеть программирование под ардуино на brainfuck'е.

            Only users with full accounts can post comments. Log in, please.