wifi-socket.ino 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #include <PS2X_lib.h>
  2. #include <ESP8266WiFi.h>
  3. #include <WebSocketsClient.h>
  4. // 定义wifi账户|密码
  5. #define AP_SSID "iPhone"
  6. #define AP_PSW "12345678"
  7. // 服务器端域名地址
  8. char path[] = "/";
  9. char host[] = "caner.top";
  10. int PlyStnRStickUpDn = 0; //读取PS2右侧摇杆向上/向下的值.
  11. int PlyStnRStickLtRt = 0; //读取PS2右侧摇杆向左/向右的值.
  12. int PlyStnLStickUpDn = 0; //读取PS2左侧摇杆向上/向下的值.
  13. int PlyStnLStickLtRt = 0; //读取PS2左侧摇杆向左/向右的值.
  14. //socket方法
  15. WebSocketsClient webSocket;
  16. PS2X ps2x;
  17. //定义宏
  18. #define PS2_DAT 1 //14
  19. #define PS2_CMD 3 //15
  20. #define PS2_SEL 12 //16
  21. #define PS2_CLK 15 //17
  22. //socket自定义监听
  23. void SocketEvent(WStype_t type, uint8_t * payload, size_t length) {
  24. switch (type) {
  25. case WStype_DISCONNECTED:
  26. Serial.printf("[WSc] Disconnected!\n");
  27. break;
  28. case WStype_CONNECTED:
  29. Serial.printf("[WSc] Connected to url: %s\n", payload);
  30. break;
  31. case WStype_TEXT:
  32. Serial.printf("[WSc] get text: %s\n", payload);
  33. break;
  34. }
  35. };
  36. //监测PS2按钮并发送信息
  37. void Ps2OnButton() {
  38. // 拿到值
  39. PlyStnLStickUpDn = ps2x.Analog(PSS_LY); //左侧摇杆上/下
  40. PlyStnLStickLtRt = ps2x.Analog(PSS_LX); //左侧摇杆左/右
  41. PlyStnRStickUpDn = ps2x.Analog(PSS_RY); //右侧摇杆上/下
  42. PlyStnRStickLtRt = ps2x.Analog(PSS_RX); //右侧摇杆左/右
  43. // 读值
  44. ps2x.read_gamepad();
  45. // 发送值
  46. if (ps2x.ButtonPressed(YELLOW_FRET)) {
  47. webSocket.sendTXT("1");
  48. } else if (ps2x.ButtonPressed(RED_FRET)) {
  49. webSocket.sendTXT("2");
  50. } else if (ps2x.ButtonPressed(BLUE_FRET)) {
  51. webSocket.sendTXT("3");
  52. } else if (ps2x.ButtonPressed(ORANGE_FRET)) {
  53. webSocket.sendTXT("3");
  54. } else if (ps2x.Button(UP_STRUM)) {
  55. webSocket.sendTXT("UP");
  56. } else if (ps2x.Button(DOWN_STRUM)) {
  57. webSocket.sendTXT("DOWN");
  58. } else if (ps2x.Button(RIGHT_STRUM)) {
  59. webSocket.sendTXT("RIGHT");
  60. } else if (ps2x.Button(LEFT_STRUM)) {
  61. webSocket.sendTXT("LEFT");
  62. } else if (ps2x.Button(PSB_START)) {
  63. webSocket.sendTXT("START");
  64. } else if (ps2x.Button(PSB_SELECT)) {
  65. webSocket.sendTXT("SELECT");
  66. } else if (ps2x.Button(PSB_L2)) {
  67. webSocket.sendTXT("L2");
  68. } else if (ps2x.Button(PSB_R2)) {
  69. webSocket.sendTXT("R2");
  70. } else if (ps2x.Button(PSB_L1)) {
  71. webSocket.sendTXT("K-" + String(PlyStnLStickUpDn));
  72. } else if (ps2x.Button(PSB_R1)) {
  73. webSocket.sendTXT("W-" + String(PlyStnLStickUpDn));
  74. } else {
  75. webSocket.sendTXT("Other operating");
  76. }
  77. };
  78. void setup() {
  79. Serial.begin(115200);
  80. WiFi.begin(AP_SSID, AP_PSW);
  81. while (WiFi.status() != WL_CONNECTED) {
  82. delay(500);
  83. Serial.print(".");
  84. }
  85. Serial.println("");
  86. Serial.println("WiFi connected");
  87. Serial.println("IP address: ");
  88. Serial.println(WiFi.localIP());
  89. delay(5000);
  90. // socket连接
  91. webSocket.begin(host, 49700, path);
  92. // event handler
  93. webSocket.onEvent(SocketEvent);
  94. // 设置连接认证
  95. // webSocket.setAuthorization("user", "Password");
  96. // 设置重连时间ms
  97. webSocket.setReconnectInterval(5000);
  98. // 设置心跳ms
  99. // webSocket.enableHeartbeat(150000, 3000, 2);
  100. ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT, false, false);
  101. }
  102. void loop() {
  103. // put your main code here, to run repeatedly:
  104. webSocket.loop();
  105. Ps2OnButton();
  106. }