Hmmm.... co zostało użyte:
- obudowa Z3A wymiary wysokość-szerokość-długość : 69mm x 90mm x 110mm.
- klon Arduino UNO
- wyświetlacz do Arduino 2 x 16 znaków sa na All***o w różnych kolorach.
- 1 rezystor 100 Ohm do obniżenia jasności wyświetlacza
- 4 rezystory 4,7 k Ohm do budowy klawiatury
- 1 potencjometr obrotowy 10 k Ohm
- 4 wejścia mini jack 3,5 mm do wpinania czujników i kabelka wyzwalania
schemat podłączeń i oznaczenia przycisków:
kod narzazie wersja testowa do wglądu:
Kod:
#include <LiquidCrystal.h>
#include <MemoryFree.h>
#include <multiCameraIrControl.h>
Nikon X(13); // firma aparatu / pin diody IR
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // ustawia piny wyswietlacza
//#########################################################################################################################################################################################
// ZMIENNE KLAWIATURY I POTENCJOMETRU
int klaw;
int kwart;
int pot;
//#########################################################################################################################################################################################
// ZMIENNE MENU
int menu = 1 ;
int val = 1;
//#########################################################################################################################################################################################
// ZMIENNE PRZECHOWUJACE ROZNE WARTOSCI W ZALEZNOSCI OD WYBRANEJ FUNKCJI
int val2;
int val3;
int val4;
int val5;
long val6;
long val7;
long val8;
long val9;
String string1;
String string2;
unsigned long val10;
//#########################################################################################################################################################################################
void setup() {
lcd.begin(16, 2); // definiuje typ wyswietlacza
}
void loop() {
//#########################################################################################################################################################################################
// ODCZYT KLAWIATURY I POTENCJOMETRU Z PINÓW ANALOGOWYCH A0 I A1
kwart = analogRead(A1);
pot = analogRead(A0);
//#########################################################################################################################################################################################
// ZMIANA ODCZYTU Z A1 NA KONKRETNY KLAWISZ
if (kwart > 1000 ) {klaw = 1;delay(200);}else
if (kwart > 500 & kwart < 520 ){klaw = 2;delay(200);}else
if (kwart > 330 & kwart < 350 ){klaw = 3;delay(200);}else
if (kwart > 240 & kwart < 270 ){klaw = 4;delay(200);}
else klaw = 0;
//#########################################################################################################################################################################################
// STEROWANIE MENU
if (menu > 9 & menu < 99 & klaw == 1 ){menu = menu/10;};
if (menu > 9 & menu < 99 & klaw == 2 ){val = val-1;};
if (menu > 9 & menu < 99 & klaw == 3 ){val = val+1;};
if (menu > 9 & menu < 99 & klaw == 4 ){menu = menu+1;};
if (menu <= 9 & klaw == 2 ){menu = menu-1;};
if (menu <= 9 & klaw == 3 ){menu = menu+1;};
if (menu <= 9 & klaw == 4 ){menu = menu*10;};
if (menu > 99 & klaw == 1 ){menu = menu/10;};
//#########################################################################################################################################################################################
// CZYSCI WYSWIETLACZ
lcd.clear();
//#########################################################################################################################################################################################
// SEKCJA MENU
switch (menu) {
case 0:
menu = 1;
break;
//#########################################################################################################################################################################################
// POCZATEK INTERVALOMETER
//#########################################################################################################################################################################################
// INTERVALOMETER GŁÓWNE MENU [WARTOSC ZMIENNEJ menu = 1]
//#########################################################################################################################################################################################
case 1:
lcd.setCursor(0, 0); lcd.print(F("1."));
lcd.setCursor(1, 1); lcd.print(F("Intervalometer"));
break;
//#########################################################################################################################################################################################
// INTERVALOMETER PODMENU [WARTOSC ZMIENNEJ menu = 10]
case 10: //pod menu intervalometer
lcd.setCursor(0, 0); lcd.print(val6); // wiswietla wartosc potencjometra
lcd.setCursor(3, 0); lcd.print(string1);
lcd.setCursor(11, 0); lcd.print(F("| 000"));
lcd.setCursor(0, 1); lcd.print(F("----------------"));
switch (val) {
case 0: // blokuje watrosc na >= 1
val = 1 ;
break;
case 1: // przelancza pomiedzy sek, min , hr zmieniajac watrosc nal
pot = map(pot, 0, 1018, 1, 60);
string1 = "sec";
val6 = pot; // val 6 przechowuje wartosc potencjimetra
val7 = 1000; // val 7 mnoznik milisekund
break;
case 2:
pot = map(pot, 0, 1018, 1, 60);
string1 = "min";
val6 = pot;
val7 = 60000;
break;
case 3:
pot = map(pot, 0, 1018, 1, 24);
string1 = "hr";
val6 = pot;
val7 = 3600000;
break;
case 4: // blokuje wartosc <=3
val = 3;
break;
}
break;
//#########################################################################################################################################################################################
// INTERVALOMETER OBLICZENIA [WARTOSC ZMIENNEJ menu = 11]
case 11:
delay (2000);
val10 = millis(); // resetuje licznik milisekund
val8 = (val6*val7); // oblicza liczbe milisekund interwalu
menu = 100;
val2 = 1;
//#########################################################################################################################################################################################
// INTERVALOMETER EKRAN WYKONAWCZY [WARTOSC ZMIENNEJ menu = 100]
case 100:
lcd.setCursor(0, 0); lcd.print(val6); // wiswietla wartosc potencjometra
lcd.setCursor(3, 0); lcd.print(string1);
lcd.setCursor(11, 0); lcd.print(F("|"));
lcd.setCursor(13 , 0); lcd.print(val2);
if (millis()-val10 > val8) {val10 = millis();val2 = val2+1;}; //sprawdza czy liczba milisekund osiagnela wartosc zadana, jezeli tak resetuje licznik i wyzwala aparat
if (val2 == 999){val2 = 0;};
// animacja paska zmienia uzycie val6 i val7
val7= val8/17;
val7 = (millis()-val10)/val7;
val5 = val7;
lcd.setCursor(val5, 1); lcd.print(F("----------------"));
break;
//#########################################################################################################################################################################################
// KONIEC INTERVALOMETER
//#########################################################################################################################################################################################
case 2:
lcd.setCursor(0, 0); lcd.print(F("2. Wyzwalanie"));
lcd.setCursor(3, 1); lcd.print(F("czujnikiem"));
break;
case 3:
menu = 2;
break;
}
//#########################################################################################################################################################################################
// WYZWALANIE MIGAWKI I FOKUS
//#########################################################################################################################################################################################
// X.shutterNow();
//#########################################################################################################################################################################################
delay(10);
}
Skontaktuj się z nami