hola buenas yo no conozco del todo arduino no se sobre que pines son para hacer botones o cosas asi pero aun asi hize que me funcionara hasta cierto punto
solo puedo meter 4 teclados con 1 macro que me cambia lo basico y 3 botones como next, play; pero en los otros botones quiero agregar cosas basicas para agregarlo en obs
pero si agrego los otros botones se queda en bucle el boton que alla asignado.
www.mediafire.com/file/k2pj2okzc6jjotl/teclado-bt.zip/file
#include <Arduino.h>
#include <analogWrite.h>
//analogWrite no es una librería estándar.
//Descárgala desde el menú "Herramientas --> Administrar Bibliotecas buscando
//esp32 analogwrite
#include <BleKeyboard.h>
//BleKeyboard no es una librería estándar.
//Descárgala desde
github.com/T-vK/ESP32-BLE-Keyboard/releases
y añade el ZIP desde
//el menú "Programa --> Incluir librería --> Añadir biblioteca .ZIP"
//Establecemos el nombre que tendrá nuestro teclado en la red Bluetooth, el desarrollador y el porcentaje de batería inicial
BleKeyboard bleKeyboard("covertsun", "eduarth_solis", 100);
//Teclas || El número representa el PIN donde está conectada la tecla.
const int a_key = 13;
const int b_key = 12;
const int c_key = 14;
const int d_key = 27;
const int e_key = 34:
const int f_key = 15;
const int g_key = 2;
//Encoder || El número representa los pines usados para conectar el encoder.
#define OUTPUT_B 4
#define OUTPUT_A 26
#define BUTTON 25
#define PIN_5V 33
#define PIN_GND 32
//LED RGB || El número representa los pines usados para conectar el diodo RGB de cuatro patas.
int rojo = 19;
int verde = 18;
int azul = 5;
//Variables de control
bool aState;
bool aLastState;
bool lastButtonState = 0;
int programa = 1; //1 = Windows, 2 = Photoshop
void setup(){
Serial.begin(9600);
//TECLAS || NO MODIFICAR
pinMode(a_key, INPUT_PULLUP);
digitalWrite(a_key, HIGH);
pinMode(b_key, INPUT_PULLUP);
digitalWrite(b_key, HIGH);
pinMode(c_key, INPUT_PULLUP);
digitalWrite(c_key, HIGH);
pinMode(d_key, INPUT_PULLUP);
digitalWrite(d_key, HIGH);
pinMode(e_key, INPUT_PULLUP);
digitalWrite(e_key, HIGH);
pinMode(f_key, INPUT_PULLUP);
digitalWrite(f_key, HIGH);
pinMode(g_key, INPUT_PULLUP);
digitalWrite(g_key, HIGH);
//ENCODER || NO MODIFICAR
pinMode(OUTPUT_A, INPUT);
pinMode(OUTPUT_B, INPUT);
pinMode(BUTTON, INPUT_PULLUP);
pinMode(PIN_5V, OUTPUT);
digitalWrite(PIN_5V, HIGH);
pinMode(PIN_GND, OUTPUT);
digitalWrite(PIN_GND, LOW);
aLastState = digitalRead(OUTPUT_A);
//LED RGB || NO MODIFICAR
pinMode(rojo, OUTPUT);
pinMode(verde, OUTPUT);
pinMode(azul, OUTPUT);
bleKeyboard.begin();
setColor(0, 0, 255); //Color de Windows para el led
}
long lastClickTime = 0;
void loop(){
if (bleKeyboard.isConnected()){
// SETEAMOS EL PROGRAMA QUE QUEREMOS UTILIZAR CON LA CUARTA TECLA
if(digitalRead(d_key)==LOW){
if(programa == 1){ //Windows
setColor(255, 0, 0);
programa = 2;
}else{//Photoshop
setColor(0, 0, 255);
programa = 1;
}
delay(150);
bleKeyboard.releaseAll();
}
//Primera tecla
if(digitalRead(a_key)==LOW){
if(programa == 1){//Windows
bleKeyboard.press(KEY_MEDIA_PREVIOUS_TRACK);
}else{//Photoshop
bleKeyboard.press('v');
}
delay(150);
bleKeyboard.releaseAll();
}
//Segunda tecla
if(digitalRead(b_key)==LOW){
if(programa == 1){//Windows
bleKeyboard.press(KEY_MEDIA_PLAY_PAUSE);
}else{//Photoshop
bleKeyboard.press('r');
}
delay(150);
bleKeyboard.releaseAll();
}
//Tercera tecla
if(digitalRead(c_key)==LOW){
if (programa == 1){//Windows
bleKeyboard.press(KEY_MEDIA_NEXT_TRACK);
}else{//Photoshop
bleKeyboard.press(KEY_LEFT_CTRL);
bleKeyboard.press('s');
}
delay(150);
bleKeyboard.releaseAll();
}
//cuarto tecla
if(digitalRead(e_key)==LOW){
if(programa == 1){//Windows
bleKeyboard.press(KEY_RIGHT_CTRL);
delay(50);
bleKeyboard.press(KEY_F5);
}else{//Photoshop
bleKeyboard.press(KEY_LEFT_ALT);
bleKeyboard.press(KEY_LEFT_CTRL);
bleKeyboard.press('z');
}
delay(150);
bleKeyboard.releaseAll();
}
//quinto tecla
if(digitalRead(f_key)==LOW){
if (programa == 1){//Windows
bleKeyboard.press(KEY_HOME);
}else{//Photoshop
bleKeyboard.press(KEY_LEFT_CTRL);
bleKeyboard.press('z');
}
delay(150);
bleKeyboard.releaseAll();
}
//sexto tecla
if(digitalRead(g_key)==LOW){
if (programa == 1){//Windows
bleKeyboard.press(KEY_END);
}else{//Photoshop
bleKeyboard.press(KEY_LEFT_SHIFT);
bleKeyboard.press(KEY_LEFT_CTRL);
bleKeyboard.press('s');
}
delay(150);
bleKeyboard.releaseAll();
}
//ENCODER
if (millis() - lastClickTime > 1000){
aState = digitalRead(OUTPUT_B);
if (aState != aLastState){
if (digitalRead(OUTPUT_A) != aState){
//IZQUIERDA
switch (programa){
case 1: //Windows
bleKeyboard.press(KEY_MEDIA_VOLUME_DOWN);
break;
case 2: //Photoshop - Zoom out
bleKeyboard.press(KEY_LEFT_CTRL);
bleKeyboard.press(47);
delay(10);
break;
}
}else{
//DERECHA
switch (programa){
case 1: //Windows
bleKeyboard.press(KEY_MEDIA_VOLUME_UP);
break;
case 2: //Photoshop - Zoom in
bleKeyboard.press(KEY_LEFT_CTRL);
bleKeyboard.press(93);
delay(10);
break;
}
}
bleKeyboard.releaseAll();
aLastState = aState;
}
if (digitalRead(BUTTON) == LOW){
if (lastButtonState == HIGH){
//BOTÓN
switch (programa){
case 1: //Windows
bleKeyboard.press(KEY_MEDIA_MUTE);
break;
case 2: //Photoshop - Guardar
bleKeyboard.press(KEY_LEFT_CTRL);
bleKeyboard.press('s');
delay(100);
break;
}
bleKeyboard.releaseAll();
lastClickTime = millis();
}
lastButtonState = LOW;
} else {
lastButtonState = HIGH;
}
}
//FIN DEL ENCODER
}
}
void setColor(int red, int green, int blue){
analogWrite(rojo, red);
analogWrite(verde, green);
analogWrite(azul, blue);
}