Multi-Encoder Joystick

Status
Not open for further replies.

jtreiman

New member
I am in no way an experienced coder at all. I picked up a Teensy 3.5 to program inputs from switches for a home cockpit. I have been poking around at a few dozen threads and picking bits and pieces to make a code work. I previously had the first encoder working, but now it seems after a few changes, the encoder reflects button 1 and 2 for either switch rotation direction.

The idea is to have buttons, and encoders on this Teensy. I reserved the first few buttons for Encoders and encoder switches. I posted what I have below. I did remove and add delay, with no solution. Serial Monitor shows no issues.

Thanks for those willing to help.

As for wiring, it is just 1 encoder with GND, DT 0, CLK 1, SW 2

Code:
#define ENCODER_DO_NOT_USE_INTERRUPTS
#include <Encoder.h>
#include <Bounce.h>

Encoder myEnc1(0, 1);
Encoder myEnc2(3, 4);
Encoder myEnc3(6, 7);
Encoder myEnc4(8, 9);
Encoder myEnc5(10, 11);
Encoder myEnc6(12, 13);
Encoder myEnc7(15, 16);
Encoder myEnc8(17, 18);

Bounce button0 = Bounce(0, 10); //ENCODER #1 CRS/HDG
Bounce button1 = Bounce(1, 10); //ENCODER #1 CRS/HDG
Bounce button2 = Bounce(2, 10); //ENCODER #1B CRS/HDG
Bounce button3 = Bounce(3, 10); //ENCODER #2 CRS/HDG
Bounce button4 = Bounce(4, 10); //ENCODER #2 CRS/HDG
Bounce button5 = Bounce(5, 10); //ENCODER #2B CRS/HDG
Bounce button6 = Bounce(6, 10); //ENCODER #3 RMU
Bounce button7 = Bounce(7, 10); //ENCODER #3 RMU
Bounce button8 = Bounce(8, 10); //ENCODER #4 RMU
Bounce button9 = Bounce(9, 10); //ENCODER #4 RMU
Bounce button10 = Bounce(10, 10); //ENCODER #5
Bounce button11 = Bounce(11, 10); //ENCODER #5
Bounce button12 = Bounce(12, 10); //ENCODER #6
Bounce button13 = Bounce(13, 10); //ENCODER #6
Bounce button14 = Bounce(14, 10); //ENCODER #6B
Bounce button15 = Bounce(15, 10); //ENCODER #7
Bounce button16 = Bounce(16, 10); //ENCODER #7
Bounce button17 = Bounce(17, 10); //ENCODER #8
Bounce button18 = Bounce(18, 10); //ENCODER #8
Bounce button19 = Bounce(19, 10); //ENCODER #8B
Bounce button20 = Bounce(20, 10); //GPS#1
Bounce button21 = Bounce(21, 10); //GPS#2
Bounce button22 = Bounce(22, 10); //GPS#3
Bounce button23 = Bounce(23, 10); //GPS#4
Bounce button24 = Bounce(24, 10); //GPS#5
Bounce button25 = Bounce(25, 10); //GPS#6
Bounce button26 = Bounce(26, 10); //GPS#7
Bounce button27 = Bounce(27, 10); //GPS#8
Bounce button28 = Bounce(28, 10); //GPS#9
Bounce button29 = Bounce(29, 10); //GPS#10
Bounce button30 = Bounce(30, 10); //RMU#1
Bounce button31 = Bounce(31, 10); //RMU#2
Bounce button32 = Bounce(32, 10); //RMU#3
Bounce button33 = Bounce(33, 10); //RMU#4
Bounce button34 = Bounce(34, 10); //RMU#5
Bounce button35 = Bounce(35, 10); //RMU#6
Bounce button36 = Bounce(36, 10); //RMU#7
Bounce button37 = Bounce(37, 10); //RMU#8
Bounce button38 = Bounce(38, 10); //RMU#9
Bounce button39 = Bounce(39, 10); //RMU#10
Bounce button40 = Bounce(40, 10); //RMU#11
Bounce button41 = Bounce(41, 10); //RMU#12
Bounce button42 = Bounce(42, 10); //RMU#13
Bounce button43 = Bounce(43, 10); //RMU#14
Bounce button44 = Bounce(44, 10); //RMU#15
Bounce button45 = Bounce(45, 10); //RMU#16
Bounce button46 = Bounce(46, 10); //RMU#17
Bounce button47 = Bounce(47, 10); //EFIS#1
Bounce button48 = Bounce(48, 10); //EFIS#2
Bounce button49 = Bounce(49, 10); //EFIS#3
Bounce button50 = Bounce(50, 10); //EFIS#4
Bounce button51 = Bounce(51, 10); //EFIS#5
Bounce button52 = Bounce(52, 10); //EFIS#6
Bounce button53 = Bounce(53, 10); //EFIS#7
Bounce button54 = Bounce(54, 10); //EFIS#8
Bounce button55 = Bounce(55, 10); //EHSI-EADI#1
Bounce button56 = Bounce(56, 10); //EHSI-EADI#2
Bounce button57 = Bounce(57, 10); //EHSI-EADI#3

void setup() {
  Serial.begin(9600);
  Serial.println("Basic NoInterrupts Test:");

  pinMode(0, INPUT_PULLUP);
  pinMode(1, INPUT_PULLUP);
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
  pinMode(6, INPUT_PULLUP);
  pinMode(7, INPUT_PULLUP);
  pinMode(8, INPUT_PULLUP);
  pinMode(9, INPUT_PULLUP);
  pinMode(10, INPUT_PULLUP);
  pinMode(11, INPUT_PULLUP);
  pinMode(12, INPUT_PULLUP);
  pinMode(13, INPUT_PULLUP);
  pinMode(14, INPUT_PULLUP);
  pinMode(15, INPUT_PULLUP);
  pinMode(16, INPUT_PULLUP);
  pinMode(17, INPUT_PULLUP);
  pinMode(18, INPUT_PULLUP);
  pinMode(19, INPUT_PULLUP);
  pinMode(20, INPUT_PULLUP);
  pinMode(21, INPUT_PULLUP);
  pinMode(22, INPUT_PULLUP);
  pinMode(23, INPUT_PULLUP);
  pinMode(24, INPUT_PULLUP);
  pinMode(25, INPUT_PULLUP);
  pinMode(26, INPUT_PULLUP);
  pinMode(27, INPUT_PULLUP);
  pinMode(28, INPUT_PULLUP);
  pinMode(29, INPUT_PULLUP);
  pinMode(30, INPUT_PULLUP);
  pinMode(31, INPUT_PULLUP);
  pinMode(32, INPUT_PULLUP);
  pinMode(33, INPUT_PULLUP);
  pinMode(34, INPUT_PULLUP);
  pinMode(35, INPUT_PULLUP);
  pinMode(36, INPUT_PULLUP);
  pinMode(37, INPUT_PULLUP);
  pinMode(38, INPUT_PULLUP);
  pinMode(39, INPUT_PULLUP);
  pinMode(40, INPUT_PULLUP);
  pinMode(41, INPUT_PULLUP);
  pinMode(42, INPUT_PULLUP);
  pinMode(43, INPUT_PULLUP);
  pinMode(44, INPUT_PULLUP);
  pinMode(45, INPUT_PULLUP);
  pinMode(46, INPUT_PULLUP);
  pinMode(47, INPUT_PULLUP);
  pinMode(48, INPUT_PULLUP);
  pinMode(49, INPUT_PULLUP);
  pinMode(50, INPUT_PULLUP);
  pinMode(51, INPUT_PULLUP);
  pinMode(52, INPUT_PULLUP);
  pinMode(53, INPUT_PULLUP);
  pinMode(54, INPUT_PULLUP);
  pinMode(55, INPUT_PULLUP);
  pinMode(56, INPUT_PULLUP);
  pinMode(57, INPUT_PULLUP);
}

long oldPosition1  = -999;
long oldPosition2  = -999;
long oldPosition3  = -999;
long oldPosition4  = -999;
long oldPosition5  = -999;
long oldPosition6  = -999;
long oldPosition7  = -999;
long oldPosition8  = -999;

void loop() {

  button0.update();
  button1.update();  
  button2.update();
  button3.update();
  button4.update();
  button5.update();
  button6.update();
  button7.update();
  button8.update();
  button9.update();
  button10.update();
  button11.update();
  button12.update();
  button13.update();
  button14.update();
  button15.update();
  button16.update();
  button17.update();
  button18.update();
  button19.update();
  button20.update();
  button21.update();
  button22.update();
  button23.update();
  button24.update();
  button25.update();
  button26.update();
  button27.update();
  button28.update();
  button29.update();
  button30.update();
  button31.update();
  button32.update();
  button33.update();
  button34.update();
  button35.update();
  button36.update();
  button37.update();
  button38.update();
  button39.update();
  button40.update();
  button41.update();
  button42.update();
  button43.update();
  button44.update();
  button45.update();
  button46.update();
  button47.update();
  button48.update();
  button49.update();
  button50.update();
  button51.update();
  button52.update();
  button53.update();
  button54.update();
  button55.update();
  button56.update();
  button57.update();

  //
  // Button Falling
  //
  
  if (button0.fallingEdge()) {
    Joystick.button(1, 1);
  }
  if (button1.fallingEdge()) {
    Joystick.button(2, 1);
  }
  if (button2.fallingEdge()) {
    Joystick.button(3, 1);
  }
  if (button3.fallingEdge()) {
    Joystick.button(4, 1);
  }
  if (button4.fallingEdge()) {
    Joystick.button(5, 1);
  }
  if (button5.fallingEdge()) {
    Joystick.button(6, 1);
  }
  if (button6.fallingEdge()) {
    Joystick.button(7, 1);
  }
  if (button7.fallingEdge()) {
    Joystick.button(8, 1);
  }
  if (button8.fallingEdge()) {
    Joystick.button(9, 1);
  }
  if (button9.fallingEdge()) {
    Joystick.button(10, 1);
  }
  if (button10.fallingEdge()) {
    Joystick.button(11, 1);
  }
  if (button11.fallingEdge()) {
    Joystick.button(12, 1);
  }
  if (button12.fallingEdge()) {
    Joystick.button(13, 1);
  }
  if (button13.fallingEdge()) {
    Joystick.button(14, 1);
  }
  if (button14.fallingEdge()) {
    Joystick.button(15, 1);
  }
  if (button15.fallingEdge()) {
    Joystick.button(16, 1);
  }
  if (button16.fallingEdge()) {
    Joystick.button(17, 1);
  }
  if (button17.fallingEdge()) {
    Joystick.button(18, 1);
  }
  if (button18.fallingEdge()) {
    Joystick.button(19, 1);
  }
  if (button19.fallingEdge()) {
    Joystick.button(20, 1);
  }
  if (button20.fallingEdge()) {
    Joystick.button(21, 1);
  }
  if (button21.fallingEdge()) {
    Joystick.button(22, 1);
  }
  if (button22.fallingEdge()) {
    Joystick.button(23, 1);
  }
  if (button23.fallingEdge()) {
    Joystick.button(24, 1);
  }
  if (button24.fallingEdge()) {
    Joystick.button(25, 1);
  }
  if (button25.fallingEdge()) {
    Joystick.button(26, 1);
  }
  if (button26.fallingEdge()) {
    Joystick.button(27, 1);
  }
  if (button27.fallingEdge()) {
    Joystick.button(28, 1);
  }
  if (button28.fallingEdge()) {
    Joystick.button(29, 1);
  }
  if (button29.fallingEdge()) {
    Joystick.button(30, 1);
  }
  if (button30.fallingEdge()) {
    Joystick.button(31, 1);
  }
  if (button31.fallingEdge()) {
    Joystick.button(32, 1);
  }
  if (button32.fallingEdge()) {
    Joystick.button(33, 1);
  }
  if (button33.fallingEdge()) {
    Joystick.button(34, 1);
  }
  if (button34.fallingEdge()) {
    Joystick.button(35, 1);
  }
  if (button35.fallingEdge()) {
    Joystick.button(36, 1);
  }
  if (button36.fallingEdge()) {
    Joystick.button(37, 1);
  }
  if (button37.fallingEdge()) {
    Joystick.button(38, 1);
  }
  if (button38.fallingEdge()) {
    Joystick.button(39, 1);
  }
  if (button39.fallingEdge()) {
    Joystick.button(40, 1);
  }
  if (button40.fallingEdge()) {
    Joystick.button(41, 1);
  }
  if (button41.fallingEdge()) {
    Joystick.button(42, 1);
  }
  if (button42.fallingEdge()) {
    Joystick.button(43, 1);
  }
  if (button43.fallingEdge()) {
    Joystick.button(44, 1);
  }
  if (button44.fallingEdge()) {
    Joystick.button(45, 1);
  }
  if (button45.fallingEdge()) {
    Joystick.button(46, 1);
  }
  if (button46.fallingEdge()) {
    Joystick.button(47, 1);
  }
  if (button47.fallingEdge()) {
    Joystick.button(48, 1);
  }
  if (button48.fallingEdge()) {
    Joystick.button(49, 1);
  }
  if (button49.fallingEdge()) {
    Joystick.button(50, 1);
  }
  if (button50.fallingEdge()) {
    Joystick.button(51, 1);
  }
  if (button51.fallingEdge()) {
    Joystick.button(52, 1);
  }
  if (button52.fallingEdge()) {
    Joystick.button(53, 1);
  }
  if (button53.fallingEdge()) {
    Joystick.button(54, 1);
  }
  if (button54.fallingEdge()) {
    Joystick.button(55, 1);
  }
  if (button55.fallingEdge()) {
    Joystick.button(56, 1);
  }
  if (button56.fallingEdge()) {
    Joystick.button(57, 1);
  }
  if (button57.fallingEdge()) {
    Joystick.button(58, 1);
  }
  

  //
  // Button Rising
  //
  

   if (button0.risingEdge()) {
    Joystick.button(1, 0);
  }
  if (button1.risingEdge()) {
    Joystick.button(2, 0);
  }
  if (button2.risingEdge()) {
    Joystick.button(3, 0);
  }
  if (button3.risingEdge()) {
    Joystick.button(4, 0);
  }
  if (button4.risingEdge()) {
    Joystick.button(5, 0);
  }
  if (button5.risingEdge()) {
    Joystick.button(6, 0);
  }
  if (button6.risingEdge()) {
    Joystick.button(7, 0);
  }
  if (button7.risingEdge()) {
    Joystick.button(8, 0);
  }
  if (button8.risingEdge()) {
    Joystick.button(9, 0);
  }
  if (button9.risingEdge()) {
    Joystick.button(10, 0);
  }
  if (button10.risingEdge()) {
    Joystick.button(11, 0);
  }
  if (button11.risingEdge()) {
    Joystick.button(12, 0);
  }
  if (button12.risingEdge()) {
    Joystick.button(13, 0);
  }
  if (button13.risingEdge()) {
    Joystick.button(14, 0);
  }
  if (button14.risingEdge()) {
    Joystick.button(15, 0);
  }
  if (button15.risingEdge()) {
    Joystick.button(16, 0);
  }
  if (button16.risingEdge()) {
    Joystick.button(17, 0);
  }
  if (button17.risingEdge()) {
    Joystick.button(18, 0);
  }
  if (button18.risingEdge()) {
    Joystick.button(19, 0);
  }
  if (button19.risingEdge()) {
    Joystick.button(20, 0);
  }
  if (button20.risingEdge()) {
    Joystick.button(21, 0);
  }
  if (button21.risingEdge()) {
    Joystick.button(22, 0);
  }
  if (button22.risingEdge()) {
    Joystick.button(23, 0);
  }
  if (button23.risingEdge()) {
    Joystick.button(24, 0);
  }
  if (button24.risingEdge()) {
    Joystick.button(25, 0);
  }
  if (button25.risingEdge()) {
    Joystick.button(26, 0);
  }
  if (button26.risingEdge()) {
    Joystick.button(27, 0);
  }
  if (button27.risingEdge()) {
    Joystick.button(28, 0);
  }
  if (button28.risingEdge()) {
    Joystick.button(29, 0);
  }
  if (button29.risingEdge()) {
    Joystick.button(30, 0);
  }
  if (button30.risingEdge()) {
    Joystick.button(31, 0);
  }
  if (button31.risingEdge()) {
    Joystick.button(32, 0);
  }
  if (button32.risingEdge()) {
    Joystick.button(33, 0);
  }
  if (button33.risingEdge()) {
    Joystick.button(34, 0);
  }
  if (button34.risingEdge()) {
    Joystick.button(35, 0);
  }
  if (button35.risingEdge()) {
    Joystick.button(36, 0);
  }
  if (button36.risingEdge()) {
    Joystick.button(37, 0);
  }
  if (button37.risingEdge()) {
    Joystick.button(38, 0);
  }
  if (button38.risingEdge()) {
    Joystick.button(39, 0);
  }
  if (button39.risingEdge()) {
    Joystick.button(40, 0);
  }
  if (button40.risingEdge()) {
    Joystick.button(41, 0);
  }
  if (button41.risingEdge()) {
    Joystick.button(42, 0);
  }
  if (button42.risingEdge()) {
    Joystick.button(43, 0);
  }
  if (button43.risingEdge()) {
    Joystick.button(44, 0);
  }
  if (button44.risingEdge()) {
    Joystick.button(45, 0);
  }
  if (button45.risingEdge()) {
    Joystick.button(46, 0);
  }
  if (button46.risingEdge()) {
    Joystick.button(47, 0);
  }
  if (button47.risingEdge()) {
    Joystick.button(48, 0);
  }
  if (button48.risingEdge()) {
    Joystick.button(49, 0);
  }
  if (button49.risingEdge()) {
    Joystick.button(50, 0);
  }
  if (button50.risingEdge()) {
    Joystick.button(51, 0);
  }
  if (button51.risingEdge()) {
    Joystick.button(52, 0);
  }
  if (button52.risingEdge()) {
    Joystick.button(53, 0);
  }
  if (button53.risingEdge()) {
    Joystick.button(54, 0);
  }
  if (button54.risingEdge()) {
    Joystick.button(55, 0);
  }
  if (button55.risingEdge()) {
    Joystick.button(56, 0);
  }
  if (button56.risingEdge()) {
    Joystick.button(57, 0);
  }
  if (button57.risingEdge()) {
    Joystick.button(58, 0);
  }

  
  //
  // ENCODERS
  //
  
  
  long newPosition1 = myEnc1.read()/4;
  if (newPosition1 != oldPosition1) {
    if (newPosition1 > oldPosition1) {
      Joystick.button(1,1);
      Joystick.button(1,0);
    }
    else if (newPosition1 < oldPosition1) {
      Joystick.button(2,1);
      Joystick.button(2,0);
    }
       
    oldPosition1 = newPosition1;
    Serial.println(newPosition1);
  }
  long newPosition2 = myEnc2.read()/4;
  if (newPosition2 != oldPosition2) {
    if (newPosition2 > oldPosition2) {
      Joystick.button(4,1);
      delay(12);
      Joystick.button(4,0);
    }
    else if (newPosition2 < oldPosition2) {
      Joystick.button(5,1);
      delay(12);
      Joystick.button(5,0);
    }
       
    oldPosition2 = newPosition2;
    Serial.println(newPosition2);
  }
  long newPosition3 = myEnc3.read()/4;
  if (newPosition3 != oldPosition3) {
    if (newPosition3 > oldPosition3) {
      Joystick.button(7,1);
      delay(12);
      Joystick.button(7,0);
    }
    else if (newPosition3 < oldPosition3) {
      Joystick.button(8,1);
      delay(12);
      Joystick.button(8,0);
    }
       
    oldPosition3 = newPosition3;
    Serial.println(newPosition3);
  }
  long newPosition4 = myEnc4.read()/4;
  if (newPosition4 != oldPosition4) {
    if (newPosition4 > oldPosition4) {
      Joystick.button(9,1);
      delay(12);
      Joystick.button(9,0);
    }
    else if (newPosition4 < oldPosition4) {
      Joystick.button(10,1);
      delay(12);
      Joystick.button(10,0);
    }
       
    oldPosition4 = newPosition4;
    Serial.println(newPosition4);
  }
  long newPosition5 = myEnc5.read()/4;
  if (newPosition5 != oldPosition5) {
    if (newPosition5 > oldPosition5) {
      Joystick.button(11,1);
      delay(12);
      Joystick.button(11,0);
    }
    else if (newPosition5 < oldPosition5) {
      Joystick.button(12,1);
      delay(12);
      Joystick.button(12,0);
    }
       
    oldPosition5 = newPosition5;
    Serial.println(newPosition5);
  }
  long newPosition6 = myEnc6.read()/4;
  if (newPosition6 != oldPosition6) {
    if (newPosition6 > oldPosition6) {
      Joystick.button(13,1);
      delay(12);
      Joystick.button(13,0);
    }
    else if (newPosition6 < oldPosition6) {
      Joystick.button(14,1);
      delay(12);
      Joystick.button(14,0);
    }
       
    oldPosition6 = newPosition6;
    Serial.println(newPosition6);
  }
  long newPosition7 = myEnc7.read()/4;
  if (newPosition7 != oldPosition7) {
    if (newPosition7 > oldPosition7) {
      Joystick.button(16,1);
      delay(12);
      Joystick.button(16,0);
    }
    else if (newPosition7 < oldPosition7) {
      Joystick.button(17,1);
      delay(12);
      Joystick.button(17,0);
    }
       
    oldPosition7 = newPosition7;
    Serial.println(newPosition7);
  }
  long newPosition8 = myEnc8.read()/4;
  if (newPosition8 != oldPosition8) {
    if (newPosition8 > oldPosition8) {
      Joystick.button(18,1);
      delay(12);
      Joystick.button(18,0);
    }
    else if (newPosition8 < oldPosition8) {
      Joystick.button(19,1);
      delay(12);
      Joystick.button(19,0);
    }
       
    oldPosition8 = newPosition8;
    Serial.println(newPosition8);
  }
}
 
Status
Not open for further replies.
Back
Top