Სარჩევი:

მოდელის რკინიგზა - DCC სარდლობის სადგური Arduino– ს გამოყენებით 3 ნაბიჯი
მოდელის რკინიგზა - DCC სარდლობის სადგური Arduino– ს გამოყენებით 3 ნაბიჯი

ვიდეო: მოდელის რკინიგზა - DCC სარდლობის სადგური Arduino– ს გამოყენებით 3 ნაბიჯი

ვიდეო: მოდელის რკინიგზა - DCC სარდლობის სადგური Arduino– ს გამოყენებით 3 ნაბიჯი
ვიდეო: The Missouri Pacific hopper train passes the parked J diesel #model #fun #train #railway #dcc #texas 2024, ივლისი
Anonim
Image
Image
არდუინოს კოდი - სარდლობის სადგური კლავიატურით
არდუინოს კოდი - სარდლობის სადგური კლავიატურით

განახლებულია 2018 წლის აგვისტოში-იხილეთ ახალი ინსტრუქცია:

განახლება 2016 წლის 28 აპრილი: ახლა 16 მონაწილეობა / ქულების კონტროლის შესაძლებლობა სარდლობის სადგურზე. ამომრჩეველი T1 - T8 ხელმისაწვდომია "B" გასაღებით

განახლება 2016 წლის 10 მარტი:

ახლა დაემატა 8 მონაწილეობის / პუნქტის კონტროლის შესაძლებლობა სარდლობის სადგურს. Arduino კოდი შესაბამისად განახლდა NMRA სტანდარტული პაკეტის გამოყენებით შემსრულებლებისათვის (ასევე დაფუძნებულია Lenz / Atlas Compact მონაცემთა პაკეტების კვლევაზე ჩართულობის კონტროლისათვის).

ამომრჩეველთა რაოდენობა T1 - T8 ხელმისაწვდომია 'B' ღილაკის საშუალებით

იხილეთ ინსტრუქცია მონაცემთა პაკეტის მიმღების სქემის შესახებ და საჭიროა Arduino კოდი.

განახლება 2016 წლის 18 იანვარი:

მე დავამატე მიმდინარე გრძნობის რეზისტორი (1k5 ohm) და კონდენსატორი (10 uf) წრედში და შევცვალე Arduino კოდი, რომ შეწყვიტოს ენერგია, როდესაც პიკის დენი აღემატება 3200 mAmps. H- ხიდის სპეციფიკაში ნათქვამია გამომავალი გრძნობის დენი 377 uA 1 Amp დატვირთვაში.

1.5 k ohm რეზისტორი აწვდის 0.565 ვოლტს Amp– ზე ანალოგიურ პინზე 6. ანალოგურ შეყვანის 1023 საფეხურით, ეს იძლევა 0.565 * 1023 /5 = 116 თითო Amp დატვირთვას.

A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (მილიამპერებში შედეგის მისაღწევად)

მილიამპერებში დატვირთვის დენი ნაჩვენებია TFT- ზე

სრული 4x4 კლავიატურა მოიცავს F1- დან F8 ფუნქციებს და კიდევ 10 ლოკოს (1-19) '#' ღილაკის საშუალებით (რიცხვითი კლავიშების დამატება 10 ლოკოდან 10).

არდუინოს კოდი შეიცავს NMRA სტანდარტს ინსტრუქციის ბაიტებისთვის.

იხილეთ ბმული

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

(გვერდი 6 განსაკუთრებით აქტუალურია)

პაკეტები განლაგებულია სიჩქარის საფეხურების, გრძელი / მოკლე მისამართისა და ფუნქციური ჯგუფის ინსტრუქციის შესაბამისად.

ყველა ინსტრუქციის ბაიტს წინ უსწრებს '1' ბიტიანი პრეამბულა 11111111 (ან უსაქმური პაკეტი) რასაც მოჰყვება;

მაგალითად. 4 ბაიტიანი მისამართი 0 00000011 0 00111111 0 10000011 0 10111111

უდრის ლოკო 3 -ს, 128 სიჩქარის საფეხურს, წინ მიმართულებას და სიჩქარის საფეხურს 3 (ბოლო ბაიტი არის შეცდომის შემოწმება XOR)

მაგ. 3 ბაიტიანი მისამართი 0 00000011 0 10010000 0 10110011

უტოლდება ლოკო 3, ფუნქციის ჯგუფი 1, FL განათება პლუს XOR ბაიტი ('0' ბიტი ჰყოფს თითოეულ ბაიტს)

იხილეთ თანდართული სადემონსტრაციო ვიდეო loco 12 -ისთვის.

ფუნქციები F1 - F8 ხელმისაწვდომია "A" გასაღებით, DIR ('*' გასაღები = მიმართულება) FL ('0' გასაღები = განათება) და გასაღები '#' იძლევა ლოკუსებს 10 -დან 19 -მდე ციფრულ კლავიატურაზე. "D" გასაღები გამოიყენება "გადაუდებელი გაჩერების" მიზნით.

მადლობა სხვადასხვა პროვაიდერს ინტერნეტში DCC ინფორმაციის წყაროებისა და Arduino კოდისათვის.

კერძოდ, ეს პროექტი შთაგონებულია მაიკლ ბლანკით და მისი "Simple DCC - command station"

www.oscale.net/en/simpledcc

4x4 მატრიცული მასივი 16 გასაღები მემბრანული გადამრთველი კლავიატურა (ebay) £ 1.75

2.2 დიუმიანი 240x320 სერიული SPI TFT LCD ჩვენების მოდული (ebay) 19 7.19

UNIVERSAL 12V 5A 60W POWER SUPPLY AC ADAPTER (ebay) 49 6.49

ნანო V3.0 არდუინოსთვის CH340G 5V 16M თავსებადი ATmega328P (ebay) 2 x £ 3.30 = 60 6.60

საავტომობილო დრაივერის მოდული LMD18200T Arduino R3– სთვის (ebay) 6.99 ფუნტი

კონექტორები, მავთულები, ვერო დაფა, პოტენომეტრი დაახლოებით 3.50 ფუნტი

სულ 32.52 ფუნტი

ძირითადი ბრძანების სადგური tft ეკრანისა და 1 x ნანოს გარეშე იქნება 22.03 ფუნტი

[შენიშვნა: შესაძლებელია მეხსიერების ბარათის დამატება TFT ეკრანზე და კოდის შეცვლა შერჩეული ძრავების გამოსახატად, თუმცა ბიბლიოთეკის კოდები უნდა შეიცვალოს, რათა შეიქმნას მეტი მეხსიერება ესკიზისთვის. ესკიზის მიმდინარე ზომა მაქსიმალურია TFT Arduino Nano– სთვის]

მაიკლ ბლანკის ორიგინალური Arduino კოდი იყო ერთი ძრავისთვის, წინ / უკან მხოლოდ ფუნქციის კონტროლის, კლავიატურის და ეკრანის გარეშე.

მე შევცვალე კოდი, რომელიც მოიცავს 1 - 19 ძრავას, ჩვენების ეკრანს, მიმართულებას, განათებას, 8 ფუნქციას, გადაუდებელ გაჩერებას და ავტომატური დენის ლიმიტს.

LMD18200T ხიდს შეუძლია გაუძლოს 3 ამპერს, რაც მას შესაფერისია ყველა მასშტაბისთვის, მათ შორის G- სკალისთვის (ბაღის მატარებლები). მაგისტრალური ელექტრომომარაგება და ელექტრონიკა განკუთვნილია შიდა გამოყენებისთვის მხოლოდ იმ შემთხვევაში, თუ თქვენ არ შეძლებთ ამინდის მტკიცებულებას. მე მაქვს სარდლობის სადგური საზაფხულო სახლში, სადაც სარკინიგზო ხაზები კედლის გავლით გადის ტრასაზე.

ნაბიჯი 1: Arduino კოდი - ბრძანების სადგური კლავიატურით

მადლობას ვუხდი tvantenna2759- ს სქემის დიაგრამაში 2 შეცდომის აღნიშვნისათვის, სადაც Arduino კოდი არ ემთხვეოდა გაყვანილობას, რომელიც ახლა განახლებულია (21 ოქტომბერი 2017 წ.).

ახლა დაემატა 16 ამომრჩეველი სარდლობის სადგურს. იხილეთ ინსტრუქცია ჩართულობის / ქულების მიკროსქემის დიაგრამაზე Arduino Mini Pro მოდულის გამოყენებით.

შეცვლილი კოდი ჩართულობის კონტროლის ჩათვლით თან ერთვის ქვემოთ.

ძირითადი აქსესუარების დეკოდირების პაკეტი არის: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 ქულების კონტროლისთვის ლენზის მიერ გამოყენებული კომპაქტური / ატლასიდან გაანალიზებული მე გამოვიყენე შემდეგი ორობითი პაკეტის ფორმატი 1 და 2 ბაიტებისთვის: tunAddr = 1 გამოსვლა 1a: 1000 0001 1111 1000 / ამომრჩეველთა 1 ბ: 1000 0001 1111 1001 მონაწილეობა 2 ა: 1000 0001 1111 1010 / აქტივობა 2 ბ: 1000 0001 1111 1011 ამომრჩეველი 3 ა: 1000 0001 1111 1100 / აქტივობა 3 ბ: 1000 0001 1111 1101 ამომრჩეველი 4 ა: 1000 0001 1111 1110 / აქტივობა 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- ------------------------------------------------------ ----------------- მონაწილეობა 5 ა: 1000 0010 1111 1000 / აქტივობა 5 ბ: 1000 0010 1111 1001 აქტივობა 6 ა: 1000 0010 1111 1010 / ამომრჩეველი 6 ბ: 1000 0010 1111 1011 ამომრჩეველი 7 ა: 1000 0010 1111 1100 / მონაწილეობა 7 ბ: 1000 0010 1111 1101 ამომრჩეველი 8 ა: 1000 0010 1111 1110 / ამომრჩეველი 8 ბ: 1000 0010 1111 1111 ----------------------- ------------------------------------------------------ -------------------------------------- აქტივობა 9 ა: 1000 0011 1111 1000 / აქტივობა 9 ბ: 1000 0011 1111 1001 და სხვ. ………

ამონაწერი მოდიფიცირებული კოდიდან: დაამატეთ კიდევ 2 'სტრუქტური' შეტყობინების განახლება მოერიდეთ amend_tun1 (struct შეტყობინება & x) {x.data [0] = 0x81; // აქსესუარის დეკოდირება 0x80 & მისამართი 1 x.data [1] = 0; }

void amend_tun2 (struct შეტყობინება & x) {x.data [0] = 0x82; // აქსესუარის დეკოდირება 0x80 & მისამართი 2 x.data [1] = 0; }

დაამატეთ ახალი სიცარიელე ამომრჩეველთაათვის: ლოგიკური წაკითხვის_გამოყენება () {დაგვიანება (20);

ლოგიკური შეცვლილი_ტი = ყალბი; get_key ();

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

მონაცემები = 0xf8; // = ორობითი 1111 1000

amend_tun1 (msg [1]);

}

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

მონაცემები = 0xf8; // = ორობითი 1111 1000

amend_tun2 (msg [1]);

}

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

თუ (tun1 == 1) {

მონაცემები | = 0; // t1a

შეიცვალა_t = მართალია;}

თუ (tun1 == 0) {

მონაცემები | = 0x01; // t1b

შეიცვალა_t = მართალია;}

}

თუ (key_val == 202 && turn == 1) {

თუ (tun2 == 1) {

მონაცემები | = 0x02; // t2a

შეცვლილი_ტი = ჭეშმარიტი;

}

თუ (tun2 == 0) {

მონაცემები | = 0x03; // t2b

შეცვლილი_ტი = ჭეშმარიტი; }

}

თუ (key_val == 303 && turn == 1) {

თუ (tun3 == 1) {

მონაცემები | = 0x04; // t3a

შეცვლილი_ტი = ჭეშმარიტი;

}

თუ (tun3 == 0) {

მონაცემები | = 0x05; // t3b

შეიცვალა_t = მართალია;}

}

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

თუ (tun4 == 1) {

მონაცემები | = 0x06; // t4a

შეცვლილი_ტი = ჭეშმარიტი;

}

თუ (tun4 == 0) {

მონაცემები | = 0x07; // f4b

შეიცვალა_t = მართალია;}

}

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

თუ (tun5 == 1) {

მონაცემები | = 0; // t5a

შეცვლილი_ტი = ჭეშმარიტი;

}

თუ (tun5 == 0) {

მონაცემები | = 0x01; // t5b

შეიცვალა_t = მართალია;}

}

და ა.შ ………………………

ნაბიჯი 2: Arduino კოდი - TFT ჩვენება

Arduino კოდი - TFT ჩვენება
Arduino კოდი - TFT ჩვენება
Arduino კოდი - TFT ჩვენება
Arduino კოდი - TFT ჩვენება
Arduino კოდი - TFT ჩვენება
Arduino კოდი - TFT ჩვენება
Arduino კოდი - TFT ჩვენება
Arduino კოდი - TFT ჩვენება

ჩვენების სქემა უცვლელი რჩება შეცვლილი კოდით, რათა ნახოთ 16 მონაწილეთა სტატუსი. შენიშვნა: ბიბლიოთეკის კოდი იკავებს თითქმის ყველა ესკიზის კოდის მეხსიერებას, რაც მცირე ადგილს ტოვებს ახალი ფუნქციებისთვის. თუ ვინმეს აქვს აქ გამოყენებული TFT ბიბლიოთეკის უფრო ეფექტური ფაილი, გთხოვთ შემატყობინოთ.

ნაბიჯი 3: მონაწილეობის კონტროლერი

მონაწილეობის კონტროლერი
მონაწილეობის კონტროლერი
მონაწილეობის კონტროლერი
მონაწილეობის კონტროლერი

იხილეთ ინსტრუქცია, თუ როგორ უნდა გააკეთოთ ჩართულობა / ქულების კონტროლერი.

სრული წრე აკონტროლებს 16 წერტილს და 15 აქსესუარს, როგორიცაა შუქები, ხმები, ტურნირი და ა.

გირჩევთ: