ESP32: evento de conexão do controlador PS4

Eletrônica


Neste tutorial, aprenderemos como detectar a conexão de um controlador PS4 ao ESP32 usando uma função de retorno de chamada. Usaremos o núcleo do Arduino e esta biblioteca. Os testes deste tutorial foram feitos usando o módulo ESP32 do  DFRobot  integrado a uma  placa de desenvolvimento do ESP32 .

INTRODUÇÃO
Neste tutorial, aprenderemos como detectar a conexão de um controlador PS4 ao ESP32 usando uma função de retorno de chamada. Usaremos o núcleo do Arduino e esta biblioteca.

Para um tutorial introdutório sobre como usar a biblioteca, verifique aqui . Observe que, para usar a biblioteca e suportar a conexão do controlador ao ESP32, precisamos obter o endereço Bluetooth armazenado no controlador. O tutorial mencionado explica todo o procedimento sobre como fazê-lo e o software necessário.

Observe que no tutorial introdutório, também aprendemos como verificar se o controlador está conectado recorrendo à pesquisa. No entanto, em geral, a pesquisa é ineficiente e leva ao desperdício de ciclos da CPU que poderiam ser usados ​​para outros cálculos úteis.

Portanto, neste tutorial, aprenderemos como lidar com a conexão de um controlador usando eventos e uma função de retorno de chamada, o que evita a necessidade de pesquisar periodicamente um objeto.

Os testes deste tutorial foram feitos usando o módulo ESP32 do  DFRobot  integrado a uma  placa de desenvolvimento do ESP32 .

O CÓDIGO
Começamos incluindo a biblioteca PS4Controller.h , para que tenhamos acesso à variável externa PS4 que nos permite interagir com o controlador.

=================================================
#include
=================================================

Passando para a configuração do Arduino, começaremos abrindo uma conexão serial, para que possamos produzir os resultados do nosso programa.

=================================================
Serial.begin(115200);
=================================================

Em seguida, chamaremos o método begin em nossa variável externa PS4 , passando como entrada o endereço MAC do Bluetooth registrado no controlador (verifique no tutorial anterior o procedimento para descobrir esse endereço).

Isso cuidará de inicializar a camada Bluetooth no ESP32 e prepará-lo para receber uma conexão de controlador PS4 de entrada.

Observe que esse método retorna um valor booleano indicando se a conexão foi bem-sucedida ou não. Neste tutorial, estamos pulando a manipulação de erros, mas, em um cenário real de aplicativo, você deve lidar com isso.

=================================================
PS4.begin("yourDeviceMAC");
=================================================

Depois disso, chamaremos o método attachOnConnect na variável PS4 . Este método permite registrar uma função de retorno de chamada que será executada quando um controlador se conectar ao ESP32.

Este método recebe como entrada nossa função de retorno de chamada. Vamos chamá-lo onConnect e verificar sua implementação mais tarde.

=================================================
PS4.attachOnConnect(onConnect);
=================================================

Você pode verificar a função de configuração completa abaixo.

=================================================
void setup()
{
  Serial.begin(115200);
  PS4.begin("yourDeviceMAC");
  PS4.attachOnConnect(onConnect);
  Serial.println("Initialization ready!");
}
=================================================

Como vamos trabalhar com funções de retorno de chamada, não precisamos usar o loop principal do Arduino. Portanto, simplesmente excluiremos a tarefa FreeRTOS correspondente, chamando a função vTaskDelete e passando NULL como entrada.

=================================================
void loop()
{
  vTaskDelete(NULL);
}
=================================================

Para finalizar, vamos verificar a implementação da nossa função onConnect . Ele precisa seguir uma assinatura predefinida: return nulo e não recebe argumentos .

=================================================
void onConnect(){  
  // Callback code here
}
=================================================

A implementação de nossa função será muito simples. Apenas imprimiremos o valor do método isConnected , para confirmar que o controlador está realmente conectado ao ESP32.

=================================================
void onConnect(){
  Serial.print("Controller connected: ");
  Serial.println(PS4.isConnected());  
}
=================================================

O código final pode ser visto abaixo.

=================================================
#include
 
void onConnect(){
  Serial.print("Controller connected: ");
  Serial.println(PS4.isConnected());  
}
 
void setup()
{
  Serial.begin(115200);
  PS4.begin("yourDeviceMAC");
  PS4.attachOnConnect(onConnect);
  Serial.println("Initialization ready!");
}
 
void loop()
{
  vTaskDelete(NULL);
}
================================================

TESTANDO O CÓDIGO
Para testar o código, basta compilá-lo e enviá-lo ao seu dispositivo ESP32 usando o núcleo do Arduino. Certifique-se de usar o endereço MAC Bluetooth correto no código final.

Depois disso, abra o monitor serial do Arduino IDE e ligue o controlador clicando no botão PS4.

Você deve obter uma saída semelhante à figura 1. Como pode ser visto, o retorno de chamada é executado e o valor 1 (que corresponde a verdadeiro) é impresso, indicando que o controlador está conectado.

Fonte

https://techtutorialsx.com/2020/02/16/esp32-ps4-controller-connection-event/

Mais Dicas

[+] Veja todas
© 2012-2021 suadica.com