/** * * Camera Remote Menu * * * * * * Camera Settings * * * * * **/ #include "CanonBLERemote.h" #include #define LOG_LOCAL_LEVEL ESP_LOG_INFO #include "esp_log.h" #include const String name_remote = "mcopy"; CanonBLERemote canon_ble(name_remote); volatile boolean connected = false; volatile boolean bleInit = false; volatile long now; volatile long last = -1; volatile char cmdChar = 'z'; void setup() { esp_log_level_set("*", ESP_LOG_NONE); } void connectBLE () { do { // } while(!canon_ble.pair(10)); connected = true; //mc.log("Camera paired"); //mc.log(canon_ble.getPairedAddressString()); } void loop() { now = millis(); cmdChar = mc.loop(); cmd(cmdChar); // Shutter if (digitalRead(SHUTTTER_BTN) == LOW && connected){ camera(); } if (connected && !canon_ble.isConnected()) { connected = false; } if (!bleInit && mc.connected && mc.identified) { mc.log("Initializing BLE..."); canon_ble.init(); bleInit = true; delay(1000); } if (!connected && mc.connected && mc.identified) { mc.log("Connecting BLE..."); connectBLE(); } } void cmd (char val) { if (val == mc.CAMERA && connected) { camera(); } else if (val == mc.CAMERA_FORWARD) { camera_direction(true); } else if (val == mc.CAMERA_BACKWARD) { camera_direction(false); } else if (val == mc.STATE) { state(); } } void camera () { long start = now; long end; digitalWrite(GREEN_LED, HIGH); digitalWrite(RED_LED, HIGH); mc.log("Shutter pressed"); if(!canon_ble.trigger()){ mc.log("camera() failed"); } end = millis(); delay(cameraFrame - (end - start)); digitalWrite(GREEN_LED, HIGH); digitalWrite(RED_LED, LOW); last = millis(); mc.confirm(mc.CAMERA); } //null route direction void camera_direction (boolean state) { if (state) { mc.confirm(mc.CAMERA_FORWARD); mc.log("camera_direction(true)"); } else { mc.confirm(mc.CAMERA_BACKWARD); mc.log("camera_direction(false)"); } } void state () { String stateString = String(mc.CAMERA_EXPOSURE); stateString += String(cameraFrame); stateString += String(mc.STATE); mc.print(stateString); }