Часть 27: Эмулятор игровой консоли на Arduino (PONG на 2 КБ!)

No Picture

Да, мы можем эмулировать классические игры на Arduino! У нас есть 2 КБ RAM и 16 МГц — этого достаточно для эмуляции простых консолей 70-х годов. Эмулятор PONG:

Читать далее »

Часть 26: Создаем свой язык программирования для Arduino

No Picture

Что, если вы не хотите использовать C++ или ассемблер? Что, если вы хотите создать свой собственный язык, который будет идеально подходить для ваших задач? Мы создадим интерпретатор байт-кода, который будет выполняться на ATmega328P. Архитектура виртуальной машины: Компилятор для нашего языка…

Читать далее »

Добро пожаловать в новую, самую безумную главу ARDUINOHACKS!

No Picture

Сегодня мы переступим грань, за которой обычные хакеры даже не подозревают о существовании возможностей. Мы создадим собственный язык программирования, эмулятор игровой консоли, реализуем генетический алгоритм на 2 КБ RAM и даже подключим OLED-дисплей через один пин. Поехали в самое сердце хакерского безумия!Поехали в…

Читать далее »

Что дальше на ARDUINOHACKS?

No Picture

ARDUINOHACKS — мы не просто используем микроконтроллеры, мы переопределяем их возможности! Продолжение следует… Ваша фантазия — единственный предел! 🚀💡

Читать далее »

Итоговый чек-лист хакера экстра-класса:

No Picture

✔️ Управляет пинами как входом и выходом без pinMode()✔️ Пишет математические функции на ассемблере для скорости✔️ Перехватывает системные прерывания✔️ Создал собственную RTOS для многозадачности✔️ Выполняет БПФ в реальном времени на 8-битном контроллере✔️ Использует ассемблер для оптимизации критических участков

Читать далее »

Часть 25: Процессинг звука — создаем вокодер на Arduino

No Picture

Мы можем анализировать и синтезировать звук в реальном времени, используя БПФ (быстрое преобразование Фурье). Реализация БПФ на 64 точки (ассемблерная оптимизация): Использование в C++ для визуализации звука:

Читать далее »

Часть 24: Создаем свою RTOS на Arduino (Кооперативная многозадачность)

No Picture

Да, у нас всего 2 КБ RAM и 16 МГц, но мы можем создать операционную систему реального времени, которая позволит выполнять несколько задач параллельно! Структура RTOS: Расширенная RTOS с прерываниями (вытесняющая многозадачность):

Читать далее »

Часть 23: Перехват прерываний — создаем свой обработчик

No Picture

Иногда нужно перехватить прерывание, которое уже используется системой (например, прерывание таймера 0 используется для millis()). Мы можем создать свой обработчик, который будет вызываться до стандартного. Техника «векторного перехвата»:

Читать далее »

Часть 22: Ассемблерный математический сопроцессор

No Picture

Arduino использует программную библиотеку для работы с float (числами с плавающей точкой), которая занимает ~4 КБ Flash и выполняется медленно. Мы напишем свои функции на ассемблере для критических вычислений. Умножение двух 16-битных чисел (быстрый алгоритм): Использование в C++:

Читать далее »

Часть 21: Двунаправленные порты — читаем и пишем на одних пинах

No Picture

В реальных проектах часто нужно, чтобы пин работал и как вход, и как выход в разное время. Например, для протокола 1-Wire (DS18B20) или для динамического управления LED-матрицей. Проблема стандартного подхода: pinMode(pin, OUTPUT);digitalWrite(pin, HIGH);// …pinMode(pin, INPUT);int val = digitalRead(pin);…

Читать далее »