Hi,
I am new to arduino and i am working on a Force Feed Back joystick project. I found a library for exactly what i am looking for but i am a little confused on the hookup to the arduino.
This is the Library
They have example code
#include "Joystick.h"
//X-axis & Y-axis REQUIRED
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,
JOYSTICK_TYPE_MULTI_AXIS, 4, 0,
true, true, true, //X,Y,Z
false, false, false,//Rx,Ry,Rz
false, false, false, false, false);
Gains mygains[2];
EffectParams myeffectparams[2];
int32_t forces[2] = {0};
void setup(){
pinMode(A2,INPUT);
pinMode(9,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
Joystick.setXAxisRange(0, 1023);
//Steering wheel
//Joystick.setXAxisRange(-512, 512);
//set X Axis gains
mygains[0].totalGain = 100;//0-100
mygains[0].springGain = 100;//0-100
//enable gains REQUIRED
Joystick.setGains(mygains);
Joystick.begin();
}
void loop(){
int value = analogRead(A2);
//set X Axis Spring Effect Param
myeffectparams[0].springMaxPosition = 1023;
myeffectparams[0].springPosition = value;//0-1023
//Steering wheel
//myeffectparams[0].springMaxPosition = 512;
//myeffectparams[0].springPosition = value - 512; //-512-512
//Send HID data to PC
Joystick.setXAxis(value);
//Recv HID-PID data from PC and caculate forces
//Steering wheel
//Joystick.setXAxis(value - 512);
Joystick.setEffectParams(myeffectparams);
Joystick.getForce(forces);
if(forces[0] > 0){
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
analogWrite(9,abs(forces[0]));
}else{
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
analogWrite(9,abs(forces[0]));
}
delay(1);
}
So in this example we are going to be using pins A0, 6, 7, 9
Seeing that pin A0 is listed as a input, I am assuming that is going to be used for the encoder for the axis
Pin 6, 7, 9 my guess is going to be used to send the Step and Dir to a motor driver for the feed back but which is which. I am using a BTS7960 which has the following pin out
VCC: Module power supply – 5V
GND: Ground
IS-R: Input signal for detecting high current – Straight rotation
IS-L: Input signal for detecting high current – Inverse rotation
EN-R: Output Signal for controlling motor direction – Straight rotation
EN-L: Output Signal for controlling motor direction – Inverse rotation
WM-R: PWM Signal for controlling motor speed – Straight rotation
PWM-L: PWM Signal for controlling motor speed – Inverse rotation
VCC and GND are easy...
In the code, pin 6 and 7 are listed as "HIGH" and "LOW" does that go to IS-R and IS-L to set the direction?
And then Pin 9 is using a "force" value which my guess is a PWM signal, would that go to PWM-L? I am also seeing that the driver has WM-R for a "Straight Rotation".... wouldn't that be set based on which pin is HIGH on 6, and 7?
I think i am on the right track here, just wanted to get your guys opinion?
Thank You
Michael