
Სარჩევი:
2025 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2025-01-23 14:50


მე გადავწყვიტე, რომ ჩემი JETI DC-16 გადამცემი გადავიტანო რეჟიმიდან 2-ზე, რომელიც ძირითადად ცვლის Throttle- ს და ლიფტს მარცხნიდან მარჯვნივ და პირიქით. მას შემდეგ, რაც მე არ მინდოდა ჩემი ერთ -ერთი მოდელის ჩავარდნა ჩემს ტვინში მარცხენა/მარჯვენა დაბნეულობის გამო, მაინტერესებდა შესაძლებელია თუ არა ცოტა პრაქტიკა FSX– ში.
მე წავიკითხე და გამოვცადე JETI გადამცემები, რომლებიც რეალურად უჭერენ მხარს Joystick რეჟიმს ყუთში, თუმცა მე მინდოდა სრული მოქნილობა ღერძებისა და კონცენტრატორებისათვის და გამომეყენებინა TX როგორც რეალური მოდელისთვის. მიმღების გამომუშავების გამოყენებით, ასევე შესაძლებელია გამოიყენოთ სიგნალის დამუშავება DC-16– ში და გამოიყენოთ მიქსერები, ფრენის ფაზები, ორმაგი ტარიფები, რისი დაპროგრამებაც შეგიძლიათ იქ.
ცოტა ხნის წინ აღმოვაჩინე მშვენიერი გაკვეთილი, თუ როგორ უნდა გავაკეთო USB HID შეყვანის მოწყობილობა, კერძოდ ჯოისტიკი, იაფი არდუინოდან, როგორც Pro Micro:
www.instructables.com/id/Create-a-Joystick…
ეს საშუალებას მისცემს ყველაფერს, რაც საჭიროა თვითმფრინავის / შვეულმფრენის / FSX– ის გასაკონტროლებლად! უამრავი ღერძი და ღილაკია შესაძლებელი.
მას შემდეგ, რაც მე მქონდა სათადარიგო JETI RSAT2, მე გადავწყვიტე მისი Arduino- სთან დაკავშირება და ვცდილობდი განმეხორციელებინა პატარა PPM ანალიზატორი Joystick ბიბლიოთეკასთან ერთად.
მე ვთვლი, რომ ამ ნაბიჯების შემსრულებელმა იცის Arduino– ს დაკავშირება და პროგრამირება. მე არ ვიღებ გარანტიას გაუმართაობის ან დაზიანებისათვის!
მარაგები
თქვენ დაგჭირდებათ…
- ნებისმიერი Arduino მხარდაჭერილი Joystick ბიბლიოთეკით, მე გამოვიყენე Sparkfun Pro Micro 5V / 16 MHz
- Arduino IDE- ს უახლესი ვერსია
- ნებისმიერი RC მიმღები, რომელიც გამოსცემს PPM სიგნალს, მაგალითად JETI RSAT2
- რამდენიმე ჯუმბერის მავთული (მინ. 3)
- Joystick ბიბლიოთეკა დაყენებულია Arduino IDE– ში
- arduino-timer ბიბლიოთეკა:
ნაბიჯი 1: შეაერთეთ RX და Arduino


გაყვანილობა საკმაოდ მარტივია. მე გადავწყვიტე არდუინოს ჩართვა მხოლოდ USB– დან, რადგან ის ემსგავსება ჯოისტიკ მოწყობილობას. ეს უზრუნველყოფს Arduino– ს 5V– ით, რომელიც შეიძლება გამოყენებულ იქნას ასევე RC მიმღების კვებისათვის.
მე გამოვიყენე Pin VCC, რომელიც უზრუნველყოფს რეგულირებულ გამომუშავებას და უახლოესი Gnd pin - უბრალოდ შეაერთეთ იგი PPM– ის კონექტორთან + და - ქინძისთავებთან. როდესაც არდუინო იკვებება, მიმღებიც იკვებება.
PPM სიგნალისთვის, მე გადავწყვიტე გამოვიყენო შეფერხებები მათი გასაანალიზებლად. შეფერხებები შესაძლებელია მაგ. მე –3 პინზე, ასე რომ უბრალოდ დააკავშირეთ იქ - არდუინოზე არ არის „მშობლიური RC პინი“, მაგრამ შესაძლოა მიმღების სიგნალში წაკითხვის მეტი და განსხვავებული ხერხი.
მე უნდა გამორთო RX ძაბვის სიგნალიზაცია, ვინაიდან VCC ძაბვა USB მიწოდებით იქნება მხოლოდ 4.5 ვ - ის გარშემო - მაგრამ საკმაოდ სტაბილური, ასე რომ პრობლემა არ არის.
ნაბიჯი 2: ზოგიერთი PPM სიგნალის მიღება


როდესაც მიმღები და TX იკვებება, მე ვიღებდი PPM სიგნალებს, როგორც სურათზეა ნაჩვენები. 16 არხი, სამუდამოდ გამეორებული. თუ RSAT– ზე Failsafe გამორთულია და გადამცემი გამორთულია, PPM გამომავალი გამორთული იქნება.
დამატებითი ინფორმაცია PPM– ის შესახებ შეგიძლიათ იხილოთ აქ:
- https://en.wikipedia.org/wiki/Pulse-position_modul…
- https://wiki.rc-network.de/index.php/PPM
ვინაიდან მე არ ვფრინავ ნამდვილ ნივთებს ამ შემთხვევაში, მე არ მაინტერესებდა თეორიული დრო და უბრალოდ oscilloscope- ზე აღმოვაჩინე ის, რასაც ჩემი მიმღები მწვავედ ამუშავებდა ჯოხების სრულად მარცხნიდან მარჯვნივ გადაადგილებისას (სტანდარტული პარამეტრები TX- ში) რა როგორც ჩანს -100% შეესაბამება იმპულსებს სიგრძით 600µs, და +100% 1600μs- მდე. მე ასევე არ მაინტერესებდა პაუზის იმპულსების სიგრძე (400µs) ჩემს არდუინოს კოდში, მაგრამ ვივარაუდე, რომ ჩარჩოს ინტერვალი იყო მინიმუმ. 3000μs
ნაბიჯი 3: გადამცემის კონფიგურაცია



ვინაიდან საჭიროა კონტროლის ზედაპირების მხოლოდ რეალური პოზიციის ცოდნა, საკმარისია ერთი არხი / "servo" თითო RC ფუნქციაზე. შესაბამისად, შესაძლებელია საკმაოდ მარტივი გადამცემის დაყენება - ჩვეულებრივი RC მოდელის მსგავსი. ძირითადი ფუნქციები აილერონი, ლიფტი, საჭე და საჰაერო ხომალდი მოითხოვს თითოეულ მათგანს მხოლოდ ერთ გადამცემ არხს. მე ასევე დავამატე ფარფლები, მუხრუჭები და მექანიზმი, რის გამოც 9 არხი ჯერჯერობით თავისუფალი იყო. გთხოვთ გაითვალისწინოთ, რომ ფლაპები დაყენებულია ფრენის ფაზაზე და არ კონტროლდება პირდაპირ ჯოხის, სლაიდერის ან ღილაკის საშუალებით.
ნაბიჯი 4: ჯოისტიკის გაშვება


ჯოისტიკის ბიბლიოთეკა საკმაოდ მარტივია გამოსაყენებლად და გთავაზობთ რამდენიმე მაგალითს და ტესტს. პირველ რიგში უნდა შემოწმდეს არის თუ არა Arduino გამოვლენილი, როგორც ჯოისტიკი, შესვლის განყოფილებაში მითითებული ინსტრუქციები და ბიბლიოთეკა თავად იძლევა კარგ მითითებებს.
მოწყობილობებისა და პრინტერების მართვის პანელში, Arduino გამოჩნდა როგორც "Sparkfun Pro Micro", ხოლო ჯოისტიკის ტესტის ფანჯარაში ნაჩვენებია 7 ღერძი და უამრავი მხარდაჭერილი ღილაკი. ქუდის გადამრთველიც კი შეიძლება გამოყენებულ იქნას არდუინოში დაპროგრამებისას.
ნაბიჯი 5: Arduino– ს კოდირება


ის რაც ჯერ კიდევ აკლია არის PPM სიგნალის ფაქტობრივი გაანალიზება და ჯოისტიკის ღერძებისა და ღილაკების მინიჭება. მე გადავწყვიტე შემდეგი რუქების შექმნა:
არხი / ფუნქცია / ჯოისტიკის დავალება:
- Throttle -> Throttle ღერძი
- აილერონი -> X ღერძი
- ლიფტი -> Y ღერძი
- საჭე -> X ბრუნვის ღერძი
- ფარდები -> Y ბრუნვის ღერძი
- სამუხრუჭე -> Z ღერძი
- გადაცემათა კოლოფი -> ღილაკი 0
როდესაც გადაცემათა კოლოფი დაქვეითებულია, ჯოისტიკის პირველი ღილაკი უნდა იყოს დაჭერილი და გათავისუფლდება გადაცემის აწევისას. თუმცა, ამას დასჭირდება FSUIPC FSX– ისთვის, ყუთში, FSX მიიღებს მხოლოდ ღილაკს გადაცემათა კოლოფის გადასატანად, რაც არ არის ზუსტად ის, რაც ხდება ჩემს მოდელებთან.
მე მივაწოდე კოდის ჩემს ახლანდელ ვერსიას ბევრი კომენტარი, რომელიც საკმაოდ კარგად მუშაობს ჩემთვის - მოგერიდებათ შეცვალოთ თქვენი დავალება ან დაამატოთ ახალი ფუნქციები. ბოლო 9 RC არხი ამჟამად არ გამოიყენება.
დასაყენებლად, ჯოისტიკის კლასი უნდა იყოს ინიციალიზებული, ძირითადად რიცხვითი ღერძის დიაპაზონის განსაზღვრის გზით:
/ * ღერძების დიაპაზონის დადგენა (განსაზღვრულია სათაურში, 0 - 1000) */
Joystick.setXAxisRange (CHANNEL_MIN, CHANNEL_MAX); Joystick.setYAxisRange (CHANNEL_MIN, CHANNEL_MAX); …
0 -დან 1000 -მდე მნიშვნელობების გამოყენებით შესაძლებელია პულსის სიგრძის (600 - 1600μs) პირდაპირ ჯოისტიკის მნიშვნელობებზე ხელახლა შედგენა ხელახლა გადიდების გარეშე.
DIN 3 ინიციალიზებულია ციფრული შეყვანის სახით, ამოღების ჩართვა და შეწყვეტილი თანდართული:
pinMode (PPM_PIN, INPUT_PULLUP);
attachInterrupt (digitalPinToInterrupt (PPM_PIN), PPM_Pin_Changed, CHANGE);
გამართვის მიზნით, მე დავამატე რამდენიმე ამობეჭდვა სერიული ინტერფეისის საშუალებით რეგულარულ ინტერვალში, arduino-timer ბიბლიოთეკის გამოყენებით:
თუ (SERIAL_PRINT_INTERVAL> 0) {
scheduler.every (SERIAL_PRINT_INTERVAL, (void*) -> bool {SerialPrintChannels (); true true;}); }
PIN– ის შეფერხება იქნება გამოძახებული, როდესაც PIN– ის ლოგიკური მნიშვნელობა შეიცვლება, ასე რომ PPM სიგნალის თითოეულ ზღვარზე. შეაფასეთ პულსის სიგრძე მიკროსქემის () გამოყენებით მარტივი დროით:
uint32_t curTime = მიკრო ();
uint32_t pulseLength = curTime - edgeTime; uint8_t curState = digitalRead (PPM_PIN);
მიმდინარე პინის მდგომარეობის შეფასებით და პულსის სიგრძესთან და წარსულ იმპულსებთან შერწყმით, ახალი იმპულსების კლასიფიკაცია შესაძლებელია. შემდეგი პირობითი გამოავლენს ინტერფეისის უფსკრული:
if (lastState == 0 && პულსი სიგრძე> 3000 && პულსი სიგრძე <6000)
შემდგომი იმპულსებისთვის, პულსის სიგრძე იქნება ასახული ღერძის მდგომარეობამდე, პულსის სიგრძის დაჭერით და მიკერძოებით ჯოისტიკების ღერძის დიაპაზონის შესატყვისად:
uint16_t rxLength = პულსიLength;
rxLength = (rxLength> 1600)? 1600: rxLength; rxLength = (rxLength <600)? 600: rxLength; rxChannels [curChannel] = rxLength - 600;
RxChannels მასივი საბოლოოდ შეიცავს 16 მნიშვნელობას 0 - 1000 – დან, რაც მიუთითებს ჯოხის / სლაიდერის და ღილაკის პოზიციებს.
16 არხის მიღების შემდეგ, ჯოისტიკზე გამოსახვა ხდება:
/ * ცულები */
Joystick.setThrottle (არხები [0]); Joystick.setXAxis (არხები [1]); Joystick.setYAxis (1000 - არხი [2]); Joystick.setRxAxis (არხები [3]); Joystick.setRyAxis (არხები [4]); Joystick.setZAxis (1000 - არხი [5]); / * ღილაკები */ Joystick.setButton (0, (არხები [6] <500? 1: 0)); / * მონაცემების განახლება USB */ Joystick.sendState ();
მე გადავაბრუნე რამდენიმე ღერძი კოდში, რაც აბსოლუტურად აუცილებელი არ არის, რადგან ღერძი ასევე შეიძლება გადაბრუნდეს სერვო მიმართულების გადატრიალებით ან FSX– ში მინიჭებით. თუმცა, მე გადავწყვიტე შევინარჩუნო servo მიმართულებები და ასევე ორიგინალური FSX დავალება.
ღილაკი ჩართულია ან გამორთულია ბარიერის არხით 7.
და არ უნდა დაგვავიწყდეს, რომ მონიშნოთ გრაფიკი … წინააღმდეგ შემთხვევაში, გამართვის ანაბეჭდები არ გამოჩნდება.
ბათილი მარყუჟი () {
scheduler.tick (); }
ეკრანის სურათზე, რომელიც მე დავამატე, ხედავთ, 1 არხი გადავიდა 1000 -დან (სრული გასროლით) 0 -ზე (მოჩვენებითი).
FSX აღმოაჩენს Arduino- ს, ისევე როგორც სხვა ჯოისტიკს, ასე რომ უბრალოდ მიანიჭეთ ღილაკი და ღერძი და გაერთეთ აფრენით!
რაც მე ნამდვილად მომწონს ამ მიდგომის არის, თქვენ შეგიძლიათ გამოიყენოთ თქვენი გადამცემი როგორც რეალური მოდელი, მაგ. ფრენის ფაზების გამოყენებით და ა.
გირჩევთ:
Linux დაფუძნებული USB TableClock: 10 ნაბიჯი

Linux Powered USB TableClock: Linux Power USB მაგიდის საათი არის Raspbian Lite Linux მაგიდის საათი. იგი შექმნილია განსაკუთრებით ჩემნაირი ღამის ბუებისთვის, რომელთაც სურთ იხილონ სწრაფი დრო, მაგრამ ეს არის ძალიან ნათელი LCD, რომ შეამოწმოთ დრო მობილურ ტელეფონში. ჩემი გარეგნობა მაგარია
SAMD21 დაფუძნებული დაფების USB პორტის დამზადება აპარატურის სერიულ პორტში!: 3 ნაბიჯი

SAMD21 დაფაზე დაფუძნებული USB პორტის დამზადება აპარატურის სერიულ პორტში! ეს ძალზე სასარგებლოა ჩვენი საყვარელი დაფებიდან მონაცემების გამართვის, გაგზავნისა და მიღებისათვის. მე ვმუშაობდი uChip– ზე, როდესაც ვცდილობდი მონაცემთა გადაცემას
Arduino დაფუძნებული წვრილმანი თამაშის კონტროლერი - Arduino PS2 თამაშის კონტროლერი - თამაში Tekken With DIY Arduino Gamepad: 7 ნაბიჯი

Arduino დაფუძნებული წვრილმანი თამაშის კონტროლერი | Arduino PS2 თამაშის კონტროლერი | თამაში Tekken With DIY Arduino Gamepad: გამარჯობა ბიჭებო, თამაშების თამაში ყოველთვის სახალისოა, მაგრამ საკუთარი წვრილმანი თამაშით თამაში უფრო სახალისოა. ასე რომ, ჩვენ გავაკეთებთ თამაშის კონტროლერს arduino pro micro- ს ამ ინსტრუქციებში
ამინდზე დაფუძნებული მუსიკის გენერატორი (ESP8266 დაფუძნებული მიდი გენერატორი): 4 ნაბიჯი (სურათებით)

ამინდზე დაფუძნებული მუსიკის გენერატორი (ESP8266 დაფუძნებული მიდი გენერატორი): გამარჯობა, დღეს მე აგიხსნით, თუ როგორ უნდა შექმნათ თქვენი საკუთარი პატარა ამინდი მუსიკის გენერატორი. იგი ეფუძნება ESP8266- ს, რომელიც არდუინოს მსგავსია და ის პასუხობს ტემპერატურას, წვიმას და სინათლის ინტენსივობა. ნუ ელოდებით, რომ ის მთელ სიმღერებს ან აკორდს გამოიმუშავებს
გრძელვადიანი Wifi PPM / MSP: 5 ნაბიჯი

Long Range Wifi PPM / MSP: რამდენიმე ხნის წინ გამოვაქვეყნე ჩემი Wifi PPM კონტროლერი. საკმაოდ კარგად მუშაობს. უბრალოდ დიაპაზონი ცოტა მოკლეა. მე ვიპოვე ამ პრობლემის გადაწყვეტა. ESP8266 მხარს უჭერს რეჟიმს სახელწოდებით ESPNOW. ეს რეჟიმი გაცილებით დაბალია. ეს არ წყვეტს კავშირს ისე