Mündəricat:

Model Dəmiryolu - Arduino istifadə edərək DCC Komanda Stansiyası :: 3 addım
Model Dəmiryolu - Arduino istifadə edərək DCC Komanda Stansiyası :: 3 addım

Video: Model Dəmiryolu - Arduino istifadə edərək DCC Komanda Stansiyası :: 3 addım

Video: Model Dəmiryolu - Arduino istifadə edərək DCC Komanda Stansiyası :: 3 addım
Video: Arduino Dərs 1 . Arduino nədir "setup","loop","pinMode","digitalWrite" əmrləri 2024, Noyabr
Anonim
Image
Image
Arduino Kodu - Klaviatura ilə Komanda Stansiyası
Arduino Kodu - Klaviatura ilə Komanda Stansiyası

Avqust 2018-də yeniləndi-yeni Təlimatlara baxın:

28 Aprel 2016 -ı yeniləyin: İndi Command Station -a 16 iştirak / xal nəzarət qabiliyyəti. T1 - T8 açarları 'B' düyməsi ilə əldə edilə bilər T9 - T16 açarları 'C' düyməsi ilə mövcuddur

10 Mart 2016 -ı yeniləyin:

İndi Command Station -a 8 iştirak / bal nəzarət qabiliyyəti əlavə edildi. Arduino kodu, NMRA standart paketi istifadə edərək müvafiq olaraq yeniləndi (eyni zamanda Lenz / Atlas Compact məlumat paketlərinin seçilmə nəzarəti üçün).

T1 - T8 açarları 'B' düyməsi ilə mövcuddur

İstifadə olunan məlumat paketi qəbuledici sxemində və tələb olunan Arduino kodunda təlimatlara baxın.

Yeniləmə 18 Yanvar 2016:

Dövrə bir cərəyan mənası rezistoru (1k5 ohm) və kondansatör (10 uf) əlavə etdim və> 3200 mAmps pik cərəyanı aşkar edildikdə gücü kəsmək üçün Arduino kodunu dəyişdirdim. H-körpü spesifikasiyası, yükdə 1 Amper başına 377 uA bir çıxış hissi cərəyanını bildirir.

1.5 k ohm müqavimət, analog pin 6 -da bir Amp üçün 0.565 volt təmin edəcək. Analog girişdə 1023 addım ilə bu, bir Amper yükü üçün 0.565 * 1023 /5 = 116 verir.

A = 100 * (analogOxu (AN_CURRENT)) / 116; A = A * 10; (milliamplarda nəticə vermək üçün)

Milliamplarda yük cərəyanı TFT -də göstərilir

Tam 4x4 klaviatura, F1-dən F8-ə qədər funksiyaları və '#' düyməsiylə başqa 10 lokosu (1-19) (loco 10-dan başlayan rəqəmsal düymələrə 10 əlavə etmək üçün) daxildir.

Arduino koduna təlimat baytları üçün NMRA standartı daxildir.

Linkə baxın

www.nmra.org/sites/default/files/s-9.2.1_20…

(səhifə 6 xüsusi əhəmiyyət kəsb edir)

Paketlər sürət addımlarının sayına, uzun / qısa ünvana və Function Group təlimatlarına uyğun olaraq düzülmüşdür.

Bütün təlimat baytlarının önündə '1' bit 11111111 (və ya boş paket) ön müqabili, ardınca;

məs. 4 baytlı ünvan 0 00000011 0 00111111 0 10000011 0 10111111

loco 3, 128 sürət addımlarına, irəli istiqamətə və sürət addımına 3 bərabərdir (son bayt XOR səhv yoxlamasıdır)

məsələn, 3 baytlıq ünvan 0 00000011 0 10010000 0 10110011

loco 3, funksiya qrupu 1, FL işıqları üstəgəl XOR baytına bərabərdir (a '0' bit hər baytı ayırır)

Loco 12 üçün əlavə edilmiş nümayiş videosuna baxın.

F1 - F8 funksiyaları 'A' düyməsi, DIR ('*' düymə = istiqamət) FL ('0' düyməsi = işıqlar) və '#' düymələri vasitəsi ilə mövcuddur. 'D' düyməsi indi 'Təcili STOP' üçün istifadə olunur.

DCC məlumat mənbələri və Arduino kodu üçün internetdəki müxtəlif provayderlər sayəsində.

Xüsusilə, bu layihə Michael Blankdan və 'Simple DCC - bir komanda stansiyasından' ilham aldı.

www.oscale.net/en/simpledcc

4x4 Matrix Array 16 Key Membran Switch Keypad (ebay) 1.75 AZN

2.2 düym 240x320 Serial SPI TFT LCD Ekran Modulu (ebay) 7,19 AZN

UNIVERSAL 12V 5A 60W GÜÇ KAYNAĞI AC ADAPTÖRÜ (ebay) £ 6.49

CH340G 5V 16M uyğun ATmega328P (ebay) ilə Arduino üçün Nano V3.0 2 x 3.30 £ 6.60

Arduino R3 (ebay) üçün LMD18200T Sürücü Modulu 6.99 funt sterlinq

Bağlayıcılar, tel, vero lövhəsi, potansiyometr təxminən 3.50 funt sterlinq

Ümumi £ 32.52

Tft ekranı və 1 x nano olmayan əsas komanda stansiyası 22.03 funt sterlinq olardı

[Qeyd: TFT ekranına bir yaddaş kartı əlavə etmək və seçilmiş mühərriklərin şəkillərini göstərmək üçün kodu dəyişdirmək mümkündür, baxmayaraq ki, eskiz üçün daha çox yaddaş yaratmaq üçün kitabxana kodlarının redaktə edilməsi lazımdır. TFT Arduino Nano üçün hazırkı eskiz ölçüsü maksimumdur]

Michael Blank tərəfindən yazılmış orijinal Arduino kodu, bir funksiya idarəsi, klaviaturası və ekranı olmadan irəli / geri çevirən bir mühərrik üçündür.

Kodu 1 - 19 mühərrik, bir ekran, istiqamət, işıqlar, 8 funksiya, təcili dayanma və avtomatik cərəyan limiti daxil etmək üçün dəyişdirdim.

LMD18200T körpüsü 3 amperə qədər yük daşıya bilir ki, bu da G miqyaslı (bağ qatarları) daxil olmaqla bütün tərəzi üçün əlverişlidir. Şəbəkə elektrik təchizatı və elektronika, yalnız hava şəraitinə davamlı edə bilmədiyiniz təqdirdə, daxili istifadə üçün uyğundur. Yaz evində, dəmir yolu ilə telin divardan keçərək yola çıxan komanda məntəqəsi var.

Addım 1: Arduino Kodu - Klaviatura ilə Komanda Stansiyası

Arduino kodunun naqillərə uyğun gəlmədiyi dövrə diaqramında 2 səhv göstərdiyinə görə tvantenna2759 -a təşəkkür edirəm, indi yeniləndi (21 Oktyabr 2017).

İndi Komanda Stansiyasına 16 döngə əlavə edildi. Arduino Mini Pro modulundan istifadə edərək seçmə / xal dövrə diaqramında göstərişlərə baxın.

İştirakçılığa nəzarət də daxil olmaqla dəyişdirilmiş kod aşağıda verilmişdir.

Əsas Aksesuar dekoder paketi belədir: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEE 1 Lenz (Compact / Atlas) tərəfindən xal nəzarət üçün istifadə olunan paketi təhlil edərək, bayt 1 və 2 üçün aşağıdakı ikili paket formatını istifadə etdim: tunAddr = 1 Turnir 1a: 1000 0001 1111 1000 / Katılım 1b: 1000 0001 1111 1001 İştirak 2a: 1000 0001 1111 1010 / İştirak 2b: 1000 0001 1111 1011 İştirak 3a: 1000 0001 1111 1100 / İştirak 3b: 1000 0001 1111 1101 Katılım 4a: 1000 0001 1111 1110 / İştirak 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- İştirak 5a: 1000 0010 1111 1000 / İştirak 5b: 1000 0010 1111 1001 İştirak 6a: 1000 0010 1111 1010 / İştirak 6b: 1000 0010 1111 1011 İştirak 7a: 1000 0010 1111 1100 / İştirak 7b: 1000 0010 1111 1101 İştirak 8a: 1000 0010 1111 1110 / İştirak 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- İştirak 9a: 1000 0011 1111 1000 / İştirak 9b: 1000 0011 1111 1001 və s. ………

Dəyişdirilmiş koddan çıxarış: Daha 2 'struct' mesajı əlavə edinvoid_dun1 (struct Message & x) {x.data [0] = 0x81; // aksesuar dexoderi 0x80 və ünvan 1 x.data [1] = 0; }

void editor_tun2 (struct Message & x) {x.data [0] = 0x82; // aksesuar dexoderi 0x80 və ünvan 2 x.data [1] = 0; }

İştirakçılar üçün yeni boşluq əlavə edin: boolean read_turnout () {delay (20);

boolean dəyişdi_t = yanlış; get_key ();

əgər (key_val> = 101 && key_val <= 404 && turn == 1) {

məlumat = 0xf8; // = ikili 1111 1000

düzəliş_tun1 (msg [1]);

}

əgər (key_val> = 505 && key_val <= 808 && turn == 1) {

məlumat = 0xf8; // = ikili 1111 1000

dəyişiklik_tun2 (msg [1]);

}

əgər (key_val == 101 && turn == 1) {

əgər (tun1 == 1) {

məlumatlar | = 0; // t1a

dəyişdi_t = doğru;}

əgər (tun1 == 0) {

məlumatlar | = 0x01; // t1b

dəyişdi_t = doğru;}

}

əgər (key_val == 202 && turn == 1) {

əgər (tun2 == 1) {

məlumatlar | = 0x02; // t2a

dəyişdi_t = doğru;

}

əgər (tun2 == 0) {

məlumatlar | = 0x03; // t2b

dəyişdi_t = doğru; }

}

əgər (key_val == 303 && turn == 1) {

əgər (tun3 == 1) {

məlumatlar | = 0x04; // t3a

dəyişdi_t = doğru;

}

əgər (tun3 == 0) {

məlumatlar | = 0x05; // t3b

dəyişdi_t = doğru;}

}

əgər (key_val == 404 && turn == 1) {

əgər (tun4 == 1) {

məlumatlar | = 0x06; // t4a

dəyişdi_t = doğru;

}

əgər (tun4 == 0) {

məlumatlar | = 0x07; // f4b

dəyişdi_t = doğru;}

}

əgər (key_val == 505 && turn == 1) {

əgər (tun5 == 1) {

məlumatlar | = 0; // t5a

dəyişdi_t = doğru;

}

əgər (tun5 == 0) {

məlumatlar | = 0x01; // t5b

dəyişdi_t = doğru;}

}

və s ………………….

Addım 2: Arduino Kodu - TFT Ekranı

Arduino Kodu - TFT Ekranı
Arduino Kodu - TFT Ekranı
Arduino Kodu - TFT Ekranı
Arduino Kodu - TFT Ekranı
Arduino Kodu - TFT Ekranı
Arduino Kodu - TFT Ekranı
Arduino Kodu - TFT Ekranı
Arduino Kodu - TFT Ekranı

Ekran dövrəsi, 16 döngənin vəziyyətini göstərmək üçün dəyişdirilmiş bir kodla eyni qalır. Qeyd: Kitabxana kodu, yeni xüsusiyyətlər üçün az yer buraxaraq, eskiz kod yaddaşının demək olar ki, hamısını tutur. Burada istifadə olunan TFT üçün daha səmərəli bir kitabxana faylı varsa, mənə bildirin.

Addım 3: İştirak Nəzarətçisi

Dönüş Nəzarətçisi
Dönüş Nəzarətçisi
Dönüş Nəzarətçisi
Dönüş Nəzarətçisi

İştirak / Nöqtələr nəzarətçisinin necə ediləcəyi ilə bağlı təlimatlara baxın.

Tam dövrə 16 nöqtəni və işıqlar, səslər, dönər masası və s. Kimi 15 aksesuarı idarə edir.

Tövsiyə: