Como fazer um teclado de atalhos para o OBS ou outros softwares | DeckBoard | StreamDeck

Neste Projeto Bacana vamos construir um teclado de atalhos para o OBS ou outros softwares, super simples de construir

Materiais:

  • Arduino Leonardo
  • Botões push button
  • Fios
  • Cabo USB
  • Caixa para acabamento

Para Comprar
Arduino Leonardo
https://produto.mercadolivre.com.br/MLB-1785748973-compativel-arduino-leonardo-r3-rev3-atmega32u4-cabo-usb-_JM

Jumpers
https://produto.mercadolivre.com.br/MLB-1881737043-140-jumpers-rigidos-coloridos-protoboardarduinorobotica-_JM

Botões push button
https://produto.mercadolivre.com.br/MLB-1002274543-kit-25-push-button-chave-tactil-com-capa-arduino-_JM

Códigos usados no vídeo:

/* *************************
 *  Projeto Bacana - 09/2021
 *  www.projetobacana.com.br
 *  Júlio Vansan Gonçalves
 *  
 *  https://www.arduino.cc/reference/en/language/functions/usb/keyboard/
 *  
 *  *************************/

#include "Keyboard.h"

const int LED=13;

const int bt01=7;
const int bt02=8;
const int bt03=9;
const int bt04=10;
const int bt05=11;
const int bt06=12;


void setup() {
  Serial.begin(9600); // Habilita a comunicação serial
  pinMode(LED,OUTPUT);
  pinMode(bt01,INPUT_PULLUP);
  pinMode(bt02,INPUT_PULLUP);
  pinMode(bt03,INPUT_PULLUP);
  pinMode(bt04,INPUT_PULLUP);
  pinMode(bt05,INPUT_PULLUP);
  pinMode(bt06,INPUT_PULLUP);
  
  
  Keyboard.begin();
Serial.println("Iniciando");
}

void loop() {
   if (digitalRead(bt01) == LOW) {
      enviaMacro('1',bt01);
    }//Botão 1
   if (digitalRead(bt02) == LOW) {
    enviaMacro('2',bt02);
  }//Botão 2
   if (digitalRead(bt03) == LOW) {
    enviaMacro('3',bt03);
  }//Botão 3
  if (digitalRead(bt04) == LOW) {
    enviaMacro('4',bt04);
  }//Botão 4
  if (digitalRead(bt05) == LOW) {
    enviaMacro('5',bt05);
  }//Botão 5
  
  
 if (digitalRead(bt06) == LOW) {
    enviaMacro(']',bt06);
  }//Botão 6
  
  delay(30);

}//loop

void enviaMacro(char teclaFuncao, int porta){
    digitalWrite(LED,HIGH);     
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press(KEY_LEFT_SHIFT);
    Keyboard.press(teclaFuncao);
    delay(100);
    Keyboard.releaseAll();
    Serial.print(teclaFuncao);
    Serial.println(" Enviada");
    while(digitalRead(porta) == LOW) {
      delay(30);
    }
    digitalWrite(LED,LOW);
}//enviaMacro

Versão Final

/* *************************
 *  Projeto Bacana - 09/2021
 *  www.projetobacana.com.br
 *  Júlio Vansan Gonçalves
 *  
 *  https://www.arduino.cc/reference/en/language/functions/usb/keyboard/
 *  
 *  ************************
 */

#include "Keyboard.h"

const int LED=13;

const int bt01=8;
const int bt02=A3;
const int bt03=A4;
const int bt04=A5;
const int bt05=9;
const int bt06=A2;
const int bt07=10;
const int bt08=A1;
const int bt09=11;
const int bt10=12;
const int bt11=A0;


void setup() {
  Serial.begin(9600); // Habilita a comunicação serial
  pinMode(LED,OUTPUT);
  pinMode(bt01,INPUT_PULLUP);
  pinMode(bt02,INPUT_PULLUP);
  pinMode(bt03,INPUT_PULLUP);
  pinMode(bt04,INPUT_PULLUP);
  pinMode(bt05,INPUT_PULLUP);
  pinMode(bt06,INPUT_PULLUP);
  pinMode(bt07,INPUT_PULLUP);
  pinMode(bt08,INPUT_PULLUP);
  pinMode(bt09,INPUT_PULLUP);
  pinMode(bt10,INPUT_PULLUP);
  pinMode(bt11,INPUT_PULLUP);
  
  Keyboard.begin();
Serial.println("Iniciando");
}

void loop() {
   if (digitalRead(bt01) == LOW) {
      enviaMacro('8',bt01);
    }//Botão 1
   if (digitalRead(bt02) == LOW) {
    enviaMacro('6',bt02);
  }//Botão 2
   if (digitalRead(bt03) == LOW) {
    enviaMacro('3',bt03);
  }//Botão 3
  if (digitalRead(bt04) == LOW) {
    enviaMacro('1',bt04);
  }//Botão 4
  if (digitalRead(bt05) == LOW) {
    enviaMacro('9',bt05);
  }//Botão 5
  if (digitalRead(bt06) == LOW) {
    enviaMacro('7',bt06);
  }//Botão 6
  if (digitalRead(bt07) == LOW) {
    enviaMacro('4',bt07);
  }//Botão 7
  if (digitalRead(bt08) == LOW) {
    enviaMacro('2',bt08);
  }//Botão 8
   
 if (digitalRead(bt09) == LOW) {
    Serial.println("ctrl_C Enviado");
    digitalWrite(LED,HIGH);   
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press('c');
    delay(100);
    Keyboard.releaseAll();
    while(digitalRead(bt09) == LOW) {
      delay(50);
    }
    digitalWrite(LED,LOW);
  }//Botão 9
  if (digitalRead(bt10) == LOW) {
    Serial.println("ctrl_V Enviado");
    digitalWrite(LED,HIGH);   
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press('v');
    delay(100);
    Keyboard.releaseAll();
    while(digitalRead(bt10) == LOW) {
      delay(50);
    }
    digitalWrite(LED,LOW);
  }//Botão 10
  
 if (digitalRead(bt11) == LOW) {
    enviaMacro(']',bt11);
  }//Botão 11
  
  delay(30);

}//loop

void enviaMacro(char teclaFuncao, int porta){
    digitalWrite(LED,HIGH);     
    //Keyboard.write(teclaFuncao);
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press(KEY_LEFT_SHIFT);
   // Keyboard.press(KEY_LEFT_ALT);
    Keyboard.press(teclaFuncao);
    delay(100);
    Keyboard.releaseAll();
    Serial.print(teclaFuncao);
    Serial.println(" Enviada");
    while(digitalRead(porta) == LOW) {
      delay(30);
    }
    digitalWrite(LED,LOW);
}//enviaMacro

Link Canal do Youtube da Igreja Projeto 4
https://www.youtube.com/c/IgrejaProjeto4

— 
Curta, compartilhe e inscreva-se para ficar atualizado com os nossos conteúdos! 
Para saber mais sobre o Canal Projeto Bacana: 
E-mail: contato@projetobacana.com.br
Site: https://www.projetobacana.com.br/  
Facebook:  https://www.facebook.com/projetobacana.com.br
Instagram:  https://www.instagram.com/projetobacana.com.br/
Youtube:  https://www.youtube.com/channel/UC0e1bfaL0-gnAP2KQA5vxqQ