DIY Stream/DJ-дека Arduino
Самодельная потоковая дека, сделанная с использованием Arduino Pro Micro, нескольких механических переключателей и одного потенциометра.
И, конечно, с 3D-принтером Prusa :)
Подготовленный Elgato Stream колода разработанных помощников Arduino pro micro и нестандартных механических шпинделей, потенциометра и самоконтроля для 3D-тискарного Prusa :)
В комплект модели входит 12 механических вращающихся потенциометров, а также 10K.
Самостоятельный Arduino для микросхемы доступен на AliExpress примерно за 50 чешских крон.
Выполненную модель можно использовать для PLA или PETG.
Заровень была связана с подложкой из углеродного волокна, которую можно взять с aliexpresu примерно за 220 чешских крон.
Клавишами, дополняющими размер зуба на высоту 0,10 мм и на размер 0,15-0,20 мм, можно установить предпочтительные детали в час тиски.
Я пот��жеба и 4x трубы M3x2 + 1x M3x10
Zezadu je připraveny otvor pro USB C port arduina
Нажмите кнопку потенциометра и цифровой кабель USB C.
Если вы используете код C++ для Arduino, десять зависимостей от этого, чтобы выполнить функцию, вы выбрали вашу потоковую колоду.
Если вы налепили клавиатуру на клавиатуру, вы можете вытащить ее из вашего 2D-каталога, чтобы он был урченым папкой, а не обычным папкой, а затем сломанной изоляцией. (это самая крайняя возможность)
#include
#include
#define MUTE 10
#define ПРЕДЫДУЩИЕ 14
#define PLAY_PAUSE 15
#define ПРОПУСК 16
#определить CTRL_ALT_F 6
#define CTRL_ALT_S 8
#define CTRL_ALT_P 7
#определить CTRL_ALT_C 9
#define КОПИЮ 3
#define ВСТАВКА 4
#define ARROW_LEFT 2
#define ARROW_RIGHT 5
int потенциометрPin = A0; // Контакт потенциометра
ИНТ предыдущийОбъем = -1; // Уложенные предварительные проверки (-1 за инициализацию)
// Настройка
недействительная настройка() {
// Установка контакта для подключения и входа с внутренними подтягивающими резисторами
pinMode (MUTE, INPUT_PULLUP);
pinMode (ПРЕДЫДУЩИЙ, INPUT_PULLUP);
pinMode (PLAY_PAUSE, INPUT_PULLUP);
pinMode (SKIP, INPUT_PULLUP);
pinMode (CTRL_ALT_F, INPUT_PULLUP);
pinMode (CTRL_ALT_S, INPUT_PULLUP);
pinMode (CTRL_ALT_P, INPUT_PULLUP);
pinMode (CTRL_ALT_C, INPUT_PULLUP);
pinMode (КОПИЯ, INPUT_PULLUP);
pinMode (PASTE, INPUT_PULLUP);
pinMode (ARROW_LEFT, INPUT_PULLUP);
pinMode (ARROW_RIGHT, INPUT_PULLUP);
// Инициализация HID для ключей и мультимедиа
Потребитель.begin();
Клавиатура.begin();
}
недействительный цикл() {
// *Тлачитка*
if (digitalRead(MUTE) == НИЗКИЙ) {
Consumer.write(MEDIA_VOLUME_MUTE);
задержка(200); // Мало продлева, аby se příkaz neopakoval příliš rychle
}
if (digitalRead(PREVIOUS) == LOW) {
Consumer.write(MEDIA_PREVIOUS);
задержка(200);
}
если (digitalRead(PLAY_PAUSE) == НИЗКИЙ) {
Consumer.write(MEDIA_PLAY_PAUSE);
задержка(200);
}
если (digitalRead(SKIP) == НИЗКИЙ) {
Consumer.write(MEDIA_NEXT);
задержка(200);
}
// *Комбинация клавиш*
если (digitalRead(CTRL_ALT_F) == НИЗКИЙ) {
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('f');
задержка(200);
Keyboard.releaseAll();
}
если (digitalRead(CTRL_ALT_S) == НИЗКИЙ) {
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('s');
задержка(200);
Keyboard.releaseAll();
}
если (digitalRead(CTRL_ALT_P) == НИЗКИЙ) {
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('p');
задержка(200);
Keyboard.releaseAll();
}
если (digitalRead(CTRL_ALT_C) == НИЗКИЙ) {
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('c');
задержка(200);
Keyboard.releaseAll();
}
если (digitalRead(COPY) == НИЗКИЙ) {
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('c');
задержка(200);
Keyboard.releaseAll();
}
если (digitalRead(PASTE) == НИЗКИЙ) {
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('v');
задержка(200);
Keyboard.releaseAll();
}
если (digitalRead(ARROW_LEFT) == НИЗКИЙ) {
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('y'); // CTRL + Z город шипки долевой
задержка(200);
Keyboard.releaseAll();
}
если (digitalRead(ARROW_RIGHT) == НИЗКИЙ) {
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('z'); // CTRL + Y город Шипки Доправа
задержка(200);
Keyboard.releaseAll();
}
// *Потенциометр*
intpotentiometerValue = AnalogRead(potentiometerPin);
int currentVolume = карта (potentiometerValue, 0, 1023, 0, 100);
если (текущийОбъем!= предыдущийОбъем) {
корректировкаОбъем(предыдущийОбъем, текущийОбъем





























