Professional Documents
Culture Documents
Joystick Final - Ino
Joystick Final - Ino
com/MHeironimus)
//Beginners Guide, by Daniel Cantore
//Example Code (Oct 2020), with in-depth commenting
Adafruit_MCP23X17 mcp0;
Adafruit_MCP23X17 mcp1;
int ValAxis1 = 0;
int ValAxis2 = 0;
int ValAxis3 = 0;
int ValAxis4 = 0;
int ValAxis5 = 0;
int ValAxis6 = 0;
int ValAxis7 = 0;
int ValAxis8 = 0;
//Setting up Buttons
//Updating a static variable gives greater stability than reading directly from the
digital pin.
//Giving Default Values to the Buttons for later use
int lastButtonState0[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int lastButtonState1[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
void setup() {
Serial.begin(9600);
if (!mcp1.begin_I2C(0X21)) {
SerialUSB.println("Error MCP1");
while (1);
}
//mcp1.begin_I2C(1); // use address 0X21
for (int index = 0; index < 16; index++)
{
mcp1.pinMode(index, INPUT_PULLUP);
SerialUSB.println("MCP1.PULLUP");
}
void loop() {
ValAxis1 = analogRead(Axis1);
ValAxis1 = map(ValAxis1,0,1023,0,255);
Joystick.setZAxis(ValAxis1);
ValAxis2 = analogRead(Axis2);
ValAxis2 = map(ValAxis2,0,1023,0,255);
Joystick.setRxAxis(ValAxis2);
ValAxis3 = analogRead(Axis3);
//ValAxis3 = map(ValAxis3,0,1023,0,255);
ValAxis3 = map(ValAxis3,0,1023,255,0);
Joystick.setRyAxis(ValAxis3);
ValAxis4 = analogRead(Axis4);
//ValAxis4 = map(ValAxis4,0,1023,0,255);
ValAxis4 = map(ValAxis4,0,1023,255,0); // Invert
Joystick.setRzAxis(ValAxis4);
// ValAxis5 = analogRead(Axis5);
// ValAxis5 = map(ValAxis5,0,1023,0,255);
// Joystick.setRudder(ValAxis5);
ValAxis6 = analogRead(Axis6);
ValAxis6 = map(ValAxis6,0,1023,0,255);
Joystick.setThrottle(ValAxis6);
ValAxis7 = analogRead(Axis7);
ValAxis7 = map(ValAxis7,0,1023,0,255);
Joystick.setXAxis(ValAxis7);
ValAxis8 = analogRead(Axis8);
ValAxis8 = map(ValAxis8,0,1023,0,255);
Joystick.setYAxis(ValAxis8);
//Pole Delay/Debounce
//To reduce unessecary processing, the frequency of the reading loop is delayed.
The value(in ms) can be changed to match requirement
delay(10);
Joystick.sendState();
}