Você está no 3DFinder
Buscamos em Thingiverse, MakerWorld e Printables ao mesmo tempo para te dar o melhor de cada uma.
Descrição
Mini Stream Deck DIY – Compact, lumineux et abordable !
Ce projet est un mini stream deck entièrement personnalisable pour moins de 12€, conçu pour piloter vos logiciels préférés à l’aide de 7 touches raccourcies, tout en apportant une touche lumineuse grâce à une bande de LEDs WS2812B adressables. Idéal pour les streamers, créateurs ou makers en quête d’un projet utile et stylé !
Liens affiliés aliexpress des composants nécessaires :
- 11x LEDs WS2812B (bande LED adressable) : [https://s.click.aliexpress.com/e/_c4EzACgv](https://s.click.aliexpress.com/e/_c4EzACgv)
- 7x capuchons de touches pour clavier mécanique : [https://s.click.aliexpress.com/e/_c4nhwT3b](https://s.click.aliexpress.com/e/_c4nhwT3b)
- 7x switches Cherry MX : [https://s.click.aliexpress.com/e/_c2xxyJlX](https://s.click.aliexpress.com/e/_c2xxyJlX)
- 1x potentiomètre WH148 (optionnel pour le volume ou autre usage) : [https://s.click.aliexpress.com/e/_c2J5FyMv](https://s.click.aliexpress.com/e/_c2J5FyMv)
- 1x carte Pro Micro Type-C (ATmega32U4) : [https://s.click.aliexpress.com/e/_c3eM8H77](https://s.click.aliexpress.com/e/_c3eM8H77)
- Fils électriques : [https://s.click.aliexpress.com/e/_c4Eih7j7](https://s.click.aliexpress.com/e/_c4Eih7j7)
Colle forte + 4 petites vis de 3 mm : [https://s.click.aliexpress.com/e/_c3vVNdFb](https://s.click.aliexpress.com/e/_c3vVNdFb)
Pièces 3D incluses :
- Boîtier principal (pla noir)
- Couvercle (pla noir)
- Support (pla noir)
- Diffusion lumineuse (PETG transparent)
Schéma éclectique:

Programme :
La partie volume avec le potentiomètre n'est pas inclus dans le programme car pas encore exploiter.
// Subscribe to MakeVonMatteo on tiktok :)
// Key definitions
#define BUTTON_KEY1 KEY_F13
#define BUTTON_KEY2 KEY_F14
#define BUTTON_KEY3 KEY_F15
#define BUTTON_KEY4 KEY_F16
#define BUTTON_KEY5 KEY_F17
#define BUTTON_KEY6 KEY_F18
#define BUTTON_KEY7 KEY_F19
#define BUTTON_KEY8 KEY_F20
#define BUTTON_KEY9 KEY_F21
#define BUTTON_KEY10 KEY_F22// Pin definitions
#define BUTTON_PIN1 2
#define BUTTON_PIN2 3
#define BUTTON_PIN3 4
#define BUTTON_PIN4 5
#define BUTTON_PIN5 6
#define BUTTON_PIN6 7
#define BUTTON_PIN7 8
#define BUTTON_PIN8 9
#define BUTTON_PIN9 10
#define BUTTON_PIN10 16#define LED_STRIP_PIN 13 // Correspond à D15 (physique)
#define NUM_LEDS 11#include <Keyboard.h>
#include <Adafruit_NeoPixel.h>Adafruit_NeoPixel strip(NUM_LEDS, LED_STRIP_PIN, NEO_GRB + NEO_KHZ800);
// LED couleurs
uint32_t normalColor = strip.Color(0, 150, 255); // Bleu clair
uint32_t pressColor = strip.Color(0, 0, 150); // Bleu foncéclass button {
public:
const char key;
const uint8_t pin;button(uint8_t k, uint8_t p) : key(k), pin(p) {}
void press(boolean state) {
if (state == pressed || (millis() - lastPressed <= debounceTime)) {
return;
}lastPressed = millis();
state ? Keyboard.press(key) : Keyboard.release(key);
pressed = state;
}void update() {
press(!digitalRead(pin));
}boolean isPressed() {
return pressed;
}private:
const unsigned long debounceTime = 30;
unsigned long lastPressed = 0;
boolean pressed = 0;
};// Initialisation des boutons
button buttons[] = {
button(BUTTON_KEY1, BUTTON_PIN1),
button(BUTTON_KEY2, BUTTON_PIN2),
button(BUTTON_KEY3, BUTTON_PIN3),
button(BUTTON_KEY4, BUTTON_PIN4),
button(BUTTON_KEY5, BUTTON_PIN5),
button(BUTTON_KEY6, BUTTON_PIN6),
button(BUTTON_KEY7, BUTTON_PIN7),
button(BUTTON_KEY8, BUTTON_PIN8),
button(BUTTON_KEY9, BUTTON_PIN9),
button(BUTTON_KEY10, BUTTON_PIN10)
};#define NumButtons (sizeof(buttons) / sizeof(buttons[0]))
void setup() {
// Initialisation des LEDs
strip.begin();
strip.show(); // Assurez-vous que les LEDs sont éteintes au début
// Initialisation des boutons
for (int i = 0; i < NumButtons; i++) {
pinMode(buttons[i].pin, INPUT_PULLUP); // Mettre en mode entrée avec pull-up pour chaque bouton
}// Initialisation du clavier
Keyboard.begin();
}void loop() {
boolean anyPressed = false;// Mettre à jour les états des boutons et vérifier si l'un d'eux est pressé
for (int i = 0; i < NumButtons; i++) {
buttons[i].update();
if (buttons[i].isPressed()) {
anyPressed = true;
}
}// Si un bouton est pressé, changer la couleur des LEDs en bleu foncé
if (anyPressed) {
setAllLEDs(pressColor);
} else {
setAllLEDs(normalColor);
}
}// Fonction pour changer la couleur de toutes les LEDs
void setAllLEDs(uint32_t color) {
for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, color);
}
strip.show(); // Mettre à jour les LEDs
}