Часть 27: Эмулятор игровой консоли на Arduino (PONG на 2 КБ!)
Да, мы можем эмулировать классические игры на Arduino! У нас есть 2 КБ RAM и 16 МГц — этого достаточно для эмуляции простых консолей 70-х годов. Эмулятор PONG:
Читать далее »Часть 26: Создаем свой язык программирования для Arduino
Что, если вы не хотите использовать C++ или ассемблер? Что, если вы хотите создать свой собственный язык, который будет идеально подходить для ваших задач? Мы создадим интерпретатор байт-кода, который будет выполняться на ATmega328P. Архитектура виртуальной машины: Компилятор для нашего языка…
Читать далее »Добро пожаловать в новую, самую безумную главу ARDUINOHACKS!
Сегодня мы переступим грань, за которой обычные хакеры даже не подозревают о существовании возможностей. Мы создадим собственный язык программирования, эмулятор игровой консоли, реализуем генетический алгоритм на 2 КБ RAM и даже подключим OLED-дисплей через один пин. Поехали в самое сердце хакерского безумия!Поехали в…
Читать далее »Что дальше на ARDUINOHACKS?
ARDUINOHACKS — мы не просто используем микроконтроллеры, мы переопределяем их возможности! Продолжение следует… Ваша фантазия — единственный предел! 🚀💡
Читать далее »Итоговый чек-лист хакера экстра-класса:
✔️ Управляет пинами как входом и выходом без pinMode()✔️ Пишет математические функции на ассемблере для скорости✔️ Перехватывает системные прерывания✔️ Создал собственную RTOS для многозадачности✔️ Выполняет БПФ в реальном времени на 8-битном контроллере✔️ Использует ассемблер для оптимизации критических участков
Читать далее »Часть 25: Процессинг звука — создаем вокодер на Arduino
Мы можем анализировать и синтезировать звук в реальном времени, используя БПФ (быстрое преобразование Фурье). Реализация БПФ на 64 точки (ассемблерная оптимизация): Использование в C++ для визуализации звука:
Читать далее »Часть 24: Создаем свою RTOS на Arduino (Кооперативная многозадачность)
Да, у нас всего 2 КБ RAM и 16 МГц, но мы можем создать операционную систему реального времени, которая позволит выполнять несколько задач параллельно! Структура RTOS: Расширенная RTOS с прерываниями (вытесняющая многозадачность):
Читать далее »Часть 23: Перехват прерываний — создаем свой обработчик
Иногда нужно перехватить прерывание, которое уже используется системой (например, прерывание таймера 0 используется для millis()). Мы можем создать свой обработчик, который будет вызываться до стандартного. Техника «векторного перехвата»:
Читать далее »Часть 22: Ассемблерный математический сопроцессор
Arduino использует программную библиотеку для работы с float (числами с плавающей точкой), которая занимает ~4 КБ Flash и выполняется медленно. Мы напишем свои функции на ассемблере для критических вычислений. Умножение двух 16-битных чисел (быстрый алгоритм): Использование в C++:
Читать далее »Часть 21: Двунаправленные порты — читаем и пишем на одних пинах
В реальных проектах часто нужно, чтобы пин работал и как вход, и как выход в разное время. Например, для протокола 1-Wire (DS18B20) или для динамического управления LED-матрицей. Проблема стандартного подхода: pinMode(pin, OUTPUT);digitalWrite(pin, HIGH);// …pinMode(pin, INPUT);int val = digitalRead(pin);…
Читать далее »