| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- #include <PS2X_lib.h>
- #include <ESP8266WiFi.h>
- #include <WebSocketsClient.h>
- // 定义wifi账户|密码
- #define AP_SSID "iPhone"
- #define AP_PSW "12345678"
- // 服务器端域名地址
- char path[] = "/";
- char host[] = "caner.top";
- int PlyStnRStickUpDn = 0; //读取PS2右侧摇杆向上/向下的值.
- int PlyStnRStickLtRt = 0; //读取PS2右侧摇杆向左/向右的值.
- int PlyStnLStickUpDn = 0; //读取PS2左侧摇杆向上/向下的值.
- int PlyStnLStickLtRt = 0; //读取PS2左侧摇杆向左/向右的值.
- //socket方法
- WebSocketsClient webSocket;
- PS2X ps2x;
- //定义宏
- #define PS2_DAT 1 //14
- #define PS2_CMD 3 //15
- #define PS2_SEL 12 //16
- #define PS2_CLK 15 //17
- //socket自定义监听
- void SocketEvent(WStype_t type, uint8_t * payload, size_t length) {
- switch (type) {
- case WStype_DISCONNECTED:
- Serial.printf("[WSc] Disconnected!\n");
- break;
- case WStype_CONNECTED:
- Serial.printf("[WSc] Connected to url: %s\n", payload);
- break;
- case WStype_TEXT:
- Serial.printf("[WSc] get text: %s\n", payload);
- break;
- }
- };
- //监测PS2按钮并发送信息
- void Ps2OnButton() {
- // 拿到值
- PlyStnLStickUpDn = ps2x.Analog(PSS_LY); //左侧摇杆上/下
- PlyStnLStickLtRt = ps2x.Analog(PSS_LX); //左侧摇杆左/右
- PlyStnRStickUpDn = ps2x.Analog(PSS_RY); //右侧摇杆上/下
- PlyStnRStickLtRt = ps2x.Analog(PSS_RX); //右侧摇杆左/右
- // 读值
- ps2x.read_gamepad();
- // 发送值
- if (ps2x.ButtonPressed(YELLOW_FRET)) {
- webSocket.sendTXT("1");
- } else if (ps2x.ButtonPressed(RED_FRET)) {
- webSocket.sendTXT("2");
- } else if (ps2x.ButtonPressed(BLUE_FRET)) {
- webSocket.sendTXT("3");
- } else if (ps2x.ButtonPressed(ORANGE_FRET)) {
- webSocket.sendTXT("3");
- } else if (ps2x.Button(UP_STRUM)) {
- webSocket.sendTXT("UP");
- } else if (ps2x.Button(DOWN_STRUM)) {
- webSocket.sendTXT("DOWN");
- } else if (ps2x.Button(RIGHT_STRUM)) {
- webSocket.sendTXT("RIGHT");
- } else if (ps2x.Button(LEFT_STRUM)) {
- webSocket.sendTXT("LEFT");
- } else if (ps2x.Button(PSB_START)) {
- webSocket.sendTXT("START");
- } else if (ps2x.Button(PSB_SELECT)) {
- webSocket.sendTXT("SELECT");
- } else if (ps2x.Button(PSB_L2)) {
- webSocket.sendTXT("L2");
- } else if (ps2x.Button(PSB_R2)) {
- webSocket.sendTXT("R2");
- } else if (ps2x.Button(PSB_L1)) {
- webSocket.sendTXT("K-" + String(PlyStnLStickUpDn));
- } else if (ps2x.Button(PSB_R1)) {
- webSocket.sendTXT("W-" + String(PlyStnLStickUpDn));
- } else {
- webSocket.sendTXT("Other operating");
- }
- };
- void setup() {
- Serial.begin(115200);
- WiFi.begin(AP_SSID, AP_PSW);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- Serial.println("");
- Serial.println("WiFi connected");
- Serial.println("IP address: ");
- Serial.println(WiFi.localIP());
- delay(5000);
- // socket连接
- webSocket.begin(host, 49700, path);
- // event handler
- webSocket.onEvent(SocketEvent);
- // 设置连接认证
- // webSocket.setAuthorization("user", "Password");
- // 设置重连时间ms
- webSocket.setReconnectInterval(5000);
- // 设置心跳ms
- // webSocket.enableHeartbeat(150000, 3000, 2);
- ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT, false, false);
- }
- void loop() {
- // put your main code here, to run repeatedly:
- webSocket.loop();
- Ps2OnButton();
- }
|