Ir para conteúdo
3DFinder
Entrar

Você está no 3DFinder

Buscamos em Thingiverse, MakerWorld e Printables ao mesmo tempo para te dar o melhor de cada uma.

Buscar mais como este
Modelo 3D Arduino Stream deck por filip_eckstein no MakerWorld

Descrição

Homemade stream deck made with arduino pro micro and some mechanical switches and one poteciometer.
And of course with Bambu 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 Bambulab :)

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);

}

}

}

MakerWorld

Arduino Stream deck

Publicado em 12 de nov de 2025

142
Curtidas
88
Downloads
324
Coleções
10
Impressões
Categoria Electronics
Tags
Arduino PC - usb volume - switch carbon DIY project electronics Hub
Licença Standard Digital File License
Ver no MakerWorld (abre em nova aba)

Gostou deste modelo? Crie uma conta grátis para salvar seus favoritos e voltar a eles depois.

Criar conta