canon_ble #82

Merged
mattmcw merged 149 commits from canon_ble into main 2023-08-01 03:38:52 +00:00
2 changed files with 140 additions and 42 deletions
Showing only changes of commit b48c498574 - Show all commits

View File

@ -16,29 +16,20 @@
#include "CanonBLERemote.h" #include "CanonBLERemote.h"
#include <Arduino.h> #include <Arduino.h>
//#include "McopySerial.h"
#define LOG_LOCAL_LEVEL ESP_LOG_INFO #define LOG_LOCAL_LEVEL ESP_LOG_INFO
#include "esp_log.h" #include "esp_log.h"
#include <esp32-hal-log.h> #include <esp32-hal-log.h>
#define SHUTTTER_BTN 12
#define RELAY_PIN 14
#define RED_LED 23
#define GREEN_LED 22
const String name_remote = "mcopy"; const String name_remote = "mcopy";
CanonBLERemote canon_ble(name_remote); CanonBLERemote canon_ble(name_remote);
McopySerial mc;
volatile boolean connected = false; volatile boolean connected = false;
volatile boolean bleInit = false; volatile boolean bleInit = false;
volatile long now; volatile long now;
volatile long last = -1; volatile long last = -1;
volatile long cameraFrame = 2000;
volatile char cmdChar = 'z'; volatile char cmdChar = 'z';
@ -46,44 +37,18 @@ volatile char cmdChar = 'z';
void setup() void setup()
{ {
esp_log_level_set("*", ESP_LOG_NONE); esp_log_level_set("*", ESP_LOG_NONE);
pins();
mc.begin(mc.CAMERA_IDENTIFIER);
digitalWrite(RED_LED, HIGH);
digitalWrite(GREEN_LED, HIGH);
delay(42);
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
}
void pins () {
pinMode(SHUTTTER_BTN, INPUT_PULLUP);
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
} }
void connectBLE () { void connectBLE () {
digitalWrite(RED_LED, HIGH);
digitalWrite(GREEN_LED, LOW);
do { do {
mc.log("Pairing..."); //
} }
while(!canon_ble.pair(10)); while(!canon_ble.pair(10));
connected = true; connected = true;
digitalWrite(RED_LED, LOW); //mc.log("Camera paired");
digitalWrite(GREEN_LED, HIGH); //mc.log(canon_ble.getPairedAddressString());
delay(1000);
mc.log("Camera paired");
mc.log(canon_ble.getPairedAddressString());
} }
void loop() void loop()

View File

@ -0,0 +1,133 @@
/**
*
* Camera Remote Menu
*
*
*
*
*
* Camera Settings
*
*
*
*
*
**/
#include "McopySerial.h"
#define SHUTTTER_BTN 12
#define RELAY_PIN 14
#define RED_LED 23
#define GREEN_LED 22
McopySerial mc;
volatile boolean connected = false;
volatile boolean bleInit = false;
volatile long now;
volatile long last = -1;
volatile long cameraFrame = 2000;
volatile char cmdChar = 'z';
void setup()
{
pins();
mc.begin(mc.CAMERA_IDENTIFIER);
digitalWrite(RED_LED, HIGH);
digitalWrite(GREEN_LED, HIGH);
delay(42);
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
}
void pins () {
pinMode(SHUTTTER_BTN, INPUT_PULLUP);
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
}
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) {
bleInit = true;
delay(1000);
}
if (!connected && mc.connected && mc.identified) {
mc.log("Connecting BLE...");
}
}
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");
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.STATE);
stateString += String(mc.CAMERA_EXPOSURE);
stateString += String(cameraFrame);
stateString += String(mc.STATE);
mc.print(stateString);
}