Hi Folks,
I’ve been making triggers for high-speed flash photography using Arduino Nano controllers. I’ve used the cheap clones previously but now I want to use the real thing in future so that I can make the process available to our camera club members https://conwycameraclub.com/tips-tutorials/diy-flash-trigger/. With genuine units I hope to avoid issues like the Nano board not being recognized or the COM port not being found.
I’m looking at using the genuine Nano Every in future but have a couple of Newbie questions:
• I don’t see the Nano Every listed in the board manager, will it be recognized`` as a Nano?
• I’ve read conflicting reports on the Every, some say certain scenarios wont work without software teaks. Will the sketch below (not my work) function on the Every?
• With no pinouts marked on the top of the unit how do we identify the pinouts?
Cheers for looking,
Eugene Stevenson.
const int FLASH_PIN = 3; //assign pin 3 to FLASH TRIGGER
const int DELAY_PIN = A0; //assign pin A0 to DELAY POT
const int SOUND_PIN = A2; //assign pin A2 to TRIGGER INPU
const int THRESHOLD_PIN = A3; //assign pin A3 to THRESHOLD POT
const int BUTTON_PIN = 2; //assign pin 2 to start BUTTON
const int potONE = A0; //assign pin A0 to potentiometer 1 - Delay
const int potTWO = A3; //assign pin A0 to potentiometer 2 - Threshold
int camDEL; //declare camDEL variable
int camDELval; //declare camDELval variable
int BUTTON_STATE; //declare BUTTON_STATE variable
int THRESHOLD; //declare THRESHOLD variable
int THRESHOLDval; //declare THRESHOLDval variable
int TIMEOUT=500; //500 milliseconds
int pMin = 0; //the lowest value that comes out of the potentiometer
int pMax = 1023; //the highest value that comes out of the potentiometer.
void setup()
{
Serial.begin(115200);
pinMode(BUTTON_PIN, INPUT); // make button press pin input
pinMode(FLASH_PIN, OUTPUT); // make flash trigger pin output
digitalWrite(FLASH_PIN, LOW); // keep flash trigger pin low
pinMode(DELAY_PIN, INPUT); // make pot pin an input
}
volatile int v1 = 0;
volatile int v2 = 0;
void buttonWait(int buttonPin){
int BUTTON_STATE = 0;
while(1){
BUTTON_STATE = digitalRead(BUTTON_PIN);
if (BUTTON_STATE == HIGH) {
return;
}
}
}
void loop()
{
buttonWait(2); // check if button is pressed, only continue when pressed.
THRESHOLD=analogRead(potTWO); //read analogue value from potentiometer 2
THRESHOLDval = map(THRESHOLD, pMin, pMax, 2, 500); //map value from potTWO to be between 2 and 500 to increase accuracy
Serial.println(THRESHOLDval);
while (abs(v1 - v2) < THRESHOLDval) { // if difference between two analog read exceeds threshhold, then exit loop and trigger flash
v1 = analogRead(SOUND_PIN); // start analog read
v2 = analogRead(SOUND_PIN); } // acquire again
camDEL=analogRead(potONE); //read analogue value from potentiometer 1
//camDELval=camDEL/(5.); //divide value from potONE by 5 to increase accuracy
delay(camDELval); //delay for time value camDELval - delay between second drop and camera activation
digitalWrite(FLASH_PIN, HIGH); // trigger flash
delay(10); // keep flash trigger high for 10ms
digitalWrite(FLASH_PIN, LOW); // done triggering, reset back
v1 = v2;
delay(500);
BUTTON_STATE=LOW;
}