Open Source Joystick FFB / DIY FFB Joystick - Page 3 - ED Forums
 


Notices

Reply
 
Thread Tools Display Modes
Old 09-22-2016, 04:40 PM   #21
hegykc
Member
 
hegykc's Avatar
 
Join Date: Jun 2012
Location: Croatia
Posts: 684
Reputation power: 12
hegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nice
Default

US patent laws prohibit even replicating for personal usage, EU laws allow it. Or vice versa I don't remember.

But I don't think any of it should concern you because as stated above, the patented is the game pad shaker. Nothing at all to do with a 2-axis servo driven force loading system.

Anyway, if anyone wants to get into ffb firmware and electronics, I will provide backup in the mechanical department, anything needed to be built to test it, I'll do it...
__________________
<a href=http://forums.eagle.ru/showthread.php?t=104154 target=_blank>http://forums.eagle.ru/showthread.php?t=104154</a>
hegykc is offline   Reply With Quote
Old 09-22-2016, 05:11 PM   #22
Farlander
Member
 
Farlander's Avatar
 
Join Date: Oct 2014
Location: In the center of the thermal
Posts: 505
Reputation power: 6
Farlander has a spectacular aura aboutFarlander has a spectacular aura aboutFarlander has a spectacular aura aboutFarlander has a spectacular aura aboutFarlander has a spectacular aura about
Default

This would be amazing, personally i probably wouldn't get a new gimbal just for better feel than the warthog, but FFB would definately do it..
__________________
A Nose-Heavy plane flies badly, a Tail-Heavy plane flies once!
System: Windows 10, Intel i5 3570K 4.2Ghz, MSI GTX 670, MSI z-77 Mpower, 16gb RAM, 1TB good ol' hard drive, 250GB ssd.
Favorite aircraft: MiG-21, MiG-15, MiG-25, SU-24... you get the idea..
Farlander is offline   Reply With Quote
Old 09-23-2016, 11:55 PM   #23
sydost
Junior Member
 
Join Date: Mar 2009
Posts: 91
Reputation power: 9
sydost will become famous soon enoughsydost will become famous soon enough
Default

Quote:
Originally Posted by Berniyh View Post
Hm, I've seen quite a few builds of sticks, but haven't seen a FFB one, will search for that.
But I think the open system approach would be the right way.
Here is the thread about the PeterP's frankenstick. https://forums.eagle.ru/showthread.p...37#post1366037 The idea is that there is two MSFFB2 sticks linked mechanically to each other so they provide double the force to support a longer stick. I have also made this DIY FFB stick and in addition I have doubled the power of both MSFFB2 modules so now I have four times the power which unfortunately is still not enough to feel the trim forces when the stick is at center.

I too have been dreaming of a OSW style system for flightsticks. Though I think that directdrive is not the way to go. Directdrive servo motors are quite heavy, big and expensive. In my dreams I would like to build a real size stick which would have even nearly real life forces (like forces met in P-51 for example). I think that best way to achieve that would be to use for example windshield wiper motor with a proper gearing or belt drive. In a flightstick it is not very important to have very rapid and accurate changes which on the other hand is important in racing games which supports the idea of directdrive there.

I can build simple mechanics and solder but the software stuff is way beyond my skills. Those of you who understand something about it have you stumbled upon vJoy? vJoy added force feedback support to its drivers about a year ago so I think using vJoy would be one way of getting the FF data out of the game and via vJoy it could be sent to the controller. http://vjoystick.sourceforge.net/site/

I am also worried about the FFB support possibly dying away from flightsims as there is no more commercial sticks made. At the moment DCS FFB support is quite okay but it is not great. There would be so much more potential in FFB than what is in use now. For example in Su27 we could have the stick pusher function modelled like it works in the real aircraft. You'd feel the additional force kick in but if needed you could still pull through the pusher to get the kill. Or in the warbirds we could have a similar system as racing sims now have the soft lock to simulate the reduced control movement in high speeds flight. Well, I'm getting a bit ahead of myself but I think a lot of really cool things would be possible if proper FFB sticks would show up even if those were DIY sticks.
sydost is offline   Reply With Quote
Old 09-24-2016, 12:19 AM   #24
aeliusg
Member
 
Join Date: Jun 2014
Posts: 250
Reputation power: 4
aeliusg is on a distinguished road
Default

Quote:
Originally Posted by sydost View Post
Here is the thread about the PeterP's frankenstick. https://forums.eagle.ru/showthread.p...37#post1366037 The idea is that there is two MSFFB2 sticks linked mechanically to each other so they provide double the force to support a longer stick. I have also made this DIY FFB stick and in addition I have doubled the power of both MSFFB2 modules so now I have four times the power which unfortunately is still not enough to feel the trim forces when the stick is at center.

I too have been dreaming of a OSW style system for flightsticks. Though I think that directdrive is not the way to go. Directdrive servo motors are quite heavy, big and expensive. In my dreams I would like to build a real size stick which would have even nearly real life forces (like forces met in P-51 for example). I think that best way to achieve that would be to use for example windshield wiper motor with a proper gearing or belt drive. In a flightstick it is not very important to have very rapid and accurate changes which on the other hand is important in racing games which supports the idea of directdrive there.

I can build simple mechanics and solder but the software stuff is way beyond my skills. Those of you who understand something about it have you stumbled upon vJoy? vJoy added force feedback support to its drivers about a year ago so I think using vJoy would be one way of getting the FF data out of the game and via vJoy it could be sent to the controller. http://vjoystick.sourceforge.net/site/

I am also worried about the FFB support possibly dying away from flightsims as there is no more commercial sticks made. At the moment DCS FFB support is quite okay but it is not great. There would be so much more potential in FFB than what is in use now. For example in Su27 we could have the stick pusher function modelled like it works in the real aircraft. You'd feel the additional force kick in but if needed you could still pull through the pusher to get the kill. Or in the warbirds we could have a similar system as racing sims now have the soft lock to simulate the reduced control movement in high speeds flight. Well, I'm getting a bit ahead of myself but I think a lot of really cool things would be possible if proper FFB sticks would show up even if those were DIY sticks.
I do have a question about the FFB2's that I haven't yet found the answer to: can you use a silver trigger version with the red trigger version on one of these builds?
aeliusg is offline   Reply With Quote
Old 09-24-2016, 07:41 AM   #25
sydost
Junior Member
 
Join Date: Mar 2009
Posts: 91
Reputation power: 9
sydost will become famous soon enoughsydost will become famous soon enough
Default

Quote:
Originally Posted by aeliusg View Post
I do have a question about the FFB2's that I haven't yet found the answer to: can you use a silver trigger version with the red trigger version on one of these builds?

In short the answer is yes. Check the last page of the dual MSFFB2 thread https://forums.eagle.ru/showthread.php?t=83814&page=27 .
sydost is offline   Reply With Quote
Old 09-24-2016, 07:50 AM   #26
Berniyh
Junior Member
 
Join Date: Dec 2015
Posts: 30
Reputation power: 2
Berniyh is on a distinguished road
Default

Quote:
Originally Posted by sydost View Post
I too have been dreaming of a OSW style system for flightsticks. Though I think that directdrive is not the way to go. Directdrive servo motors are quite heavy, big and expensive. In my dreams I would like to build a real size stick which would have even nearly real life forces (like forces met in P-51 for example). I think that best way to achieve that would be to use for example windshield wiper motor with a proper gearing or belt drive. In a flightstick it is not very important to have very rapid and accurate changes which on the other hand is important in racing games which supports the idea of directdrive there.
No, maybe not a servo, at least not one as it's used in the OSW. That would be 300-400€ per servo and you need two of them.

One idea I had a couple of days ago was that it might be possible to use actuators.(I think you can get some for
That would have the advantage that you don't need to convert the rotation movement into a linear movement and a 2D movement using 2 or 4 of them would be easier to realize.
It wouldn't be a small construction, though and mainly useful for a home cockpit rather than a desk-mounted stick.

Also, I'm not yet sure how much an appropriate actuator costs, I only know about those that are used in motion rigs and those would be both too strong and too expensive.

In addition, I'm not yet sure if they would yield the required precision and feedback.

Edit: Sorry if this is not yet a main topic for me, I need to build my OSW first.
Berniyh is offline   Reply With Quote
Old 09-26-2016, 08:33 AM   #27
MetalGear_Honk
Junior Member
 
MetalGear_Honk's Avatar
 
Join Date: Nov 2015
Posts: 85
Reputation power: 3
MetalGear_Honk is on a distinguished road
Default

Hi
For getting enough Force to the Grip it would be easy to use DC-Motors (brushless or Brushed is of no concern).
Using an H-Bridge Driver (L298N can supply 5A) that is capable of powering two decent Motors. And the Controller can give Direction through 4 Pins (two for each Motor / or 2 Pins given some circuit for switching) and two PWM signals for manipulating the Motors Rotation Speed.
In Combination with some Gearbox for degreasing the turn Speed that will give us a Cheap and Powerful solution.

For the Crazy ones:
Using optocouplers on the Direction Pins to switch some contactors (? German: Schürtz schalter) and an external Frequency Modulator on the PWM pin.
That can source industrial Motors with enough Force to lift a plane.

Now to get the Ball rolling:
Here is my Descriptor for an Force Feedback Joystick.
It contains most Forces (excluding custom force)
4 Axis with 16bit res
4 Axis with 10bit res
4 directional Buttons (cooli)
32 Buttons.
(That is the maximum for Windows Directx inputs. Raw data could be much more but is not supported by all games)

Code:
 
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x04, // USAGE (Joystick)
0xa1, 0x01, // COLLECTION (Application)
0xa1, 0x00, // COLLECTION (Physical)
0x85, 0x01,
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x09, 0x32, // USAGE (Z)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xff, 0x71, // LOGICAL_MAXIMUM (25000)
0x75, 0x10, // REPORT_SIZE (16)
0x95, 0x03, // REPORT_COUNT (3)
0x81, 0x02, // INPUT (Data,Var,Abs)
//HID_RI_END_COLLECTION(0),
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x33, // USAGE (X)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x10, // REPORT_SIZE (16)
0x26, 0xff, 0xff, // LOGICAL_MAXIMUM (32000)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x34, // USAGE (Ry)
0x09, 0x35, // USAGE (Rz)
0x09, 0x36, // USAGE (Slider)
0x09, 0x36, // USAGE (Slider)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0x00, 0x04, // LOGICAL_MAXIMUM (1024)
0x75, 0x10, // REPORT_SIZE (16)
0x95, 0x04, // REPORT_COUNT (5)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x20, // USAGE_MAXIMUM (Button 48)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x95, 0x20, // REPORT_COUNT (48)
0x75, 0x01, // REPORT_SIZE (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x05, 0x01, // Usage Page (Generic Desktop)
0x09, 0x39, // Usage (Hat switch)
0x09, 0x39, // Usage (Hat switch)
0x09, 0x39, // Usage (Hat switch)
0x09, 0x39, // Usage (Hat switch)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x07, // Logical Maximum (7)
0x35, 0x00, // Physical Minimum (0)
0x46, 0x3B, 0x01, // Physical Maximum (315)
0x75, 0x04, // Report Size (4)
0x95, 0x04, // Report Count (4)
0x65, 0x14, // Unit (20)
0x81, 0x42, // Input (variable,absolute,null_state)
0xc0, // END_COLLECTION

0x05,0x0F, // USAGE_PAGE (Physical Interface)
0x09,0x92, // USAGE (PID State Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x02, // REPORT_ID (02)
0x09,0x9F, // USAGE (Device Paused)
0x09,0xA0, // USAGE (Actuators Enabled)
0x09,0xA4, // USAGE (Safety Switch)
0x09,0xA5, // USAGE (Actuator Override Switch)
0x09,0xA6, // USAGE (Actuator Power)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x25,0x01, // LOGICAL_MINIMUM (01)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x45,0x01, // PHYSICAL_MAXIMUM (01)
0x75,0x01, // REPORT_SIZE (01)
0x95,0x05, // REPORT_COUNT (05)
0x81,0x02, // INPUT (Data,Var,Abs)
0x95,0x03, // REPORT_COUNT (03)
0x81,0x03, // INPUT (Constant,Var,Abs)
0x09,0x94, // USAGE (Effect Playing)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x25,0x01, // LOGICAL_MAXIMUM (01)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x45,0x01, // PHYSICAL_MAXIMUM (01)
0x75,0x01, // REPORT_SIZE (01)
0x95,0x01, // REPORT_COUNT (01)
0x81,0x02, // INPUT (Data,Var,Abs)
0x09,0x22, // USAGE (Effect Block Index)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x25,0x28, // LOGICAL_MAXIMUM (28)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x28, // PHYSICAL_MAXIMUM (28)
0x75,0x07, // REPORT_SIZE (07)
0x95,0x01, // REPORT_COUNT (01)
0x81,0x02, // INPUT (Data,Var,Abs)
0xC0, // END COLLECTION ()

0x09,0x21, // USAGE (Set Effect Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x01, // REPORT_ID (01)
0x09,0x22, // USAGE (Effect Block Index)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x25,0x28, // LOGICAL_MAXIMUM (28)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x28, // PHYSICAL_MAXIMUM (28)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x25, // USAGE (25)
0xA1,0x02, // COLLECTION (Logical)
0x09,0x26, // USAGE (26)
0x09,0x27, // USAGE (27)
0x09,0x30, // USAGE (30)
0x09,0x31, // USAGE (31)
0x09,0x32, // USAGE (32)
0x09,0x33, // USAGE (33)
0x09,0x34, // USAGE (34)
0x09,0x40, // USAGE (40)
0x09,0x41, // USAGE (41)
0x09,0x42, // USAGE (42)
0x09,0x43, // USAGE (43)
0x09,0x28, // USAGE (28)
0x25,0x0C, // LOGICAL_MAXIMUM (0C)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x0C, // PHYSICAL_MAXIMUM (0C)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x00, // OUTPUT (Data)
0xC0, // END COLLECTION ()
0x09,0x50, // USAGE (Duration)
0x09,0x54, // USAGE (Trigger Repeat Interval)
0x09,0x51, // USAGE (Sample Period)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26,0xFF,0x7F, // LOGICAL_MAXIMUM (7F FF)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0xFF,0x7F, // PHYSICAL_MAXIMUM (7F FF)
0x66,0x03,0x10, // UNIT (Eng Lin:Time)
0x55,0xFD, // UNIT_EXPONENT (-3)
0x75,0x10, // REPORT_SIZE (10)
0x95,0x03, // REPORT_COUNT (03)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x55,0x00, // UNIT_EXPONENT (00)
0x66,0x00,0x00, // UNIT (None)
0x09,0x52, // USAGE (Gain)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26,0xFF,0x00, // LOGICAL_MAXIMUM (00 FF)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0x10,0x27, // PHYSICAL_MAXIMUM (10000)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x53, // USAGE (Trigger Button)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x25,0x08, // LOGICAL_MAXIMUM (08)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x08, // PHYSICAL_MAXIMUM (08)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x55, // USAGE (Axes Enable)
0xA1,0x02, // COLLECTION (Logical)
0x05,0x01, // USAGE_PAGE (Generic Desktop)
0x09,0x30, // USAGE (X)
0x09,0x31, // USAGE (Y)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x25,0x01, // LOGICAL_MAXIMUM (01)
0x75,0x01, // REPORT_SIZE (01)
0x95,0x02, // REPORT_COUNT (02)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0xC0, // END COLLECTION ()
0x05,0x0F, // USAGE_PAGE (Physical Interface)
0x09,0x56, // USAGE (Direction Enable)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x95,0x05, // REPORT_COUNT (05)
0x91,0x03, // OUTPUT (Constant,Var,Abs)
0x09,0x57, // USAGE (Direction)
0xA1,0x02, // COLLECTION (Logical)
0x0B,0x01,0x00,0x0A,0x00,
0x0B,0x02,0x00,0x0A,0x00,
0x66,0x14,0x00, // UNIT (Eng Rot:Angular Pos)
0x55,0xFE, // UNIT_EXPONENT (FE)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26,0xFF,0x00, // LOGICAL_MAXIMUM (00 FF)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x47,0xA0,0x8C,0x00,0x00, // PHYSICAL_MAXIMUM (00 00 8C A0)
0x66,0x00,0x00, // UNIT (None)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x02, // REPORT_COUNT (02)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x55,0x00, // UNIT_EXPONENT (00)
0x66,0x00,0x00, // UNIT (None)
0xC0, // END COLLECTION ()
0x05,0x0F, // USAGE_PAGE (Physical Interface)
// 0x09,0xA7, // USAGE (Start Delay)
0x66,0x03,0x10, // UNIT (Eng Lin:Time)
0x55,0xFD, // UNIT_EXPONENT (-3)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26,0xFF,0x7F, // LOGICAL_MAXIMUM (7F FF)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0xFF,0x7F, // PHYSICAL_MAXIMUM (7F FF)
0x75,0x10, // REPORT_SIZE (10)
0x95,0x01, // REPORT_COUNT (01)
// 0x91,0x02, // OUTPUT (Data,Var,Abs)
0x66,0x00,0x00, // UNIT (None)
0x55,0x00, // UNIT_EXPONENT (00)
0xC0, // END COLLECTION ()

0x05,0x0F, // USAGE_PAGE (Physical Interface)
0x09,0x5A, // USAGE (Set Envelope Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x02, // REPORT_ID (02)
0x09,0x22, // USAGE (Effect Block Index)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x25,0x28, // LOGICAL_MAXIMUM (28)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x28, // PHYSICAL_MAXIMUM (28)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x5B, // USAGE (Attack Level)
0x09,0x5D, // USAGE (Fade Level)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26,0x10,0x27, // LOGICAL_MAXIMUM (00 FF)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0x10,0x27, // PHYSICAL_MAXIMUM (10000)
0x75,0x10, // REPORT_SIZE (08)

0x95,0x02, // REPORT_COUNT (02)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x5C, // USAGE (5C)
0x09,0x5E, // USAGE (5E)
0x66,0x03,0x10, // UNIT (Eng Lin:Time)
0x55,0xFD, // UNIT_EXPONENT (-3)
0x26,0xFF,0x7F, // LOGICAL_MAXIMUM (7F FF)
0x46,0xFF,0x7F, // PHYSICAL_MAXIMUM (7F FF)
0x75,0x10, // REPORT_SIZE (10)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x45,0x00, // PHYSICAL_MAXIMUM (00)
0x66,0x00,0x00, // UNIT (None)
0x55,0x00, // UNIT_EXPONENT (00)
0xC0, // END COLLECTION ()

0x09,0x5F, // USAGE (Set Condition Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x03, // REPORT_ID (03)
0x09,0x22, // USAGE (Effect Block Index)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x25,0x28, // LOGICAL_MAXIMUM (28)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x28, // PHYSICAL_MAXIMUM (28)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x23, // USAGE (Parameter Block Offset)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x25,0x01, // LOGICAL_MAXIMUM (01)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x45,0x01, // PHYSICAL_MAXIMUM (01)
0x75,0x04, // REPORT_SIZE (04)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x58, // USAGE (Type Specific Block Offset)
0xA1,0x02, // COLLECTION (Logical)
0x0B,0x01,0x00,0x0A,0x00, // USAGE (Instance 1)
0x0B,0x02,0x00,0x0A,0x00, // USAGE (Instance 2)
0x75,0x02, // REPORT_SIZE (02)
0x95,0x02, // REPORT_COUNT (02)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0xC0, // END COLLECTION ()
0x15,0x80, // LOGICAL_MINIMUM (80)
0x25,0x7F, // LOGICAL_MAXIMUM (7F)
0x36,0xF0,0xD8, // PHYSICAL_MINIMUM (-10000)
0x46,0x10,0x27, // PHYSICAL_MAXIMUM (10000)
0x09,0x60, // USAGE (CP Offset)
0x09,0x61, // USAGE (Positive Coefficient)
0x09,0x62, // USAGE (Negative Coefficient)
0x09,0x63, // USAGE (Positive Saturation)
0x09,0x64, // USAGE (Negative Saturation)
0x09,0x65, // USAGE (Dead Band )
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0x10, 0x27, // LOGICAL_MAXIMUM (25000)
0x75, 0x10, // REPORT_SIZE (16)
//0x75,0x08, // REPORT_SIZE (08) 
0x95,0x06, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x36,0xF0,0xD8, // PHYSICAL_MINIMUM (-10000)
0x46,0x10,0x27, // PHYSICAL_MAXIMUM (10000)
/*
0x95,0x02, // REPORT_COUNT (01) // ???? WAS 2 with "negative coeff"
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26, 0x10, 0x27, // LOGICAL_MAXIMUM (00 FF)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0x10,0x27, // PHYSICAL_MAXIMUM (10000)

0x09,0x63, // USAGE (Positive Saturation)
0x09,0x64, // USAGE (Negative Saturation)
0x75,0x10, // REPORT_SIZE (08)
0x95,0x02, // REPORT_COUNT (02)
// 0x91,0x02, // OUTPUT (Data,Var,Abs)
// 0x09,0x65, // USAGE (Dead Band )
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0x10, 0x27, // LOGICAL_MAXIMUM (25000)
0x46,0x10,0x27, // PHYSICAL_MAXIMUM (10000)
0x95,0x01, // REPORT_COUNT (01)
// 0x91,0x02, // OUTPUT (Data,Var,Abs)
*/
0xC0, // END COLLECTION ()

0x09,0x6E, // USAGE (Set Periodic Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x04, // REPORT_ID (04)
0x09,0x22, // USAGE (Effect Block Index)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x25,0x28, // LOGICAL_MAXIMUM (28)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x28, // PHYSICAL_MAXIMUM (28)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x70, // USAGE (Magnitude)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26,0xFF,0x00, // LOGICAL_MAXIMUM (00 FF)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0x10,0x27, // PHYSICAL_MAXIMUM (10000)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x6F, // USAGE (Offset)
0x15,0x80, // LOGICAL_MINIMUM (80)
0x25,0x7F, // LOGICAL_MAXIMUM (7F)
0x36,0xF0,0xD8, // PHYSICAL_MINIMUM (-10000)
0x46,0x10,0x27, // PHYSICAL_MAXIMUM (10000)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x71, // USAGE (Phase)
0x66,0x14,0x00, // UNIT (Eng Rot:Angular Pos)
0x55,0xFE, // UNIT_EXPONENT (FE)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26,0xFF,0x00, // LOGICAL_MAXIMUM (00 FF)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x47,0xA0,0x8C,0x00,0x00, // PHYSICAL_MAXIMUM (00 00 8C A0)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x72, // USAGE (Period)
0x26,0xFF,0x7F, // LOGICAL_MAXIMUM (7F FF)
0x46,0xFF,0x7F, // PHYSICAL_MAXIMUM (7F FF)
0x66,0x03,0x10, // UNIT (Eng Lin:Time)
0x55,0xFD, // UNIT_EXPONENT (-3)
0x75,0x10, // REPORT_SIZE (10)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x66,0x00,0x00, // UNIT (None)
0x55,0x00, // UNIT_EXPONENT (00)
0xC0, // END COLLECTION ()

0x09,0x73, // USAGE (Set Constant Force Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x05, // REPORT_ID (05)
0x09,0x22, // USAGE (Effect Block Index)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x25,0x28, // LOGICAL_MAXIMUM (28)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x28, // PHYSICAL_MAXIMUM (28)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x70, // USAGE (Magnitude)
0x16,0x01,0xFF, // LOGICAL_MINIMUM (-255)
0x26,0xFF,0x00, // LOGICAL_MAXIMUM (255)
0x36,0xF0,0xD8, // PHYSICAL_MINIMUM (-10000)
0x46,0x10,0x27, // PHYSICAL_MAXIMUM (10000)
0x75,0x10, // REPORT_SIZE (10)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0xC0, // END COLLECTION ()

0x09,0x74, // USAGE (Set Ramp Force Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x06, // REPORT_ID (06)
0x09,0x22, // USAGE (Effect Block Index)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x25,0x28, // LOGICAL_MAXIMUM (28)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x28, // PHYSICAL_MAXIMUM (28)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x75, // USAGE (Ramp Start)
0x09,0x76, // USAGE (Ramp End)
0x15,0x80, // LOGICAL_MINIMUM (-128)
0x25,0x7F, // LOGICAL_MAXIMUM (127)
//0x15,0x00,
//0x25,0xff,
0x36,0xF0,0xD8, // PHYSICAL_MINIMUM (-10000)
0x46,0x10,0x27, // PHYSICAL_MAXIMUM (10000)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x02, // REPORT_COUNT (02)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0xC0, // END COLLECTION ()

0x09,0x68, // USAGE (Custom Force Data Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x07, // REPORT_ID (07)
0x09,0x22, // USAGE (Effect Block Index)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x25,0x28, // LOGICAL_MAXIMUM (28)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x28, // PHYSICAL_MAXIMUM (28)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x6C, // USAGE (Custom Force Data Offset)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26,0x10,0x27, // LOGICAL_MAXIMUM (10000)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0x10,0x27, // PHYSICAL_MAXIMUM (10000)
0x75,0x10, // REPORT_SIZE (10)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x69, // USAGE (Custom Force Data)
0x15,0x81, // LOGICAL_MINIMUM (-127)
0x25,0x7F, // LOGICAL_MAXIMUM (127)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0xFF,0x00, // PHYSICAL_MAXIMUM (255)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x0C, // REPORT_COUNT (0C)
0x92,0x02,0x01, // OUTPUT ( Data,Var,Abs,Buf)
0xC0, // END COLLECTION ()

0x09,0x66, // USAGE (Download Force Sample)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x08, // REPORT_ID (08)
0x05,0x01, // USAGE_PAGE (Generic Desktop)
0x09,0x30, // USAGE (X)
0x09,0x31, // USAGE (Y)
0x15,0x81, // LOGICAL_MINIMUM (-127)
0x25,0x7F, // LOGICAL_MAXIMUM (127)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0xFF,0x00, // PHYSICAL_MAXIMUM (255)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x02, // REPORT_COUNT (02)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0xC0, // END COLLECTION ()

0x05,0x0F, // USAGE_PAGE (Physical Interface)
0x09,0x77, // USAGE (Effect Operation Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x0A, // REPORT_ID (0A)
0x09,0x22, // USAGE (Effect Block Index)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x25,0x28, // LOGICAL_MAXIMUM (28)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x28, // PHYSICAL_MAXIMUM (28)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x78, // USAGE (78)
0xA1,0x02, // COLLECTION (Logical)
0x09,0x79, // USAGE (Op Effect Start)
0x09,0x7A, // USAGE (Op Effect Start Solo)
0x09,0x7B, // USAGE (Op Effect Stop)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x25,0x03, // LOGICAL_MAXIMUM (03)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x00, // OUTPUT (Data,Ary,Abs)
0xC0, // END COLLECTION ()
0x09,0x7C, // USAGE (Loop Count)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26,0xFF,0x00, // LOGICAL_MAXIMUM (00 FF)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0xFF,0x00, // PHYSICAL_MAXIMUM (00 FF)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0xC0, // END COLLECTION ()

0x09,0x90, // USAGE (PID Block Free Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x0B, // REPORT_ID (0B)
0x09,0x22, // USAGE (Effect Block Index)
0x25,0x28, // LOGICAL_MAXIMUM (28)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x28, // PHYSICAL_MAXIMUM (28)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0xC0, // END COLLECTION ()

0x09,0x96, // USAGE (PID Device Control)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x0C, // REPORT_ID (0C)
0x09,0x97, // USAGE (DC Enable Actuators)
0x09,0x98, // USAGE (DC Disable Actuators)
0x09,0x99, // USAGE (DC Stop All Effects)
0x09,0x9A, // USAGE (DC Device Reset)
0x09,0x9B, // USAGE (DC Device Pause)
0x09,0x9C, // USAGE (DC Device Continue)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x25,0x06, // LOGICAL_MAXIMUM (06)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x00, // OUTPUT (Data)
0xC0, // END COLLECTION ()

0x09,0x7D, // USAGE (Device Gain Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x0D, // REPORT_ID (0D)
0x09,0x7E, // USAGE (Device Gain)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26,0xFF,0x00, // LOGICAL_MAXIMUM (00 FF)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0x10,0x27, // PHYSICAL_MAXIMUM (10000)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0xC0, // END COLLECTION ()

0x09,0x6B, // USAGE (Set Custom Force Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x0E, // REPORT_ID (0E)
0x09,0x22, // USAGE (Effect Block Index)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x25,0x28, // LOGICAL_MAXIMUM (28)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x28, // PHYSICAL_MAXIMUM (28)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x6D, // USAGE (Sample Count)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26,0xFF,0x00, // LOGICAL_MAXIMUM (00 FF)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0xFF,0x00, // PHYSICAL_MAXIMUM (00 FF)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x09,0x51, // USAGE (Sample Period)
0x66,0x03,0x10, // UNIT (Eng Lin:Time)
0x55,0xFD, // UNIT_EXPONENT (-3)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26,0xFF,0x7F, // LOGICAL_MAXIMUM (32767)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0xFF,0x7F, // PHYSICAL_MAXIMUM (32767)
0x75,0x10, // REPORT_SIZE (10)
0x95,0x01, // REPORT_COUNT (01)
0x91,0x02, // OUTPUT (Data,Var,Abs)
0x55,0x00, // UNIT_EXPONENT (00)
0x66,0x00,0x00, // UNIT (None)
0xC0, // END COLLECTION ()

0x09,0xAB, // USAGE (Create New Effect Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x05, // REPORT_ID (05)
0x09,0x25, // USAGE (Effect Type)
0xA1,0x02, // COLLECTION (Logical)
0x09,0x26, // USAGE (26)
0x09,0x27, // USAGE (27)
0x09,0x30, // USAGE (30)
0x09,0x31, // USAGE (31)
0x09,0x32, // USAGE (32)
0x09,0x33, // USAGE (33)
0x09,0x34, // USAGE (34)
0x09,0x40, // USAGE (40)
0x09,0x41, // USAGE (41)
0x09,0x42, // USAGE (42)
0x09,0x43, // USAGE (43)
0x09,0x28, // USAGE (28)
0x25,0x0C, // LOGICAL_MAXIMUM (0C)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x0C, // PHYSICAL_MAXIMUM (0C)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0xB1,0x00, // FEATURE (Data)
0xC0, // END COLLECTION ()
0x05,0x01, // USAGE_PAGE (Generic Desktop)
0x09,0x3B, // USAGE (Byte Count)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x26,0xFF,0x01, // LOGICAL_MAXIMUM (511)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x46,0xFF,0x01, // PHYSICAL_MAXIMUM (511)
0x75,0x0A, // REPORT_SIZE (0A)
0x95,0x01, // REPORT_COUNT (01)
0xB1,0x02, // FEATURE (Data,Var,Abs)
0x75,0x06, // REPORT_SIZE (06)
0xB1,0x01, // FEATURE (Constant,Ary,Abs)
0xC0, // END COLLECTION ()

0x05,0x0F, // USAGE_PAGE (Physical Interface)
0x09,0x89, // USAGE (PID Block Load Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x06, // REPORT_ID (06)
0x09,0x22, // USAGE (Effect Block Index)
0x25,0x28, // LOGICAL_MAXIMUM (28)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x28, // PHYSICAL_MAXIMUM (28)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0xB1,0x02, // FEATURE (Data,Var,Abs)
0x09,0x8B, // USAGE (Block Load Status)
0xA1,0x02, // COLLECTION (Logical)
0x09,0x8C, // USAGE (Block Load Success)
0x09,0x8D, // USAGE (Block Load Full)
0x09,0x8E, // USAGE (Block Load Error)
0x25,0x03, // LOGICAL_MAXIMUM (03)
0x15,0x01, // LOGICAL_MINIMUM (01)
0x35,0x01, // PHYSICAL_MINIMUM (01)
0x45,0x03, // PHYSICAL_MAXIMUM (03)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0xB1,0x00, // FEATURE (Data)
0xC0, // END COLLECTION ()
0x09,0xAC, // USAGE (RAM Pool Available)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x27,0xFF,0xFF,0x00,0x00, // LOGICAL_MAXIMUM (00 00 FF FF)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x47,0xFF,0xFF,0x00,0x00, // PHYSICAL_MAXIMUM (00 00 FF FF)
0x75,0x10, // REPORT_SIZE (10)
0x95,0x01, // REPORT_COUNT (01)
0xB1,0x00, // FEATURE (Data)
0xC0, // END COLLECTION ()

0x09,0x7F, // USAGE (PID Pool Report)
0xA1,0x02, // COLLECTION (Logical)
0x85,0x07, // REPORT_ID (07)
0x09,0x80, // USAGE (RAM Pool Size)
0x75,0x10, // REPORT_SIZE (10)
0x95,0x01, // REPORT_COUNT (01)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x27,0xFF,0xFF,0x00,0x00, // LOGICAL_MAXIMUM (00 00 FF FF)
0x47,0xFF,0xFF,0x00,0x00, // PHYSICAL_MAXIMUM (00 00 FF FF)
0xB1,0x02, // FEATURE (Data,Var,Abs)
0x09,0x83, // USAGE (Simultaneous Effects Max)
0x26,0xFF,0x00, // LOGICAL_MAXIMUM (00 FF)
0x46,0xFF,0x00, // PHYSICAL_MAXIMUM (00 FF)
0x75,0x08, // REPORT_SIZE (08)
0x95,0x01, // REPORT_COUNT (01)
0xB1,0x02, // FEATURE (Data,Var,Abs)
0x09,0xA9, // USAGE (Device Managed Pool)
0x09,0xAA, // USAGE (Shared Parameter Blocks)
0x75,0x01, // REPORT_SIZE (01)
0x95,0x02, // REPORT_COUNT (02)
0x15,0x00, // LOGICAL_MINIMUM (00)
0x25,0x01, // LOGICAL_MAXIMUM (01)
0x35,0x00, // PHYSICAL_MINIMUM (00)
0x45,0x01, // PHYSICAL_MAXIMUM (01)
0xB1,0x02, // FEATURE (Data,Var,Abs)
0x75,0x06, // REPORT_SIZE (06)
0x95,0x01, // REPORT_COUNT (01)
0xB1,0x03, // FEATURE ( Cnst,Var,Abs)
0xC0, // END COLLECTION ()

0xc0, // END_COLLECTION

MetalGear_Honk is offline   Reply With Quote
Old 09-26-2016, 10:09 AM   #28
metalnwood
Senior Member
 
metalnwood's Avatar
 
Join Date: Apr 2010
Location: Auckland, New Zealand
Posts: 1,450
Reputation power: 18
metalnwood is just really nicemetalnwood is just really nicemetalnwood is just really nicemetalnwood is just really nicemetalnwood is just really nicemetalnwood is just really nicemetalnwood is just really nicemetalnwood is just really nicemetalnwood is just really nicemetalnwood is just really nicemetalnwood is just really nice
Default

@Berniyh, linear actuators that are used in the cheaper motion sims (scn5, scn6) wont work on a flight stick as the internal gearing means that the internal motors can move the actuator but pushing against the actuator will not move it.

So a motor is ideal, stepper, servo, basic dc etc as you can have it give off a force while still being able to overcome that force with the stick. Mechanically it's simple enough to connect a stick to a motor.

@MetalGear, I wish I had a bit more time to help with this as it has interested me over the years as well. I might have a bit of time in a couple of weeks.

Have you got your descriptor running on something? arduino or some other environment? I coould at least get it running in the meantime and see if I can do something later.
metalnwood is offline   Reply With Quote
Old 09-26-2016, 10:36 AM   #29
MetalGear_Honk
Junior Member
 
MetalGear_Honk's Avatar
 
Join Date: Nov 2015
Posts: 85
Reputation power: 3
MetalGear_Honk is on a distinguished road
Default

Hi
Yes the descriptor is working but you will need to add some functions for the USB communication.
I use a SDK600 with ATMEGA32U4
And the AVR Studio 7.0
But I think it will work with a teensy or pro micro as well.

I see if I can find the rest of this Project as I had put it on hold for I couldn't sort out the Timing Problems when using multiple Forces at the same time.


Greatings
MetalGear_Honk
MetalGear_Honk is offline   Reply With Quote
Old 09-26-2016, 01:18 PM   #30
hegykc
Member
 
hegykc's Avatar
 
Join Date: Jun 2012
Location: Croatia
Posts: 684
Reputation power: 12
hegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nicehegykc is just really nice
Default

I have every kind of motor and driver on hand. Stepper, servo or DC. If anyone writes a full arduino sketch for X,Y,Z motors for joystick and rudders, not interested in buttons at this moment. I will immediately make elegant FFB gimbal testing rigs, and send them around for testing, as many as needed. I will see if the motors can run it 1:1 or they need to be on a gear/belt ratio.
__________________
<a href=http://forums.eagle.ru/showthread.php?t=104154 target=_blank>http://forums.eagle.ru/showthread.php?t=104154</a>
hegykc is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT. The time now is 08:07 AM. vBulletin Skin by ForumMonkeys. Powered by vBulletin®.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.