Pripravil sem kratka navodilo za programiranje DCC servo dekoderja.
V programu je potrebno po prvem nalaganju programa, pobrisati // in še enkrat naložiti program v Arduino. Zapis v programu pred brisanjem //#define DECODER_LOADED
S tem smo omogočili delovanje dekoderja z različnimi sistemi, predvsem pa smo postavili privzete vrednosti CV v samem dekoderju.
Sedaj lahko programiramo CV-je z Multimausom ali z kakšnim drugim sistemom. Sam uporabljam za programiranje i upravljenja program Desktop Station.
Osnovna razllaga privzetih nastavitev v dekoderju.
Funkcija 0
30 Nastavitve za funkciju: 0=On/Off, 1 =Utripanje LED, 2=kontrola servo motora, 3=Dvojno utripanje LED
31 Hitrost Utripanje=Hitrost utripanja (hitreje=počasneje) , Servo=Hitrost pomika ročke servo motorja (hitreje=počasneje))
32 Začetna Pozicija za funkcijo=0 (za servo motorje je okoli 26) – začetna pozicija
33 Končna Pozicija za funkciju=1 (za servo motorje je okoli 140) – končna pozicija
34 Trenutna pozicija ali vrednost (za servo motorje uporabi začetno pozicijo)
S temi nastavitvami je korak ročke servo motorja okoli 90 stopinj. Vrednost CV-ja za celoten pomuk servo motorja je 180, kar pomeni da je sredina na 90, na mojih servo motorjih je ta vrednost 85
Še nekaj primerov iz programa
številke od 30 – 34 so za Funkcijo F0;
{30, 2}, //F0 Config 0=On/Off,1=Blink,2=Servo,3=Double LED Blink
{31, 1}, //F0 Rate Blink=Eate,PWM=Rate,Servo=Rate
{32, 28}, //F0 Start Position F0=0
{33, 140}, //F0 End Position F0=1
{34, 28}, //F0 Current Position
številke od 35 do 39 so za Funkcijo F1, prikazuje nastavitve za vklop/izklop LED diod;
{35, 0}, //F16 Config 0=On/Off,1=Blink,2=Servo,3=Double LED Blink
{36, 1}, // Rate Blink=Eate,PWM=Rate,Servo=Rate
{37, 1}, // Start Position Fx=0
{38, 4}, // End Position Fx=1
{39, 1}, // Current Position
številke od 40 do 44 so za Funkcijo F2, prikazuje Dvojno utripanje LED diod
{40, 3}, //F15 Config 0=On/Off,1=Blink,2=Servo,3=Double LED Blink
{41, 1}, // Rate Blink=Eate,PWM=Rate,Servo=Rate
{42, 1}, // Start Position Fx=0
{43, 60}, // End Position Fx=1
{44, 1}, // Current Position
Vnos začetne pozicije servo motorja na F0.
Vnos končne pozicije servo motorja na isti Funkciji.
Še ena opomba, dekoder na začetku naredi self test.
Če tega ne želite, je potrebno v programu pobrisati spodnje vrstice
for (int i=0; i < numfpins; i++) {
pinMode(fpins[i], OUTPUT);
digitalWrite(fpins[i], 0);
}
for (int i=0; i < numfpins; i++) {
digitalWrite(fpins[i], 1);
delay (tim_delay/10);
}
delay( tim_delay);
for (int i=0; i < numfpins; i++) {
digitalWrite(fpins[i], 0);
delay (tim_delay/10);
}
delay( tim_delay);