Cześć, dzisiaj przysiadłem nad tym i w zasadzie ogarnąłem chyba wszystko co jest mi na ten moment potrzebne.
Właśnie skończyłem pisanie kodu na arduino tzn na razie jedynie dekodującego.
Wpinam się w linię DATA wychodzącą z odbiornika xtr-16 sam odbiornik ma 4 pinowe złącze (+5V, SYNCRO,DATA,GND) synchro odpowiada za samo wyzwolenie błysku czyli pojawia się tam stan wysoki w momencie robienia zdjęcia.
Wszystko co mierzę występuje na pinie DATA. Sam odbiorniczek już wie w jakiej jest grupie tzn fizycznie nastawia się to na odbiorniku pokrętełkiem grupę którą ma odbierać więc na pinie DATA raczej grupa jest już pomijana.
Pierwsze bity odpowiadają za właczenie lub wyłączenie sygnału dźwiękowego po naładowaniu lampy oraz włączenie lub wyłączenie światła ciągłego w lampie.
Działa to na zasadzie jeśli bit ma wartość 0 to zapal żarówkę jeśli wartość 1 to zgaś żarówkę.
Potem lecą same jedynki, możliwe że tu lecą jakieś dodatkowe ustawienia np zoom lampy błyskowej bo niektóre lampy na aparat mają taką funkcję.
Na przebiegach nie ma wszystkich możliwości ustawień bo za dużo czasu by zeszło a i tak pewnie bym coś pominął ale żadne inne bity nie zmieniają się przy innych wartościach mocy.
Napisałem program który działa dokładnie tak jak pisałem czyli wyzwalanie przerwania zboczem opadającym i w przerwaniu po chamsku delay(1) odczyt stanu na pinie DATA i jeśli w tym miejscu stan = 1 to bit ma wartość 1 a jeśli 0 to wartość 0
całość za pomocą globalnej zmiennej "licznik" wpisuję bit po bicie do 2 zmiennych zależnie od wartości licznika czyli bity odpowiedzialne za światło ciągłe i brzęczyk ładuję do jednej zmiennej a bity które zmieniają się podczas zmian nastaw mocy do innej zmiennej.
Potem za pomocą funkcji if porównuję wartości zmiennej z ręcznie wklepanymi wartościami dla danych nastaw mocy (porównuję z wzorcem). Na razie wyrzucam na porcie szeregowym poszczególne przypadki tzn "moc = 1/1" albo "moc = 1/8"
czyli każda nastawa mocy ma swoją funkcję if w kodzie.
Na pewno nie jest to optymalne rozwiązanie ale wszystko się wyrabia czasowo i póki co nie widzę błędów odczytu.
Dołączę schemat elektryczny jak to mam połączone.
Testowo w kodzie w funkcji odczytującej umieściłem fragment który po wykryciu przerwania wystawia stan wysoki na pinie 4 w arduino a po dokonaniu odczytu kasuje stan wysoki co pozwoliło mi sprawdzić w którym miejscu następuje odczyt. kanał 1 analizatora podpięty pod linię data, kanał 2 pod wyjście D4 z arduino. Screenów niestety nie zrobiłem ale czasowo odczyty zgrywały się idealnie tak że nawet jak coś się wahnie lekko z czasem odczytu to nie powinno być błędu. Na szczęście jest to wolna i niewiele zawierająca transmisja.
W sumie temat albo do zamknięcia albo mogę dorzucać jak już połączę wszystko finalnie, nie znalazłem w internecie żeby ktoś to rozgryzł więc może ktoś też skorzysta
Co do ilości kombinacji to moc jest regulowana od 1/1 do 1/128 lub od 1/1 do 1/256 z krokiem 0,3 lub 0,1
mnie interesuje skok co 0,3 więc w tryb ze skokiem co 0,1 nawet nie wchodziłem. Przy skoku co 0,3 jest jak dobrze liczę 22 możliwe ustawienia mocy