Projekt układu wyzwalania aparatów firmy Nikon za pomocą kanału podczerwieni (IR) zrealizowano wg pomysłu i rozwiązania autorstwa Bartosza Zielińskiego opublikowanego na portalu Majsterkowo.pl
int diodaIR = 8; // PIN diody IR int diodaLED = 9; // PIN diody LED const int okres_sygn_38kHz = 26; // okres trwania 1 taktu sygnału o częstotliwości 38kHz [mikrosek.] (T=1/f) // Funkcja opisująca działanie pojedynczego taktu sygnału void sygnal_38kHZ(){ digitalWrite(diodaIR, HIGH); delayMicroseconds(okres_sygn_38kHz / 2); // połowa okresu => współczynnik wypełnienia = 0,5 digitalWrite(diodaIR, LOW); delayMicroseconds(okres_sygn_38kHz / 2); } // Funkcja opisująca stan niski void stan_1(int ilosc_cykli){ for(int i = 0; i < ilosc_cykli; i++) sygnal_38kHZ(); } // Funkcja opisująca stan wysoki void stan_0(int ilosc_cykli){ delayMicroseconds(ilosc_cykli * okres_sygn_38kHz); } // Funkcja generująca sygnał wyzwalający Nikon void zrobZdjecie(){ digitalWrite(diodaLED, HIGH); // sygnalizacja LED wykonywania zdjęcia for (int i=0; i < 2; i++) { // sygnał wzrocowy ma być powtórzony 2x stan_1(76); // 76 cykli "1" stan_0(1064); // 1064 cykli "0" stan_1(15); // 15 cykli "1" stan_0(60); // 60 cykli "0" stan_1(15); // 15 cykli "1" stan_0(136); // 136 cykli "0" stan_1(15); // 15 cykli "1" stan_0(2423*2); // 2423 cykli "0" } delay(100); //trzeba było przedłużyć, gdyż czas wysyłania //informacji do aparatu był za krótki digitalWrite(diodaLED, LOW); } int button = 7; void setup() { pinMode(button, INPUT); pinMode(diodaIR, OUTPUT); pinMode(diodaLED, OUTPUT); } void loop(){ if(digitalRead(button)){ digitalWrite(diodaLED, HIGH); zrobZdjecie(); delay(400); //szybciej może aparat odmówić posłuszeństwa digitalWrite(diodaLED, LOW); } }