Установка grbl 1.1 на Arduino uno. Основы работы в программе LaserGRBL.
Продолжаем разбираться, как можно сделать своими руками лазерный гравер из подручных средств. В предыдущей статье рассмотрели электронику лазерного гравера, и научились проверять и настраивать параметры для стабильной работы станка. Сегодня в статье рассмотрим программную часть: как установить и настроить прошивку grbl 1.1 на Arduino uno. А также рассмотрим основы работы с управляющей программой LaserGRBL.
Комплектующие
- Arduino Uno — https://bit.ly/2P3rCI5
- драйвер моторов L298N — https://bit.ly/3dvbDMg
- Bluetooth модуль HC-06 или HC-05 или подобный — https://bit.ly/3x4nhFX
- моторы постоянного тока с редуктором и с колёсами — 4 шт — https://bit.ly/2P4e9Qr
- провода папа-папа, мама-мама, папа-мама 10-30 см — https://bit.ly/3n3z0jl
- аккумулятор 9В, я использовал с разъёмом micro-USB для зарядки — https://bit.ly/2QeFbF6
- зажим для аккумулятора 9В — https://bit.ly/32rmwZi
- тумблер — 1 шт — https://bit.ly/3artZfr
Для изготовления рамы машинки можно использовать разнообразные материалы:
- листовой лёгкий материал, который легко обрабатывать — оргстекло, фанера, текстолит, оргалит и т.п.
- третье колесо, которое будет опорным — оно должно уметь ехать во всех стороны (хорошо подходят мебельные колёсики);
- крепёжные элементы — болты, гайки, шурупы.
Настройка блютуз модуля HC-05 для работы
Подпаиваем провода к пинам блютуза: (картинку с выходами смотреть в описании требуемых деталей)
- 1 — это TX
- 2 — это RX
- 12 — это 3.3V
- 13 — это GND
- 34 — на этот вход тоже кидаем 3,3 V (нужен для перевода модуля в режим настройки с помощью AT команд).
- 1 — TX модуля в 6 пин ардуины. (внимание будет TX в TX это не ошибка!)
- 2 — RX модуля в 7 пин ардуины. (аналогично не ошибка!)
- 12 — и 34 пин к 3,3V ардуины.
- 13 — GND ардуины.
#include
SoftwareSerial BTSerial(6, 7); // TX | RX
void setup()
Serial.begin(9600);
Serial.println(‘Enter AT commands:’);
BTSerial.begin(38400);
>
void loop()
if (BTSerial.available())
Serial.write(BTSerial.read());
if (Serial.available())
BTSerial.write(Serial.read());
>
После успешной загрузки скетча открываем: Сервис->Монитор порта. Далее снизу ставим скорость 9600 бод и NL+CR вместе.
Далее вводим команды по одной и нажимаем [Послать]. После каждого ввода должен быть ответ ok.
AT // (возможно 1 раз вылетит Error, не пугайтесь… это нормально, повторите опять)
AT+NAME=Car //Присваиваем имя модулю Car
AT+ROLE=1 // Переводим модуль в режим Мастер
AT+PSWD=1234 // Ставим пароль 1234 как на OBD ELM327
AT+BIND=AABB,CC,112233 //Прописываем Mac адрес OBD ELM327.
AT+CMODE=1 // Подключение модуля с фиксированным адресом
AT+UART=9600,0,0 // Скорость работы по UART
Заметьте, что mac-адрес вида: «AA:BB:CC:11:22:33» вводится как «AABB,CC,112233». MAC- адрес своего модуля ELM327 можете посмотреть, подключившись для начала на него со своего мобильника. (Стандартные пароли обычно: 1234, 6789, 0000).
Всё, настройка модуля Bluetooth закончена.
Шаг 2: Что такое робот?
Робот – это электромеханическое устройство, которое способно каким-либо образом реагировать на окружающую обстановку и принимать самостоятельные решения или действия, чтобы достичь определенных целей.
Робот состоит из следующих компонентов:
- Структура / Шасси
- Привод / Мотор
- Контроллер
- Вводные устройства / Датчики
- Источник питания
В следующих шагах я опишу каждый из этих компонентов, и вы всё легко поймёте.
ЗАГРУЗКА ПРОШИВКИ
Загружать прошивку желательно до подключения компонентов, чтобы убедиться в том, что плата рабочая. После сборки можно прошить ещё раз, плата должна спокойно прошиться. В проектах с мощными потребителями в цепи питания платы 5V (адресная светодиодная лента, сервоприводы, моторы и проч.) необходимо подать на схему внешнее питание 5V перед подключением Arduino к компьютеру, потому что USB не обеспечит нужный ток, если например лента его потребует. Это может привести к выгоранию защитного диода на плате Arduino. Гайд по скачиванию и загрузке прошивки можно найти под спойлером на следующей строчке.
ИНСТРУКЦИЯ ПО ЗАГРУЗКЕ ПРОШИВКИ
1. Если это ваше первое знакомство с Arduino, внимательно изучите гайд для новичков и установите необходимые для загрузки прошивки программы.
2. Скачайте архив со страницы проекта. Если вы зашли с GitHub – кликните справа вверху Clone or download, затем Download ZIP. Это тот же самый архив!
3. Извлеките архив. Содержимое папки libraries перетащите в пустое место папки с библиотеками Arduino C:/Program Files (x86)/Arduino/libraries/
4. Папку с прошивкой из firmware положите по пути без русских букв . Если в папке с прошивкой несколько файлов – это вкладки, они откроются автоматически.
5. Настройте прошивку (если нужно), выберите свою плату, процессор. Подключите Arduino к компьютеру, выберите её COM порт и нажмите загрузить.
6. При возникновении ошибок или красного текста в логе обратитесь к 5-ому пункту гайда для новичков – “Разбор ошибок загрузки и компиляции“.
руль для компьютера
В этом разделе будет рассказано, как сделать основной модуль руля: настольный кожух, содержащий почти все механические и электрические компоненты руля. электрическая схема будет пояснена в разделе «проводка», здесь же будут охвачены механические детали колеса.
На рисунках: 1 — рулевое колесо; 2 — ступица колеса; 3 — вал (болт 12мм x 180мм); 4 — винт (держит подшипник на валу); 5 — 12мм подшипник в опорном кожухе; 6 — центрирующий механизм; 7 — болт-ограничитель; 8 — шестерни; 9 — 100к линейный потенциометр; 10 — фанерная основа; 11 — ограничитель вращения; 12 — скоба; 13 — резиновый шнур; 14 — угловой кронштейн; 15 — механизм переключения передач.
На рисунках вверху показаны общие планы модуля (без механизма переключения передач) сбоку и в виде сверху. Для придания прочности всей конструкции модуля используется короб со скошенными углами из 12мм фанеры, к которому спереди прикреплен 25мм выступ для крепления к столу. Рулевой вал сделан из обычного крепежного болта длиной 180мм и диаметром 12мм. Болт имеет два 5мм отверстия — одно для болта-ограничителя (7), ограничивающего вращение колеса, и одно для стального пальца механизма центрирования, описанного ниже. Используемые подшипники имеют 12мм внутренний диаметр и прикручены к валу двумя винтами (4). Центрирующий механизм — механизм, который возвращает руль в центральное положение. Он должен работать точно, эффективно, быть простым и компактным. Есть несколько вариантов, здесь будет описан один из них.
Механизм (рис. слева) состоит из двух алюминиевых пластин (2), толщиной 2мм, через которые проходит рулевой вал (5). Эти пластины разделены четырьмя 13мм вкладышами (3). В рулевом валу просверлено 5мм отверстие, в которое вставлен стальной стержень (4). 22мм болты (1) проходят через пластины, вкладыши и отверстия, просверленные в концах стержня, фиксируя все это вместе. Резиновый шнур накручивается между вкладышами на одной стороне, затем по вершине рулевого вала, и, наконец, между вкладышами с другой стороны. натяжение шнура можно менять, чтобы регулировать сопротивление колеса. Чтобы избежать повреждений потенциометра, необходимо сделать ограничитель вращения колеса. Практически все промышленные рули имеют диапазон вращения 270 градусов. Однако здесь будет описан механизм поворота на 350 градусов, уменьшить который будет не проблема. Стальной г-образный кронштейн, длиной 300мм (14) прикрепляется болтами к основе модуля. этот кронштейн служит для нескольких целей:
— является местом крепления резинового шнура центрирующего механизма (два болта m6 по 20мм в каждом конце);
— обеспечивает надежную точку останова вращения колеса;
— усиливает всю конструкцию в момент натяжения шнура.
Болт-ограничитель (7) м5 длиной 25мм вкручивается в вертикальное отверстие в рулевом валу. Непосредственно под валом в кронштейн вкручивается болт 20мм m6 (11). Для уменьшения звука при ударе на болты можно одеть резиновые трубочки. Если нужен меньший угол поворота, тогда в кронштейн надо вкрутить два болта на необходимом расстоянии. Потенциометр крепится к основанию через простой уголок и соединяется с валом. Максимальный угол вращения большинства потенциометров составляет 270 градусов, и если руль разработан для вращения в 350 градусов, то необходим редуктор. Пара шестерен с поломанного принтера подойдут идеально. Нужно только правильно выбрать количество зубов на шестернях, например 26 и 35. В этом случае передаточное число будет 0.75:1 или вращение на 350 градусов руля даст 262 градуса на потенциометре. Если руль будет крутиться в диапазоне 270 градусов, то вал соединяется с потенциометром напрямую.
Fritzing
Fritzing — это аппаратная инициатива с открытым исходным кодом, которая делает электронику доступной в качестве творческого материала для всех, кто интересуется этой темой.
Веб-сайт предоставляет программный инструмент, сообщество и услуги в духе Arduino и обработки, а также создает креативную экосистему, которая позволяет пользователям:
- Документирование своих прототипов
- Делимся прототипами с другими
- Преподавание электроники в классе
- Разработка и изготовление профессиональных печатных плат
С помощью Fritzing вы можете недорого и быстро превратить свою схему в настоящую печатную плату, изготовленную на заказ.
Этот инструмент может выступать в качестве креативной платформы, только если многие пользователи используют его как средство обучения и обмена.
Вы можете узнать огромное количество вещей из множества доступных руководств. Вот некоторые из самых интересных:
- Построение цепи
- Используя Stripboard
- Работа с деталями SMD
- Создание бумажных шаблонов
- Пышные Провода и сгибаемые Ноги
- Проектирование печатной платы
- Одна минута дизайн Щит Arduino
- Двусторонняя маршрутизация
- Изготовление печатной платы
- Пайка SMD деталей
- Создание пользовательских частей
- Прикрепление программного кода.
Также интересно знать, что Fritzing превратился из финансируемого государством исследовательского проекта в некоммерческую организацию.
Это означает, что для обеспечения самостоятельности и продолжения развития Fritzing предлагает несколько услуг, которые включают следующее:
- Fritzing Fab — С Fritzing Fab, сервисом по производству печатных плат, вы можете быстро и недорого превратить свои эскизы в профессиональные печатные платы.
- Семинары — Есть множество мастер- классов по Arduino , Fritzing и всему, что связано с ними, которые предлагаются начинающим и профессионалам.
- Создание деталей — Вы также можете включить свой продукт в Fritzing, а если вы не хотите делать это самостоятельно, вы можете нанять разработчиков для создания высококачественных деталей.
- Продукты — Fritzing создала учебный набор для начинающих и апгрейдов.
Вы можете проверить больше информации на официальном сайте Fritzing .
Подрулевые шифтеры
Для переключения скоростей можно еще сделать подрулевые шифтеры, как на некоторых спортивных автомобилях и в «Формуле-1». Рычаги расположены на задней стороне руля и могут использоваться пальцами, позволяя не терять контакт с коробкой передач при повороте руля. Это устройство поддерживается всеми играми, так как для его работы достаточно двух кнопок.
Слева изображена простая схема, которая показывает основное расположение рычагов управления. Рычаг может быть сделан из дерева, металла, пластмассы, или чего бы то ни было. На конце рычага просверливаются два отверстия для шурупов, на которых он будет держаться. Шурупы должны быть подходящей длины, чтобы они не прижимали слишком сильно и не стесняли движение рычага. Две пружины необходимы для фиксации рычагов в нейтральном положении. Чтобы закрепить кнопки, можно их приклеить к основанию руля в нужном месте.
Выбрав место на задней стороне руля для крепления рычагов, убедитесь, что они не будут мешать управлению. При необходимости можете придумать им свою удобную форму.
Часто задаваемые вопросы (FAQ)
pedalSHIELD Uno совместима со всеми платами Arduino?
Нет, только с Arduino Uno и Genuino Uno.
pedalSHIELD Uno подходит для басистов?
Да, но вам необходимо заменить 2 конденсатора (C1 и C11) с 0,1 мкФ на 0,47 мкФ, чтобы пропускать через схему более низкие частоты.
Могу я включить наушники напрямую в pedalSHIELD Uno?
Нет, pedalSHIELD Uno – это не усилитель. Её необходимо включть в гитарный усилитель или в педаль мультиэффектов (например, Line 6 pods и т.п.).
Вот и всё! Делитесь впечатлениями и результатами сборки!
На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.
В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.
Судя по даташиту вроде можно. Но я не совсем понимаю зачем. Цена вопроса «2 коп».
TL972 работает очень неплохо ( в данной схеме ).
Для проверки 100% поменять можно, но для хорошего звука лучше взять TL972.
Можно ли заменить TL972 на ОУ TS972? Кто-то сталкивался с такой микросхемой?
Интересно. Попробуйте JRC4558 (режимы от 4 В). Все-таки она более «гитарная» что-ли. LM358 как-то больше для микрофонов в предусилителях используется. Если попробуете, отпишите про результат.
Учитывая опыт передовых стран решил все собрать на одной плате. Из за «VGA» монитора в мой корпус не поместились разъемы под Аудио ВХ / ВЫХ. Пришлос проявить «Смекалку». Но в общем получилось так.:
Плата спроектирована под конкретный (мой) прочный силуминовый корпус. Контакты для подключения Аудио коннекторов расположены возле переключателя.
Максимально применил дешевые китайские модули для Arduino.
Спасибо.
Я схему немного доработал.
С эффектами пока провожу бесчеловечные опыт на компьютере.
Пару дней все систематизирую и отправлю на адрес — radioprog@gmail.com
Ок, давайте так и сделаем.
Высылайте оставшиеся материалы, а я всё это оформлю и включу в эту статью.
Я не смогу так же качественно оформить материал как в этой статье. На сегодня я могу предоставить схему, разводку платы (в формате EasyEDA) и код программы. (собственно я уже это сюда и выложил).
Было бы конечно очень здорово чтобы эти результаты можно было включить в данную статью как дополнительный материал или хотя бы убрать мои лишние ответы с промежуточными решениями.
Борис, здравствуйте!
Раз уж ваше развитие этого проекта начинает жить своей жизнью, то не хотите опубликовать его в собранном виде, чтобы ваши дополнения не потерялись с комментариями disqus?
Если интересно, то предлагаю переместить разговор в почту. radioprog@gmail.com
Прграмма опубликованная в стате и та что выложил я — Рабочие на 100% НО.
Прграма неотделима от СХЕМЫ. То есть:
Какая будет реализована СХЕМА, такую нужно и взять ПРГРАММУ.
Нифига не шарю в С++ . Скачать бы все одним скетчем и ссылку на покупкTL972, а то везде 072 предлагают. Может на руках есть у кого. Я из Москвы
Я сделал под заказ педаль для бас гитары.
Собственно говоря применение экрана и органов управления (транскодер) позволяют расширить количество эффектов.
Ограничено:
— временем между опросом АЦП ~10 ms
-объём внутренней памяти Arduino NANO (в данном варианте я использую меньше половины)
Схема 100% рабочая и собирает оцифрованный сигнал вполне прилично.
Теперь вопрос за разработкой ПО. Я в общем не музыкант, так наугад несколько эффектов сварганил. Но пока не проверял (нет инсрумента и времини).
Так что если есть идей реализации варианта эффекта то можно пробовать. Пока не придумал как сделать «Октавер» (думаю).
планируется дальнейшее развитие проекта?
Да, пересылать информацию в рамках данной платформы несколько затруднительно.
Skype — boris_latysh
Как с вами можно связаться по поводу платы?
Готов купить плату, куда вам удобней написать для обсуждения данного вопрсоа?
А на каком сайте заказывать плату и как её туда загрузить (какую папку)?
TL072 минимальное питание +3,5в, -3,5в то есть минимальное общее питание для нее — 7в. TL072 использовать можно, НО нужно будет делать дополнительное питание.
TL972 можно полностью питать 5в, я думаю потому ее и применили. А учитывая что нам нужно зайти в контроллер сигналом амплитудой 0-5в. То в такой ситуации c TL072 будут дополнительные сложности с согласованием сигнала от операционника к входу АЦП контроллера.
Пиши в Личку. Отправлю текст
«Коментарии» не всегда соответствуют коду, так как программа пока в работе.
Я в стендовых условиях все проверил работает отлично. НО . на реальном инструменте пока не тестировал.
P.S. Есть готовая плата под эту схему. Если кому нужно могу продать.
// Based on OpenMusicLabs previous works.
// Цифровой усилитель: нажатие кнопки 1 или кнопки 2 увеличивает или уменьшает громкость.
#include // Подключаем библиотеку iarduino_Encoder_tmr для работы с энкодерами через аппаратный таймер
#include «U8glib.h»
#define FootSwitch 12 // Нажатие «Ножной» кнопки ВКЛ/ВЫКЛ устройсва
#define MasterPin 5 // D5 мастер кнопка переключатель режимов
#define CLKPin 2 // CLK Провод Енкодера
#define DTPin 3 // DT провод Енкодера
iarduino_Encoder_tmr enc(CLKPin, DTPin); // Енкодер
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
// ————- ШИМ —————————————————————
#define PWM_FREQ 0x00FF // установка частоты ШИМ-а (режим Фазовый — 2х8 Бит 31.3 кГц)
#define PWM_MODE 0 // Устанавливает режим коррекции фазы (0) или быстрый режим (1)
#define PWM_QTY 2 // Используем 2 ШИМ-а параллельно 2х8 Бит
// ————- АЦП — ЦАП ———————————————————
int output = 0; // Задаем значение громкости
unsigned int ADC_low, ADC_high; // Младший и Старший байты из АЦП
// ————— Энкодер + кнопка ————————————————-
#define Clk 100 // Колличество повторений между проверками кнопки
int Cirkle = 0; // Перменная Счетчика циклов пропуска
int Master = 0; // перменная выбора режима работы
// ———————————————————————————
int Dist = 8; // Коэффициент для Дистошн
double Dist1 = 0;
// ———————————————————————————
int Over = 8; // Коэффициент для Овердрайва
// ———————————————————————————
int Horus[256]; // Horus эффект
byte x = 0;
byte y = 0; // перменная массива 0 — 256
byte z = 0;
// ———————————————————————————
int t = 30; // Compressor эффект
// ———————————————————————————
int El = 15; // Electro
int con = 0;
int con1 = 0;
void setup()// Serial.begin(9600);
enc.begin(); // Инициируем работу с энкодером
pinMode(FootSwitch, INPUT_PULLUP);
pinMode(MasterPin, INPUT_PULLUP);
//———————-Настройка АЦП — настроен для чтения автоматически. ——————
ADMUX = 0x60; // внутренний ИОН 1.1 В, правое выравнивание, управление по ADC0,
ADCSRA = 0xe5; // включить ADC, автозапуск, 5 — clk 1/32 — ПОДБИРАЕМ
ADCSRB = 0x07; // без мультиплексора, запуска захват таймером Т1
DIDR0 = 0x01; // разрешаем ТОЛЬКО аналоговый вход ADC0
//——————— настройка ШИМ ——————————————————-
TCCR1A = (((PWM_QTY — 1) TCCR1B = ((PWM_MODE TIMSK1 = 0x20;
ICR1H = (PWM_FREQ >> 8);
ICR1L = (PWM_FREQ & 0xff);
DDRB |= ((PWM_QTY sei(); // включить прерывания — на самом деле с arduino необязательно
>
void loop() Cirkle = Cirkle + 1;
while (Cirkle == Clk) if (digitalRead(FootSwitch)==HIGH) switch(Master) case 0:
u8g.firstPage();
do u8g.setFont(u8g_font_helvR18r);
u8g.drawStr( 3, 20, «KL BoosT»);
u8g.drawStr( 18, 50, «CLEAN»);
if (output < -25000) u8g.drawBox(0,56,8,8);
>
if (output > 25000) u8g.drawBox(112,56,8,8);
>
// u8g.drawBox(0, 60, (output/256),4);
> while (u8g.nextPage());
if ((digitalRead(MasterPin)) == LOW ) Master = Master + 1;
delay (500);
>
break;
case 1:
Dist = Dist + enc.read(); // Если энкодер зафиксирует поворот, то значение переменной i изменится:
if ( Dist
if ( Dist >26 ) < Dist = 26; >
u8g.firstPage();
do u8g.setFont(u8g_font_helvR18r);
u8g.drawStr( 3, 20, «KL BoosT»);
u8g.drawStr( 31, 50, «FUZZ»);
u8g.drawBox(0,60,((Dist-10)*9),4);
> while (u8g.nextPage());
if ((digitalRead(MasterPin)) == LOW ) Master = Master + 1;
delay (500);
>
break;
case 2:
Over = Over + enc.read(); // Если энкодер зафиксирует поворот, то значение переменной i изменится:
if ( Over < 0) < Over = 0; >
if ( Over >26 ) < Over = 26; >
u8g.firstPage();
do u8g.setFont(u8g_font_helvR18r);
u8g.drawStr(3, 20, «KL BoosT»);
u8g.drawStr(8, 50, «Overdrive»);
u8g.drawBox(0,60,(Over*5),4);
> while (u8g.nextPage());
if ((digitalRead(MasterPin)) == LOW ) Master = Master + 1;
delay (500);
>
break;
case 3:
y = y + enc.read()*10; // Если энкодер зафиксирует поворот, то значение переменной i изменится:
u8g.firstPage();
do u8g.setFont(u8g_font_helvR18r);
u8g.drawStr(3, 20, «KL BoosT»);
u8g.drawStr(24 , 50, «Chorus»);
u8g.drawBox(0,60,(y/2),4);
> while (u8g.nextPage());
if ((digitalRead(MasterPin)) == LOW ) Master = Master + 1;
delay (500);
>
break;
case 4:
t = t — enc.read(); // Если энкодер зафиксирует поворот, то значение переменной i изменится:
if ( t
if ( t >30 ) < t = 30; >
u8g.firstPage();
do u8g.setFont(u8g_font_helvR18r);
u8g.drawStr(3, 20, «KL BoosT»);
u8g.drawStr( 4, 50, «Compress»);
u8g.drawBox(0, 60, ((30-t)*6),4);
> while (u8g.nextPage());
if ((digitalRead(MasterPin)) == LOW ) Master = Master + 1;
delay (500);
>
break;
case 5:
El = El + enc.read(); // Если энкодер зафиксирует поворот, то значение переменной i изменится:
if ( El < 1 ) < El = 1; >
if ( El > 64 ) < El = 64; >
u8g.firstPage();
do u8g.setFont(u8g_font_helvR18r);
u8g.drawStr(3, 20, «KL BoosT»);
u8g.drawStr( 15, 50, «Electro»);
u8g.drawBox(0, 60, (El*2), 4);
> while (u8g.nextPage());
if ((digitalRead(MasterPin)) == LOW ) Master = Master + 1;
delay (500);
>
break;
>
if (Master > 5 ) <
Master=0;
delay (500);
>
//———————————————————————————————
> else < // устройсво электрически не включено
u8g.firstPage();
do u8g.setFont(u8g_font_helvR18r);
u8g.drawStr( 2, 20, «KL BoosT»);
u8g.drawStr( 42, 64, «OFF»);
> while (u8g.nextPage());
>
Cirkle = 0;
>
>
//************* Обработчик прерывания захвата ввода из АЦП 0 — Timer 1
ISR(TIMER1_CAPT_vect) // Команда обработки прерывания Timer 1
ADC_low = ADCL; // читаем младший байт АЦП прочитан первым ( важно! )
ADC_high = ADCH; // читаем старший байт АЦП прочитан вторым
output = ((ADC_high //——————————————————————————————
switch(Master)case 1: // Distortion эффект ******
if (output > 0) if (output > 24576)
output = (output/10)*Dist; // Все что выше 24576 удваиваем и обрезаем по уровню (65535)
if(output < 0) < output = 32767; >
>
if (output < 0) if (output < -24576)
output = (output/10)*Dist; // Все что ниже -24576 удваиваем и обрезаем по уровню (0)
if(output > 0) < output = -32767; >
>
break;
//——————————————————————————————
case 2: // OverdrivE Эффект ******
if (output > 24576 || output < -24576) if (output > 24576) output = output — ((output — 24576)/8)*Over; // Все что больше 57344 Уменьшаем на Over
>
if (output < -24576) output = output - ((output + 24576)/8)*Over; // Все что меньше 8192 Уменьшаем на Over
>
>
break;
//——————————————————————————————
case 3: // Horus эффект ******
Horus[x] = output; // Все время записываем 256 значений -> Horus[x]
z=x-y;
if (output < Horus[z]) output = Horus[z];
>
x++;
break;
//——————————————————————————————
case 4: // ****** Compress ******
if (output > 512 ) output = output + (24575 — output)/t;
>
if (output < -512 ) output = output - (24575 + output)/t;
>
break;
//——————————————————————————————
case 5: // ****** Electro ******
if (con > El) con1 = output;
con=0;
>elseoutput = con1;
>
con++;
break;
>
//——————————————————————————————
OCR1AL = ((output + 0x8000) >> 8); // старший байт -> OC1A
OCR1BL = output; // младший байт -> OC1B
>