diff --git a/ESP32_TTGO/ESP32CAM_WiFi_Direct/ESP32CAM_WiFi_Direct.ino b/ESP32_TTGO/ESP32CAM_WiFi_Direct/ESP32CAM_WiFi_Direct.ino new file mode 100644 index 0000000..bd6fc0d --- /dev/null +++ b/ESP32_TTGO/ESP32CAM_WiFi_Direct/ESP32CAM_WiFi_Direct.ino @@ -0,0 +1,105 @@ +#include +#include +#include +#include +#include +#include "Button2.h"; + +#define RIGHT_BUTTON_PIN 35 +#define LEFT_BUTTON_PIN 0 +#define YPOS_MAX 0 +#define YPOS_MIN -105 +#define MOVE_FORCE 20 + +const char* ssid = "ESP32-THAT-PROJECT"; +const char* password = "California"; + +using namespace websockets; +WebsocketsServer server; +WebsocketsClient client; + +TFT_eSPI tft = TFT_eSPI(); +Button2 rButton = Button2(RIGHT_BUTTON_PIN); +Button2 lButton = Button2(LEFT_BUTTON_PIN); + +int yPos = -52; + +void setup() { + Serial.begin(115200); + + buttonInit(); + tft.begin(); + tft.setRotation(1); + tft.setTextColor(TFT_WHITE,TFT_BLACK); + tft.fillScreen(TFT_BLACK); + tft.setSwapBytes(true); + tft.setTextFont(4); + TJpgDec.setJpgScale(1); + TJpgDec.setCallback(tft_output); + + tft.println("> Setting AP..."); + WiFi.softAP(ssid, password); + + IPAddress IP = WiFi.softAPIP(); + tft.println("> AP IP Address"); + tft.print(">" ); + tft.println(IP); + tft.println("> Waiting for"); + tft.println("> ESP32CAM"); + + server.listen(8888); +} + +void loop() { + rButton.loop(); + lButton.loop(); + + if(server.poll()){ + client = server.accept(); + } + + if(client.available()){ + client.poll(); + + WebsocketsMessage msg = client.readBlocking(); + uint32_t t = millis(); + + TJpgDec.drawJpg(-30, yPos, (const uint8_t*)msg.c_str(), msg.length()); + + t = millis() - t; + Serial.print(t); Serial.println(" ms"); + } +} + +bool tft_output(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t* bitmap){ + if ( y >= tft.height() ) return 0; + tft.pushImage(x, y, w, h, bitmap); + return 1; +} + +void buttonInit(){ + rButton.setReleasedHandler(released); + lButton.setReleasedHandler(released); +} + +void released(Button2& btn) { + if(btn == rButton){ + Serial.println("right click> "); + moveYOffset(1); + }else{ + Serial.println("left click> "); + moveYOffset(-1); + } +} + +void moveYOffset(int dir){ + yPos += (dir * MOVE_FORCE); + + if(yPos >= YPOS_MAX){ + yPos = YPOS_MAX; + }else if(yPos <= YPOS_MIN){ + yPos = YPOS_MIN; + } + + Serial.printf("yPos : %d\n", yPos); +}