Czasem małe rzeczy sprawiają dużą przyjemność.
Kupiłem (dokładniej - mój brat mi kupił) za 10zł chińskiego pilota do nikona D80. Okazuje się że pilot do tego aparatu to zwykły pilot na IR i kod już dawno został przez nich skopiowany. Sam pilot działa na guzik zwierający dwie nóżki scalaka o nieznanej mi nazwie, jako że została skrzętnie zmyta, szkoda bo z wiedzą jaki to scalak zabawa poszła by szybciej.
A zabawa była następująca - trzeba zrobić timer do timelaps'ów. Czemu zrobić, a nie kupić? Bo równie chiński timer jest odpowiednio droższy, a ja zawsze mam Atmegę8 pod ręką i... mam ochotę się pobawi :)
Od strony hardvare'u sytuacja wyglądała następująco:
→ Zasilanie 3V → Podczepiłem się od mojej płytki z zasilaniem 3.2V (Wahania
napięcia baterii są większe niż to.)
→ Zidentyfikowałem kierunek napięcia na nóżkach scalaka → Zdarłem soldermaskę → Wlutowałem p-mosfet. → Wyprowadziłem bramkę.
→ Zacisnąłem 3 konektorki - viola, mogę sterować tym ustrojstwem choćby attinym13.
By sprawdzić czy działa podpiąłem się do zasilania, załączyłem mosfeta i nakierowałem kamerę w komórce na diodę IR - okazuje się że kamera w telefonie spokojnie odbierze ten sygnał "na niebiesko".
Zostaje jeszcze kawałek softu. Odmierzanie czasu - zwykły _delay_ms(n) i wyświetlanie "Pstryk!" na ekranie - ot taki bajer ;] Naprawdę proste a cieszy, ustawienia jak widać są na zdjęcie co 1.5 min , w wolnym czasie dodam jeszcze potencjometr, do regulacji czasu (a wtedy same odmierzanie czasu będzie na timerze 1 lub 2. )
#include
<avr/io.h>
#include
<avr/interrupt.h>
#include
<util/delay.h>
#include
"ascii.h"
#include
"spi.h"
#include
"n5110.h"
#include
"adc.h"
#define
on(n) PORTC|=(1<<n)
#define
off(n) PORTC&=~(1<<n)
int
main()
{
DDRC|=(1<<PC5);
PORTC&=~(1<<PC5);
spi_init();
lcd_init();
lcd_place(0,0);
while(1)
{
lcd_clear();
lcd_place(0,3);
lcd_string("Pstryk!
");
on(PC5);
_delay_ms(200);
off(PC5);
lcd_clear();
_delay_ms(900);
_delay_ms(400);
}
}
Zadziwiające jest to że nie znalazłem w necie nikogo kto zrobił by to wcześniej i się pochwalił. Nawet za pomocą arduino i przekaźnika :P