Witam!
Tak na wstępie, nie wiem czy dobry dział, ale...
w wolnym czasie udało mi się zrobić pilot do aparatów które obsługuje pilot serii ML-L3.
Może przyda się komuś, kto posiada podstawową znajomość elektroniki, bo koszt samego nadajnika jest naprawdę mały, częsci ok 5 zł + płytka, do tego co prawda dochodzi jeszcze mikrokontroler, ale to też nie duży wydatek rzędu 10 zł ( PIC, AVR). Co prawda nie będzie on taki mały, jak gotowy kupiony choćby na allegro, ale być może komuś umożliwi jakieś zdalne sterowanie apratu, poprzez kabel do mikrokontrolera na odległość kilkudziesięciu metrów albo i lepiej, który to z kolei będzie wyzwalał spust migawki z odległości kilku metrów bezprzewodowo ( może się przydać do fotografowania zwierząt z zostawionym gdzieś apratem-w polu widzenia) .
Poniżej zamieszczam schemat ideowy pilota, oraz kod źródłowy na mikrokontroler serii ARM7 AT91SAM7
kod źródłowy:
#define signal_freq 38000 //wave signal frequency in kHz
//-------------------------------------------------------------------------------
// Function set line in low for time in time_us
//-----------------------------------------------------------------------------------
void set_low(uint16_t time_us)
{
LED_IR_OFF;
delay_us(time_us);
}
//-----------------------------------------------------------------------------------
//Function set line in high and low for time in time_us
//-----------------------------------------------------------------------------------
void set_high(uint16_t time_us)
{
uint16_t num_period=(1000/(signal_freq/1000))+1;
uint16_t half_period=num_period/2;
num_period=time_us/num_period;
for (uint16_t j=0;j<num_period;j++)
{
LED_IR_ON;
delay_us(half_period);
LED_IR_OFF;
delay_us(half_period);
}
}
//-----------------------------------------------------------------------------------
//Function send two times a frame of data (command "take photo") for IR diod, proper to ML-L3 IR Remote (Nikon D5000, etc)
//-----------------------------------------------------------------------------------
void take_photo(void)
{
for (uint8_t i=0;i<2;i++)
{
set_high(2000);
set_low(27830);
set_high(390);
set_low(1580);
set_high(410);
set_low(3580);
set_high(400);
set_low(63200);
}
LED_IR_OFF;
}
//-----------------------------------------------------------------------------------
//Initialize function
//-----------------------------------------------------------------------------------
void init(void)
{
// enable peripheral clock for PIO controllers
AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_PIOA);
// enable reset-key on board
AT91C_BASE_RSTC->RSTC_RMR = (0xA5000000 | AT91C_RSTC_URSTEN);
//initialize IR diod
LED_IR_INIT;
}
//-----------------------------------------------------------------------------------
//Main function, which wait for press switch
//-----------------------------------------------------------------------------------
int main(void)
{
init();
for (;; )
{
if (SW1_PRESSED)
{
take_photo();
}
}
return(0);
}
Szukaj
Skontaktuj się z nami