Mundarija:

Model temir yo'li - Arduino yordamida DCC qo'mondonlik stantsiyasi :: 3 qadam
Model temir yo'li - Arduino yordamida DCC qo'mondonlik stantsiyasi :: 3 qadam

Video: Model temir yo'li - Arduino yordamida DCC qo'mondonlik stantsiyasi :: 3 qadam

Video: Model temir yo'li - Arduino yordamida DCC qo'mondonlik stantsiyasi :: 3 qadam
Video: Использование Melexis MLX90614 Инфракрасный термометр с Arduino 2024, Iyul
Anonim
Image
Image
Arduino kodi - klaviatura bilan buyruq stantsiyasi
Arduino kodi - klaviatura bilan buyruq stantsiyasi

2018 yil avgustda yangilangan-yangi ko'rsatmalarni ko'ring:

2016 yil 28 -aprelda yangilang: Endi qo'mondonlik stantsiyasida 16 ishtirokchi / punktni boshqarish qobiliyati. T1 - T8 burilish moslamalari "B" tugmasi orqali mavjud T9 - T16 burilish moslamalari "C" tugmasi orqali mavjud.

Yangilanish 2016 yil 10 -mart:

Endi qo'mondonlik stantsiyasiga 8 ta qatnashish / punktni boshqarish qobiliyati qo'shildi. Arduino kodi mos ravishda burilishlar uchun NMRA standart paketi yordamida yangilandi (shuningdek, burilishni boshqarish uchun Lenz / Atlas Compact ma'lumotlar paketlarini o'rganishga asoslangan).

T1 - T8 burilish moslamalari "B" tugmasi orqali mavjud

Qo'llaniladigan ma'lumotlar paketini qabul qilish sxemasi va Arduino kodi bo'yicha ko'rsatmalarga qarang.

2016 yil 18 -yanvarda yangilangan:

Men kontaktlarning zanglashiga qarshilik rezistorini (1k5 ohm) va kondansatörni (10 uf) qo'shdim va Arduino kodini o'zgartirib, 3200 mAmps yuqori oqim aniqlanganda quvvatni uzib qo'ydim. H-ko'prigi spetsifikatsiyasi yukning 1 amperiga 377 uA chiqish sezuvchanlik oqimini bildiradi.

1,5 k ohmli rezistor analog pin 6 da har bir Amper uchun 0,565 voltni etkazib beradi. Analog kirishda 1023 qadam bo'lsa, bu har bir yuk uchun 0,565 * 1023 /5 = 116 ni beradi.

A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (milliamperda natija berish uchun)

Milliampdagi yuk oqimi TFTda ko'rsatiladi

To'liq 4x4 klaviatura F1 dan F8 gacha bo'lgan funktsiyalarni va "#" tugmachasi orqali boshqa 10 ta lokusni (1-19) o'z ichiga oladi (10-raqamdan boshlab raqamli tugmachalarga 10 qo'shish uchun).

Arduino kodi buyruqlar baytlari uchun NMRA standartini o'z ichiga oladi.

Havolani ko'ring

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

(6 -sahifa alohida ahamiyatga ega)

Paketlar tezlik soni, uzoq / qisqa manzil va Function Group ko'rsatmalariga muvofiq joylashtirilgan.

Barcha buyruqlar baytlari oldidan 11111111 (yoki bo'sh paket) bitining '1' old qismi qo'yiladi;

masalan 4 baytli manzil 0 00000011 0 00111111 0 10000011 0 10111111

3, 128 tezlik qadamlari, oldinga yo'nalish va 3 -qadamga teng (oxirgi bayt XOR xato tekshiruvi)

masalan, 3 baytli manzil 0 00000011 0 10010000 0 10110011

loco 3 ga teng, funktsiya guruhi 1, FL chiroqlari yoniq va XOR bayt (a '0' bit har baytni ajratadi)

Loko 12 uchun ilova qilingan videoni ko'ring.

F1 - F8 funktsiyalari 'A' tugmasi, DIR ('*' tugma = yo'nalish) FL ('0' tugmachasi = chiroqlar) va '#' tugmachalari orqali raqamli klaviaturada 10 dan 19 gacha bo'lgan joylarni beradi. "D" tugmasi endi "Favqulodda to'xtatish" uchun ishlatiladi.

DCC ma'lumot manbalari va Arduino kodlari uchun Internetdagi turli provayderlarga rahmat.

Xususan, ushbu loyiha Maykl Blank va uning "Oddiy DCC - qo'mondonlik stantsiyasi" dan ilhomlangan.

www.oscale.net/en/simpledcc

4x4 matritsali massiv 16 kalitli membranali kalitli klaviatura (ebay) 1,75 funt

2,2 dyuymli 240x320 seriyali SPI TFT LCD displey moduli (ebay) 7,19 funt

UNIVERSAL 12V 5A 60W quvvat manbai AC adapteri (ebay) £ 6.49

Nano V3.0 Arduino uchun CH340G 5V 16M mos keladigan ATmega328P (ebay) bilan 2 x 3,30 funt = 6,60 funt

Arduino R3 (ebay) uchun LMD18200T dvigatel drayveri moduli 6,99 funt

Ulagichlar, sim, vero taxtasi, potentsiometr taxminan 3,50 funt

Jami 32,52 funt

Tft ekran va 1 x nano bo'lmagan asosiy buyruq stantsiyasi 22,03 funtni tashkil qiladi

[Eslatma: TFT displeyiga xotira kartasini qo'shish va tanlangan dvigatellarning tasvirlarini ko'rsatish uchun kodni o'zgartirish mumkin, lekin eskiz uchun ko'proq xotira yaratish uchun kutubxona kodlarini o'zgartirish kerak. Hozirgi eskiz hajmi Arduino Nano TFT uchun maksimal darajada]

Maykl Blank tomonidan ishlab chiqarilgan Arduino kodi bitta dvigatel uchun mo'ljallangan, faqat oldinga / orqaga, hech qanday funktsiyani boshqarish, klaviatura va displeysiz.

Men kodni 1 - 19 ta dvigatel, displeyli ekran, yo'nalish, chiroqlar, 8 ta funktsiya, favqulodda to'xtash va avtomatik oqim chegarasini o'z ichiga olgan holda o'zgartirdim.

LMD18200T ko'prigi 3 ampergacha yuk ko'tarishi mumkin, bu uni G shkalasi (bog 'poyezdlari), shu jumladan, barcha tarozilar uchun mos qiladi. Elektr ta'minoti va elektr jihozlari, agar siz ob -havo sharoitlarini isbotlay olmasangiz, bino ichida foydalanish uchun javob beradi. Menda yozgi uyda temir yo'lni ulash simlari devor orqali yo'lga chiqib ketadigan qo'mondonlik stantsiyasi bor.

1 -qadam: Arduino kodi - Klaviatura bilan buyruq stantsiyasi

Arduino kodi simlarga mos kelmaydigan elektron diagrammada ikkita xatoni ko'rsatgani uchun tvantenna2759 ga rahmat aytaman, hozir yangilandi (2017 yil 21 oktyabr).

Endi qo'mondonlik stantsiyasiga 16 ta burilish qo'shildi. Arduino Mini Pro moduli yordamida burilish / ochilish sxemasida ko'rsatmalarni ko'ring.

O'zgartirilgan kod, shu jumladan qatnashish nazoratini o'z ichiga oladi.

Asosiy aksessuarlarni dekoder to'plami: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEE 1 Lenz (Compact / Atlas) tomonidan paketlarni tahlil qilishda men 1 va 2 baytlar uchun quyidagi ikkilik paket formatidan foydalandim: tunAddr = 1 Turnir 1a: 1000 0001 1111 1000 / Saylov 1b: 1000 0001 1111 1001 2 -burilish: 1000 0001 1111 1010 / 2b: 1000 0001 1111 1011 Saylov 3a: 1000 0001 1111 1100 /3 -burilish: 1000 0001 1111 1101 Saylov 4a: 1000 0001 1111 1110 / Ishtirok 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- 5a ishtirokchi: 1000 0010 1111 1000 / 5b ishtirok: 1000 0010 1111 1001 Saylov 6a: 1000 0010 1111 1010 / 6b ishtirok: 1000 0010 1111 1011 7a ishtirok: 1000 0010 1111 1100 / Ishtirokchilar 7b: 1000 0010 1111 1101 8a ishtirokchilari: 1000 0010 1111 1110 / Ishtirokchilar 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- 9a ishtirokchi: 1000 0011 1111 1000 / 9b ishtirok: 1000 0011 1111 1001 va boshqalar ………

O'zgartirilgan koddan ko'chirma: yana ikkita "struct" xabarini qo'shish // 0x80 qo'shimcha dekoder va manzil 1 x.data [1] = 0; }

bekor_tun2 (tuzilgan Xabar va x) {x.data [0] = 0x82; // 0x80 qo'shimcha dekoder va manzil 2 x.data [1] = 0; }

Qaytish uchun yangi bo'sh joy qo'shing: boolean read_turnout () {delay (20);

boolean o'zgartirildi_t = noto'g'ri; get_key ();

agar (key_val> = 101 && key_val <= 404 && turn == 1) {

ma'lumotlar = 0xf8; // = ikkilik 1111 1000

o'zgartirish_tun1 (xabar [1]);

}

agar (key_val> = 505 && key_val <= 808 && turn == 1) {

ma'lumotlar = 0xf8; // = ikkilik 1111 1000

o'zgartirish_tun2 (xabar [1]);

}

agar (key_val == 101 && turn == 1) {

agar (tun1 == 1) {

ma'lumotlar | = 0; // t1a

o'zgartirilgan_t = to'g'ri;}

agar (tun1 == 0) {

ma'lumotlar | = 0x01; // t1b

o'zgartirilgan_t = to'g'ri;}

}

agar (key_val == 202 && turn == 1) {

agar (tun2 == 1) {

ma'lumotlar | = 0x02; // t2a

o'zgartirilgan_t = rost;

}

agar (tun2 == 0) {

ma'lumotlar | = 0x03; // t2b

o'zgartirilgan_t = rost; }

}

agar (key_val == 303 && turn == 1) {

agar (tun3 == 1) {

ma'lumotlar | = 0x04; // t3a

o'zgartirilgan_t = rost;

}

agar (tun3 == 0) {

ma'lumotlar | = 0x05; // t3b

o'zgartirilgan_t = to'g'ri;}

}

agar (key_val == 404 && turn == 1) {

agar (tun4 == 1) {

ma'lumotlar | = 0x06; // t4a

o'zgartirilgan_t = rost;

}

agar (tun4 == 0) {

ma'lumotlar | = 0x07; // f4b

o'zgartirilgan_t = to'g'ri;}

}

agar (key_val == 505 && turn == 1) {

agar (tun5 == 1) {

ma'lumotlar | = 0; // t5a

o'zgartirilgan_t = rost;

}

agar (tun5 == 0) {

ma'lumotlar | = 0x01; // t5b

o'zgartirilgan_t = to'g'ri;}

}

va boshqalar ………………….

2 -qadam: Arduino kodi - TFT displeyi

Arduino kodi - TFT displeyi
Arduino kodi - TFT displeyi
Arduino kodi - TFT displeyi
Arduino kodi - TFT displeyi
Arduino kodi - TFT displeyi
Arduino kodi - TFT displeyi
Arduino kodi - TFT displeyi
Arduino kodi - TFT displeyi

Displey sxemasi 16 ta burilish holatini ko'rsatish uchun o'zgartirilgan kod bilan bir xil bo'lib qoladi. Eslatma: kutubxona kodi deyarli barcha eskizlar xotirasini egallaydi va yangi imkoniyatlar uchun joy qoldirmaydi. Agar kimdir bu erda ishlatiladigan TFT uchun yanada samarali kutubxona fayliga ega bo'lsa, menga xabar bering.

3 -qadam: Qatnashish nazorati

O'tish boshqaruvchisi
O'tish boshqaruvchisi
O'tish boshqaruvchisi
O'tish boshqaruvchisi

Qatnashish / ballarni boshqarish moslamasini qanday qilish bo'yicha ko'rsatmalarni ko'ring.

To'liq elektron 16 nuqta va 15 aksessuarni boshqaradi, masalan, chiroqlar, tovushlar, aylanuvchi stol va boshqalar.

Tavsiya: