// Leer bien para poder entender bien // Esta Version de Sketch tiene el metodo de bloqueo de volumen invertido es decir al iniciar la Rockola el volume esta bloqueado y tienen que // presionar los dos botones de volumen al mismo tiempo para activarlo. // en esta nueva version le agregue mas pines eran 12 ahora son 20 osea agregue 8 mas (; // recordar que este Sketch es para Arduino Leonardo ya son los pines de ese modelo pero con algunos cambios puede funcionar para otros modelos de Arduino // including keyboard.h library for the keybard functions #include // esta seccion es de la version mas corta pero la dejo para referencia // setting Arrays for looping later // int MyInputPins[12] = {0,1,2,3,4,5,6,7,8,9,10,11}; // int MyChar[12] = {KEY_F1,KEY_RETURN,'a',KEY_UP_ARROW,KEY_DOWN_ARROW,KEY_LEFT_ARROW,KEY_RIGHT_ARROW,'q','d','w','s','n'}; // setting Arrays for looping later int MyInputPins[20] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,A0,A1,A2,A3,A4,A5}; // esto es obvio pines del 0 al 13 del lado derecho del Arduino Leonardo y pines de A0 hasta A5 del lado izquierdo int MyChar[20] = {KEY_F1,KEY_RETURN,'a',KEY_UP_ARROW,KEY_DOWN_ARROW,KEY_LEFT_ARROW,KEY_RIGHT_ARROW,'q','d','w','s','n','m','k','0','1','2','3','4','5'}; // 20 pines y 20 caracteres para que te diviertas // lo de arriba se a hecho pensado en que cada pin y cada tecla hara lo siguiente en el programa de Rockola: // KEY_F1 = para cancelar ,KEY_RETURN = para OK ,'a' = para ABC ,KEY_UP_ARROW = para arriba ,KEY_DOWN_ARROW = para abajo , // KEY_LEFT_ARROW = para izquierda ,KEY_RIGHT_ARROW = para la derecha ,'q' = para monedero de cora, 'd' = para monedero de dolar, // 'w' = para volumen arriba ,'s' = para volumen abajo , de la 'n' hasta el '5' = para repuesto o cualquier otra cosa ; // recuerda que estamos usando pines del 0 al 11 con la Rockola pero se pueden usar los 20 pines // setting up integer variables int a = 1; int x; int i; boolean Vol = false; void setup() { // put your setup code here, to run once: // Setting up Digital Pins // for (i=0; i<12; i+=a){pinMode(MyInputPins[i],INPUT_PULLUP);} // Setting up Digital Pins for (i=0; i<20; i+=a){pinMode(MyInputPins[i],INPUT_PULLUP);} // starting keyboard Keyboard.begin(); } void loop() { // put your main code here, to run repeatedly: // primer condicional "Recuerda que los if's son condicionales" if (Vol == true) { // action A // instead of doing an if one by one doing a loop all in one shot // this loop for analog and regular digital pins to work all as digital for (i=0; i<20; i+=a){ if (digitalRead(9) == LOW && digitalRead(10) == LOW || digitalRead(10) == LOW && digitalRead(9) == LOW) {Vol = false; continue;} // lo de arriba es el Switch que desactiva las teclas de volumen haciendo bypass los pines 10 y 9 // para cambiar las teclas de Switch o pines hay que cambiar lo siguiente: //(digitalRead(9) == LOW && digitalRead(10) == LOW || digitalRead(10) == LOW && digitalRead(9) == LOW) por algo como lo de abajo // (digitalRead(0) == LOW && digitalRead(1) == LOW || digitalRead(1) == LOW && digitalRead(0) == LOW) // asi el Switch seran el pin 0 y el 1 en el original son los pines 10 y 9 // se podrian usar muchas mezclas para hacer el Switch osea mas de dos "pines" o teclas o solo uno en especial eso depende del gusto de cada quien y el uso que le quiera dar if (digitalRead(MyInputPins[i]) == LOW){Keyboard.write(MyChar[i]);delay(100);} } // una observacion extra es que 100 en el delay de arriba esta perfecto para la Rockola // aqui arriba el Arduino manda la señal del teclado con la tecla especificada en cada pin pormedio de MyChar[i] que es nuestra lista de caracteres osea nuestras teclas de teclado // esto puede ser MyChar[0] al MyChar[19] en otras palabras MyChar[0] seria KEY_F1 y MyChar[19] seria el 5 esto viendo nuestra lista de caracteres desde el primero al ultimo // y delay(50) hace un retraso de 50 milisegundos para que los pines no manden la señal de tecla tan seguido porque esto podria ocacionar mal funcionamiento en la Rockola o en cualquier aplicacion } else { // action B // instead of doing an if one by one doing a loop all in one shot // this loop for analog and regular digital pins to work all as digital for (i=0; i<20; i+=a){ if (digitalRead(9) == LOW && digitalRead(10) == LOW || digitalRead(10) == LOW && digitalRead(9) == LOW) {Vol = true; continue;} // lo mismo pasa aqui que arriba si se activan los pines 9 y 10 al mismo tiempo hacen switch para que suncionen independientemente if (digitalRead(9) == LOW || digitalRead(10) == LOW){continue;} // esto le hace bypass a los pines 9 y 10 que pertenecen a la tecla w y s cuando esta desactivado o bloqueado el volumen // yo uso w para subir volume y s para bajarlo pero se pueden usar las que sea solo que yo sigo un esquema propio if (digitalRead(MyInputPins[i]) == LOW){Keyboard.write(MyChar[i]);delay(100);}} // una observacion extra es que 100 en el delay de arriba esta perfecto para la Rockola // aqui arriba el Arduino manda la señal del teclado con la tecla especificada en cada pin pormedio de MyChar[i] que es nuestra lista de caracteres osea nuestras teclas de teclado // esto puede ser MyChar[0] al MyChar[19] en otras palabras MyChar[0] seria KEY_F1 y MyChar[19] seria el 5 esto viendo nuestra lista de caracteres desde el primero al ultimo // y delay(50) hace un retraso de 50 milisegundos para que los pines no manden la señal de tecla tan seguido porque esto podria ocacionar mal funcionamiento en la Rockola o en cualquier aplicacion } // this makes a small pause for the board's mini procesor delay(20); }