• Models
  • Contests
  • Slicer
  • Login
  • Start Here
    thingiverse-iconprintables-iconcults3d-iconmakerworld-iconmyminifactory-icon

    3D GO

    3D ModelsContestsCollectionsSaved ModelsOn a mobile device?

3D GO

Privacy Policy
DIY Stream/ DJ deck Arduino 3D Printer File Image 1
DIY Stream/ DJ deck Arduino 3D Printer File Image 2
DIY Stream/ DJ deck Arduino 3D Printer File Thumbnail 1
DIY Stream/ DJ deck Arduino 3D Printer File Thumbnail 2

DIY Stream/ DJ deck Arduino

Filip's projects avatarFilip's projects

March 2, 2025

printables-icon
DescriptionCommentsTags

Description

Homemade stream deck made with arduino pro micro and some mechanical switches and one poteciometer.
And of course with Prusa 3d printer :)

Podomácku vyrobený Elgato Stream deck vyrobený pomocí Arduino pro micro a nějakých mechanických spínačů a potenciometru a samozřejmě pomocí 3D tiskárny Prusa :)

K sestavení modelu je zapotřebí 12 mechanických spínačů a potenciometr, já použil 10K.

Samozřejmě Arduino pro micro ktere seženet na aliexpresu za cca 50 Kč.

A vytištěné přiložené modely, já doporučuju použít PLA nebo PETG.

Zároveň byla využita podložka se vzorem carbon fiber také z aliexpresu za cca 220Kč.

Keycapy doporučuju tisknout na výšku vrstvy 0,10mm a zbytek 0,15- 0,20mm, záleží na preferenci detailu a času tisku.

Je potřeba i 4x šroub M3x2 + 1x M3x10

Zezadu je připravený otvor pro USB C port arduina

Případně ještě knoflík na potenciometr a datový USB C kabel.

A samozřejmě C++ kód pro arduino, ten závisí na tom, co za funkce chcete, aby váš stream deck vykonával.

Já si nálepky na keycapy nechal vyrobit na míru, vy si můžete vytisknout na vaší 2D tiskárně na k tomu určený papír, nebo na obyčejný papír a přelepíte průhlednou izolepou. (to je krajní možnost)

#include <HID-Project.h>

#include <HID-Settings.h>

#define MUTE 10

#define PREVIOUS 14

#define PLAY_PAUSE 15

#define SKIP 16

#define CTRL_ALT_F 6

#define CTRL_ALT_S 8

#define CTRL_ALT_P 7

#define CTRL_ALT_C 9

#define COPY 3

#define PASTE 4

#define ARROW_LEFT 2

#define ARROW_RIGHT 5

int potentiometerPin = A0; // Pin pro potenciometr

int previousVolume = -1; // Uložení předchozí hlasitosti (-1 pro inicializaci)

// Setup

void setup() {

// Nastavení pinu pro tlačítka jako vstupy s interními pull-up rezistory

pinMode(MUTE, INPUT_PULLUP);

pinMode(PREVIOUS, 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(COPY, INPUT_PULLUP);

pinMode(PASTE, INPUT_PULLUP);

pinMode(ARROW_LEFT, INPUT_PULLUP);

pinMode(ARROW_RIGHT, INPUT_PULLUP);

// Inicializace HID pro klávesnici a multimédia

Consumer.begin();

Keyboard.begin();

}

void loop() {

// *Tlačítka*

if (digitalRead(MUTE) == LOW) {

Consumer.write(MEDIA_VOLUME_MUTE);

delay(200); // Malá prodleva, aby se příkaz neopakoval příliš rychle

}

if (digitalRead(PREVIOUS) == LOW) {

Consumer.write(MEDIA_PREVIOUS);

delay(200);

}

if (digitalRead(PLAY_PAUSE) == LOW) {

Consumer.write(MEDIA_PLAY_PAUSE);

delay(200);

}

if (digitalRead(SKIP) == LOW) {

Consumer.write(MEDIA_NEXT);

delay(200);

}

// *Kombinace kláves*

if (digitalRead(CTRL_ALT_F) == LOW) {

Keyboard.press(KEY_LEFT_CTRL);

Keyboard.press('f');

delay(200);

Keyboard.releaseAll();

}

if (digitalRead(CTRL_ALT_S) == LOW) {

Keyboard.press(KEY_LEFT_CTRL);

Keyboard.press('s');

delay(200);

Keyboard.releaseAll();

}

if (digitalRead(CTRL_ALT_P) == LOW) {

Keyboard.press(KEY_LEFT_CTRL);

Keyboard.press('p');

delay(200);

Keyboard.releaseAll();

}

if (digitalRead(CTRL_ALT_C) == LOW) {

Keyboard.press(KEY_LEFT_CTRL);

Keyboard.press('c');

delay(200);

Keyboard.releaseAll();

}

if (digitalRead(COPY) == LOW) {

Keyboard.press(KEY_LEFT_CTRL);

Keyboard.press('c');

delay(200);

Keyboard.releaseAll();

}

if (digitalRead(PASTE) == LOW) {

Keyboard.press(KEY_LEFT_CTRL);

Keyboard.press('v');

delay(200);

Keyboard.releaseAll();

}

if (digitalRead(ARROW_LEFT) == LOW) {

Keyboard.press(KEY_LEFT_CTRL);

Keyboard.press('y'); // CTRL + Z místo šipky doleva

delay(200);

Keyboard.releaseAll();

}

if (digitalRead(ARROW_RIGHT) == LOW) {

Keyboard.press(KEY_LEFT_CTRL);

Keyboard.press('z'); // CTRL + Y místo šipky doprava

delay(200);

Keyboard.releaseAll();

}

// *Potenciometr*

int potentiometerValue = analogRead(potentiometerPin);

int currentVolume = map(potentiometerValue, 0, 1023, 0, 100);

if (currentVolume != previousVolume) {

adjustVolume(previousVolume, currentVolume);

previousVolume = currentVolume;

}

delay(50); // Malá prodleva pro stabilitu

}

// Funkce pro změnu hlasitosti

void adjustVolume(int previous, int current) {

if (current > previous) {

for (int i = previous; i < current; i++) {

Consumer.write(MEDIA_VOLUME_UP);

delay(5);

}

} else if (current < previous) {

for (int i = previous; i > current; i--) {

Consumer.write(MEDIA_VOLUME_DOWN);

delay(5);

}

}

}

License:

Creative Commons — Attribution — Noncommercial — NoDerivatives

Related Models

bakercube preview image

bakercube

iomaa profile image

iomaa

44,463

Book Page Holder V3 preview image

Book Page Holder V3

fifindr profile image

fifindr

3,549

Mini Whistle preview image

Mini Whistle

fifindr profile image

fifindr

3,545

Bottle Opener and Cap GUN! preview image

Bottle Opener and Cap GUN!

3Deddy profile image

3Deddy

44,026

Funnel Tray preview image

Funnel Tray

fifindr profile image

fifindr

3,558

Customizable Spotify Keychain / Tag preview image

Customizable Spotify Keychain / Tag

ewt profile image

ewt

3,077

Mini Tape Gun - Tape Dispenser preview image

Mini Tape Gun - Tape Dispenser

brycelowe profile image

brycelowe

23,764

Drill Paint Mixer preview image

Drill Paint Mixer

fifindr profile image

fifindr

2,506