Projeto hack mouse tem o objetivo de transformar um mouse comum em um mouse de macro, para os viciados de plantão é uma ótima alternativa pois não é necessário pagar de R$150 a R$200 reais ou mais em um mouse, e não é detectável em jogos online nem muda os drivers, com um simples Arduíno mini é possível reproduzir o projeto em um mouse comum.

Componentes necessários(para teste):

1x Arduino uno ou mini...

1x protoboard

x Jumpers

5x transistores PNP BC558 //para fazer o teste correto quando inseri-lo ao mouse

5x resistores de 1k //para base dos transistores

5x resistores de 220r //para os leds

5x Leds //para testar os terminais que vão para a placa do mouse

6 Push-Button //para acionaras funçoes

Componentes necessários(para uso no dispositivo):

1x Arduino mini

1x mouse comum

5x transistores PNP BC558 //para ativar o sinal do mouse conforme o Arduíno ordenar

5x resistores de 1k //para base dos transistores

Bom como perceberam,apesar de eu não ter tirado muitas fotos (pretendo corrigir isso ao final do projeto) o esquema de ligaçao é simples, pois o circuito foi adaptado para funcionar como push-buttons visto que o mouse para comandar suas funções utiliza o GND para acionamento dos botoes então é ae que entra o BC558, sabendo que o Arduíno só tem saída + em suas portas era necessário um transistor PNP para converter o sinal em GND.

Assim ligamos as saídas do Arduíno nos resistores de 1k que por sua vez são ligados a base do transistor, tendo seus coletores ligados ao GND os pinos Emissores serão ligados as trilhas do circuito que receberia o sinal dos botoes, o Arduíno mini sera alimentado pela própria usb do dispositivo e as trilhas originais dos botoes devem ser cortadas./*para mais proteção recomenda-se o uso de um regulador de tensão 5v , o mini pode ser programado com um Arduíno uno ou placa usb-serial*/

Uma das vantagens é que o código é simples e de fácil entendimento para criação de novos perfis de macro, então crie seu próprio macro!

vamos ao sketch:

//projeto Macro mouse generico
int botDIR=13;//entrada botao direito
int botdir=12;//saida transistor PNP BC558 direita
int botESQ=11;//entrdada botao esquerdo
int botesq=10;//saida transistor PNP BC558 esquerda
int botCTR=9;//entrada botao central(roda do mouse)
int botctr=8;//saida botao transistor PNP BC558 central(roda do mouse)
int bot1LTR=7;//entrada 1 botao lateral
int botltr1=6;//saida de transistor PNP BC558 botao lateral
int bot2LTR=5;//entrada 2 botao lateral
int botltr2=4;//saida botao transistor PNP BC558 lateral
int botMODE=3;//entrada botao Mode gamming (CPI)
int mode=0;//variavel inicial do menu
//tempo de precionamento
#define t_500 delay(500);
#define t_300 delay(300);
#define t_200 delay(200);
#define t_100 delay(100);
//ativa e desativa os botoes
//valores de ligado e desligado foram invertidos por causa do transistor
#define ligEsq digitalWrite(botesq, LOW); ;//liga o esquerdo
#define desEsq digitalWrite(botesq, HIGH);//desliga----^
#define ligDir digitalWrite(botdir, LOW); ;//liga o direito
#define desDir digitalWrite(botdir, HIGH); //desliga--^
#define ligLtr1 digitalWrite(botltr1, LOW); ;//liga o lateral 1
#define desLtr1 digitalWrite(botltr1, HIGH);//desliga---^
#define ligLtr2 digitalWrite(botltr2, LOW); ;//liga o lateral 2
#define desLtr2 digitalWrite(botltr2, HIGH);//desliga--^
#define ligCtr digitalWrite(botctr, LOW); ;//liga o central
#define desCtr digitalWrite(botctr, HIGH);//desliga--^
//Principais Skills do Macro-------------------------------------------------------------------------------------------------------------------------------------------------------------
#define Pressed_Dir int botDIR1 =digitalRead(botDIR); if(botDIR1 == LOW){ligDir;}else{desDir;}//precionamento direito normal
#define Pressed_Esq int botESQ1 =digitalRead(botESQ); if(botESQ1 == LOW){ligEsq;}else{desEsq;}//precionamento esquerdo normal
#define Pressed_1Ltr int botLTR1 =digitalRead(bot1LTR); if(botLTR1 == LOW){ligLtr1;}else{desLtr1;}//precionamento lateral 1 normal
#define Pressed_2Ltr int botLTR2 =digitalRead(bot2LTR); if(botLTR2 == LOW){ligLtr2;}else{desLtr2;}//precionamento lateral 2 normal
#define Pressed_Ctr int botCTR1 =digitalRead(botCTR); if(botCTR1 == LOW){ligCtr;}else{desCtr;}//precionamento roda do mouse normal
#define Pressed_Esq_3kill int botESQ1 =digitalRead(botESQ); if(botESQ1 == LOW){for(int ct=0; ct < 3; ct++){ligEsq; t_200; desEsq; t_100;}}else{desEsq;}//triplo precionamento direito
#define Pressed_Ctr_3 int botCTR1 =digitalRead(botCTR); if(botCTR1 == LOW){for(int ct=0; ct < 3; ct++){ligCtr; t_200; desCtr; t_100;}}else{desCtr;}//triplo precionamento roda do mouse
#define Pressed_Esq_Scope int botESQ1 =digitalRead(botESQ); if(botESQ1 == LOW){ligDir; t_300; ligEsq; t_300; desEsq; desDir;}//scope "direita">>"esuqerda"|"direita"
#define Pressed_Mode int botMODE1 =digitalRead(botMODE); if(botMODE1 == LOW){mode++; t_500;}if(mode == 5){mode=0;}//seleciona o n max de perfis que atualmente é 6
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
void setup(){
//PULLUP PERMITE LIGAR UM BOTAO AO TERRA DIRETAMENTE
//Serial.begin(9600);
pinMode(botDIR,INPUT_PULLUP);//Entrada direita
pinMode(botdir,OUTPUT);//saida direita
pinMode(botESQ,INPUT_PULLUP);//Entrada esquerda
pinMode(botesq,OUTPUT);//saida esquerda
pinMode(botCTR,INPUT_PULLUP); //Entrada do botao da roda do mouse
pinMode(botctr,OUTPUT);//saida do botao da roda do mouse
pinMode(bot1LTR,INPUT_PULLUP);//Entrada do botao lateral 1
pinMode(botltr1,OUTPUT);//saida botao lateral 1
pinMode(bot2LTR,INPUT_PULLUP);// Entrada do botao lateral 2
pinMode(botltr2,OUTPUT);//saida botao lateral 2
pinMode(botMODE,INPUT_PULLUP);// Entrada do botao CPI do mouse
}//fim do void setup
void loop(){
Pressed_Mode;
//perfil normal
if(mode == 0){
//Serial.println("normal");
Pressed_Dir;
Pressed_Esq;
Pressed_1Ltr;
Pressed_2Ltr;
Pressed_Ctr;
}
//perfil sniper
if(mode == 1){
//Serial.println("sniper");
Pressed_Esq_Scope;
Pressed_Dir;
Pressed_1Ltr;
Pressed_2Ltr;
Pressed_Ctr;
}
//perfil 3balas por vez
if(mode == 2){
//Serial.println("3balas");
Pressed_Dir;
Pressed_Esq_3kill;
Pressed_1Ltr;
Pressed_2Ltr;
Pressed_Ctr;
}
//perfil baioneta
if(mode == 3){
//Serial.println("baioneta");
Pressed_Dir;
Pressed_Esq;
Pressed_Ctr_3;
Pressed_1Ltr;
Pressed_2Ltr;
}
//perfil misto scope+baioneta
if(mode == 4){
// Serial.println("scope e baioneta");
Pressed_Esq_Scope;
Pressed_Dir;
Pressed_Ctr_3;
Pressed_1Ltr;
Pressed_2Ltr;
}
}//fim do void loop

Em anexo segue fotos de esquema e sketch, bom projeto!

Exibições: 1509

Anexos

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço