Você está no 3DFinder
Buscamos em Thingiverse, MakerWorld e Printables ao mesmo tempo para te dar o melhor de cada uma.
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);
}
}
}
Gostou deste modelo? Crie uma conta grátis para salvar seus favoritos e voltar a eles depois.
Criar conta