Buscar

Comunicação sem fio com o controle do PS2 no arduino

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem de Programação 
e Projetos (LPP)
Professores:
Antonio Eduardo Citron
Wilton Moreira Ferraz Junior
Comunicação sem fio com 
o controle do PS2
Recursos dos 
controles PS2
O controle do Playstation 2 têm 12 teclas analógicas 
sensíveis à pressão (4 teclas para direção, 4 teclas de 
operação: Cruz, Triângulo, Círculo e Quadrado e por 
fim as teclas L1, L2, R1 e R2) e 5 teclas digitais (MODE, 
START, SELECT, R3, L3) e 2 joysticks analógicos. 
Existem 2 motores dentro dos controles que podem 
produzir vibração com base em interações com o jogo.
Recursos dos 
controles PS2
O controle sem fio funciona com 
frequência de 2,4 GHz e tem 
alcance de 10 metros. 
Também possui uma conexão 
óptica para envio e recebimento 
de dados. 
Este controle precisa de apenas 
3 pilhas AAA para alimentação 
(em alguns casos, precisa apenas 
de 2 pilhas AAA).
Onde você pode usar o controle PS2:
 Como controle robôs com rodas e carros 
de controle remoto
 Como controle de braços robóticos
 Como controle uma câmera
 Como controle drones
Como conectar o 
controle PS2 ao Arduino
O receptor do controlador PS2 inclui 9 pinos:
Como conectar o 
controle PS2 ao Arduino
O receptor do controlador PS2 inclui 9 pinos:
Dados (Data): linha mestre para 
envio de dados ao escravo (MOSI)
Comando (Command): linha 
escrava para envio de dados ao 
mestre (MISO)
Vibração (Vibration Motor): 
alimentação de motores de 
vibração; 7,2 volts a 9 volts
GND (Ground): terra dos circuitos
Como conectar o 
controle PS2 ao Arduino
O receptor do controlador PS2 inclui 9 pinos:
VCC (Power): alimentação dos 
circuitos; 3,3 volts
Atenção (Attention): Pin CS ou 
Chip Select para chamar o escravo 
e preparar a conexão
Relógio (Clock): equivalente ao 
pino SCK para relógio
Sem conexão (No Connection): 
não utilizado
Reconhecimentio (Acknowledge): 
reconhece o sinal do controlador 
para o receptor PS2
Interface do controle 
PS2 com o Arduino
Biblioteca PS2X
Para baixar a biblioteca acesse o link: https://bityli.com/ozDyoyB
https://drive.google.com/file/d/1YzoJTzRmUClJZgzmgHVNE_9_n-Da9Onw/view?usp=sharing
Biblioteca PS2X
As principais funções desta biblioteca são:
ps2x.config_gamepad(clock, command, attention, data, Pressures? Rumble?);
Define o pino do controlador e a sensibilidade à pressão e 
vibração dos motores. 
Se você quiser teclas insensíveis à pressão ou motores 
sem vibração, defina Pressures e Rumble como false. 
Esta função retorna valor para erro
Biblioteca PS2X
erro = ps2x.config_gamepad(13,11,10,12, true, false);
ERRO DESCRIÇÃO
0 Controle Encontrado e configurado com sucesso
1 Controle não Encontrado, verifique a fiação ou reinicie o 
Arduino
2 Controle Encontrado, mas não aceitando comandos
3 Controle não entrou no modo detecção de clique, este 
modo pode não ser suportado
Biblioteca PS2X
ps2x.readType();
Determina o tipo de controlador detectado
tipo = ps2x.readType();
TIPO DESCRIÇÃO
0 Controle não foi detectado corretamente
1 Detecção do controle DualShock 
2 Detecção do controle GuitarHero.
3 Detecção do controle Sony DualShock
Biblioteca PS2X
ps2x.read_gamepad(boolean motor1, byte motor2);
Define os valores de vibração para os motores. motor1 
pode utilizar true - ligado e false - desligado. 
Já o motor2 que é o maior pode receber valores entre 0-255. 
Se a função ps2x.enableRumble() não for utilizada pode-se 
utilizar ps2x.read_gamepad() para ler os botões do controle 
GuitarHero
Biblioteca PS2X
ps2x.Button(button type);
Retorna 1 quando a tecla específica no argumento da 
função é pressionada. No controle DualShock, as teclas são 
nomeadas da seguinte forma:
Biblioteca PS2X
No controle DualShock, as teclas são nomeadas da seguinte forma:
Biblioteca PS2X
ps2x.Analog(button type);
Retorna o valor das teclas analógicas. (A ação quando a 
interação com uma tecla do controle). 
Exemplo: Quando a tecla select é mantida pressionada a 
ação retornada é um valor binário que pode ser convertido 
para outras bases numéricas;
Serial.println(ps2x.Analog(PSAB_PAD_UP), DEC);
Biblioteca PS2X
Mapeamento dos botões
Botões direcionais:
NOME FUNÇÃO
PSB_PAD_UP Botão direcional para cima
PSB_PAD_DOWN Botão direcional para baixo
PSB_PAD_LEFT Botão direcional para a esquerda
PSB_PAD_RIGHT Botão direcional para a direita
Biblioteca PS2X
Mapeamento dos botões
Botões de ação:
NOME FUNÇÃO
PSB_GREEN ou PSB_TRIANGLE Botão triângulo verde
PSB_RED ou PSB_CIRCLE Botão círculo vermelho
PSB_BLUE ou PSB_CROSS Botão X azul
PSB_PINK ou PSB_SQUARE Botão quadrado rosa
Biblioteca PS2X
Mapeamento dos botões
Gatilhos:
NOME FUNÇÃO
PSB_L1 Botão 1 => gatilho lado esquerdo
PSB_R1 Botão 1 => gatilho lado direito
PSB_L2 Botão 2 => gatilho lado esquerdo
PSB_R2 Botão 2 => gatilho lado direito
Biblioteca PS2X
Mapeamento dos botões
Sticks (sim, você pode pressionar o stick como um botão):
NOME FUNÇÃO
PSB_L3 Botão stick esquerdo
PSB_R3 Botão stick direito
Biblioteca PS2X
Mapeamento dos botões
Menu
NOME FUNÇÃO
PSB_SELECT Botão select
PSB_START Botão start
Biblioteca PS2X
Mapeamento dos botões
Joystick (Stick)
Para ler o valor analógico (que será convertido em um valor 
inteiro entre 0 e 255) dos sticks use o seguinte método:
ps2x.Analog(button type);
NOME FUNÇÃO
PSS_LY Posição y do stick esquerdo
PSS_LX Posição x do stick esquerdo
PSS_RY Posição y do stick direito
PSS_RX Posição x do stick direito
Exemplo
Circuito
Exemplo
Código
// incluindo Biblioteca
#include <PS2X_lib.h>
#define Led1 2
#define Led2 3
#define Led3 4
#define Led4 5
PS2X ps2x; // criando a classe Controle PS2
int erro = 0; 
byte tipo = 0;
Exemplo
Código
void setup(){
 // configurando os pinos do Led
 pinMode(Led1, OUTPUT);
 pinMode(Led2, OUTPUT);
 pinMode(Led3, OUTPUT);
 pinMode(Led4, OUTPUT);
 // Inicializando a comunicação Serial
 Serial.begin(57600);
//Configuração de Pinos, acionando verificação
//de clique e desabilitando a vibração
erro = ps2x.config_gamepad(13,11,10,12, true, false);
Exemplo
Código
// verifica o códifo de erro
 if(erro == 0){
 Serial.println("Controle Encontrado, configurado com sucesso");
 } else if(erro == 1){
 Serial.println("Controle não Encontrado, verifique a fiação ou reinicie o Arduino");
 }else if(erro == 2){
 Serial.println("Controle Encontrado, mas não aceitando comandos");
 }else if(erro == 3){
 Serial.println("O controle não entrou no modo detecção de clique, este modo pode não ser suportado");
 } 
Exemplo
Código
// Verificando o tipo de controle
 tipo = ps2x.readType();
 switch(tipo) {
 case 0:
 Serial.println("Tipo de Controle Desconhecido");
 break;
 case 1:
 Serial.println("Controle DualShock Controller Encontrado");
 break;
 case 2:
 Serial.println("Controle GuitarHero Encontrado");
 break;
 }
}
Exemplo
Código
void loop(){
 if(erro == 1){ //Sai do loop() se o controle não for encontrado
 return; 
 } else { //Controle DualShock
 ps2x.read_gamepad(false, 0); //Aciona a leitura dos botões
 // Acende os leds com base nos botões D-pad
 if(ps2x.Button(PSB_PAD_UP)) {
 digitalWrite(Led1,HIGH);
 Serial.println("Acende Led1");
 }
 if(ps2x.Button(PSB_PAD_RIGHT)){
 digitalWrite(Led2,HIGH);
 Serial.println("Acende Led2");
 }
Exemplo
Código
 if(ps2x.Button(PSB_PAD_LEFT)){
 digitalWrite(Led3,HIGH);
 Serial.println("Acende Led3");
 }
 if(ps2x.Button(PSB_PAD_DOWN)){
 digitalWrite(Led4,HIGH);
 Serial.println("Acende Led4");
 } 
 i f (!ps2x.Button(PSB_PAD_DOWN) && !ps2x.Button(PSB_PAD_UP) && !ps2x.Button(PSB_PAD_RIGHT) 
&& !ps2x.Button(PSB_PAD_LEFT)) {
 digitalWrite(Led1,LOW);
 digitalWrite(Led2,LOW);
 digitalWrite(Led3,LOW);
 digitalWrite(Led4,LOW);
 Serial.println("Apaga os Leds");
 }
 delay(50);
 } 
}
Referencias
ALBUQUERQUE, Igor Fonseca; Arduino Robot With PS2 Controller (PlayStation 2 
Joystick), disponível em <https://create.arduino.cc/projecthub/igorF2/arduino-robot-with-ps2-controller-playstation-2-joystick-85bddc>, Acessado em: 14/set/22
ELECTROPEAK; How to Interface PS2 Wireless Controller with Arduino, disponível em 
<https://create.arduino.cc/projecthub/electropeak/how-to-interface-ps2-wireless-
controller-w-arduino-a0a813>, Acessado em: 14/set/22
W E T Z E L , E r i c ; E C K H A R D T , K u r t . A r d u i n o - P S 2 X , d i s p o n í v e l e m 
<https://github.com/madsci1016/Arduino-PS2X>, Acessado em: 14/set/22
PORTER, Bill. PlayStation 2 Controller Arduino Library v1.0, disponível em 
<http://www.billporter.info/2010/06/05/playstation-2-controller-arduino-library-v1-
0/>, Acessado em: 14/set/22

Continue navegando