WolfJob

Arduino Volume

Nov 11th, 2018
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.24 KB | None | 0 0
  1.  #include <Keyboard.h>
  2.  //Knob
  3.  #define knobA 16
  4.  #define knobB 14
  5.  //Knob Clicker
  6.  #define knobClick 10
  7.  //Right Keys
  8.  #define rightBottom 18
  9.  #define rightMiddle 15
  10.  #define rightTop 19
  11.  //Left Keys
  12.  #define leftBottom 9
  13.  #define leftMiddle 8
  14.  #define leftTop 7
  15.  
  16.  int counter = 0;
  17.  int counterlast = 0;
  18.  
  19.  int aState;
  20.  int aLastState;
  21.  
  22.  int clickPressed;
  23.  int clickPressedLast;
  24.  
  25.  //Left Keys
  26.  int lBottomPressed;
  27.  int lBottomPressedLast;
  28.  
  29.  int lMiddlePressed;
  30.  int lMiddlePressedLast;
  31.  
  32.  int lTopPressed;
  33.  int lTopPressedLast;
  34.  
  35.  //Right Keys
  36.  int rBottomPressed;
  37.  int rBottomPressedLast;
  38.  
  39.  int rMiddlePressed;
  40.  int rMiddlePressedLast;
  41.  
  42.  int rTopPressed;
  43.  int rTopPressedLast;
  44.  
  45.  //Keypress bools
  46.  boolean knobClicked;
  47.  
  48.  boolean lBottom;
  49.  boolean lMiddle;
  50.  boolean lTop;
  51.  
  52.  boolean rBottom;
  53.  boolean rMiddle;
  54.  boolean rTop;
  55.  
  56.  void setup() {
  57.    //Knob
  58.    pinMode (knobA,INPUT);
  59.    pinMode (knobB,INPUT);
  60.    //Knob Clicker
  61.    pinMode (knobClick, INPUT_PULLUP);
  62.    //Right Keys
  63.    pinMode (rightBottom, INPUT_PULLUP);
  64.    pinMode (rightMiddle, INPUT_PULLUP);
  65.    pinMode (rightTop, INPUT_PULLUP);
  66.    //Left Keys
  67.    pinMode (leftBottom, INPUT_PULLUP);
  68.    pinMode (leftMiddle, INPUT_PULLUP);
  69.    pinMode (leftTop, INPUT_PULLUP);
  70.    
  71.    Keyboard.begin();
  72.    aLastState = digitalRead(knobA);
  73.    clickPressedLast = digitalRead(knobClick);
  74.    //Left Keys
  75.    lBottomPressedLast = digitalRead(leftBottom);
  76.    lMiddlePressedLast = digitalRead(leftMiddle);
  77.    lTopPressedLast = digitalRead(leftTop);
  78.    //Right Keys
  79.    rBottomPressedLast = digitalRead(rightBottom);
  80.    rMiddlePressedLast = digitalRead(rightMiddle);
  81.    rTopPressedLast = digitalRead(rightTop);
  82.    
  83.    //Make sure to set keypress bools to false to avoid inverted key detection
  84.    clickPressed = false;
  85.    //Left Keys
  86.    lBottom = false;
  87.    lMiddle = false;
  88.    lTop = false;
  89.    //Right Keys
  90.    rBottom = false;
  91.    rMiddle = false;
  92.    rTop = false;
  93.    
  94.  }
  95.  void loop() {
  96.    
  97.    //Read state of pins
  98.    //Rotary Encoder
  99.    aState = digitalRead(knobA);
  100.    clickPressed = digitalRead(knobClick);
  101.    //Left Keys
  102.    lBottomPressed = digitalRead(leftBottom);
  103.    lMiddlePressed = digitalRead(leftMiddle);
  104.    lTopPressed = digitalRead(leftTop);
  105.    //Right Keys
  106.    rBottomPressed = digitalRead(rightBottom);
  107.    rMiddlePressed = digitalRead(rightMiddle);
  108.    rTopPressed = digitalRead(rightTop);
  109.    
  110.    //Decode rotary encoder
  111.    if (aState != aLastState){    
  112.      if (digitalRead(knobB) != aState) {
  113.        counter ++;
  114.      } else {
  115.        counter --;
  116.      }
  117.      
  118.      if (counter < counterlast){
  119.        Remote.decrease();
  120.      }
  121.      
  122.      if (counter > counterlast){
  123.        Remote.increase();
  124.      }
  125.      counterlast = counter;
  126.    }
  127.    
  128.    //Check for button presses, set bool, do stuff
  129.    if (lBottomPressed != lBottomPressedLast){ if (digitalRead(leftBottom) != lBottomPressed) { }lBottom = !lBottom;
  130.    if (lBottom == true) {
  131.      Remote.previous();
  132.    }else{
  133.  
  134.      }
  135.    }
  136.    
  137.    if (lMiddlePressed != lMiddlePressedLast){ if (digitalRead(leftMiddle) != lMiddlePressed) { } lMiddle = !lMiddle;
  138.    if (lMiddle == true) {
  139.      Keyboard.press(KEY_LEFT_CTRL);
  140.      Keyboard.press(KEY_RIGHT_SHIFT);
  141.      Keyboard.press(KEY_F12);
  142.    }else{
  143.      Keyboard.release(KEY_LEFT_CTRL);
  144.      Keyboard.release(KEY_RIGHT_SHIFT);
  145.      Keyboard.release(KEY_F12);
  146.      }
  147.    }
  148.    
  149.    if (lTopPressed != lTopPressedLast){ if (digitalRead(leftTop) != lTopPressed) { } lTop = !lTop;
  150.    if (lTop == true) {
  151.      Keyboard.release(KEY_LEFT_CTRL);
  152.      Keyboard.press(KEY_RIGHT_SHIFT);
  153.      Keyboard.press(KEY_F11);
  154.    }else{
  155.      Keyboard.release(KEY_LEFT_CTRL);
  156.      Keyboard.release(KEY_RIGHT_SHIFT);
  157.      Keyboard.release(KEY_F11);
  158.      }
  159.    }
  160.    
  161.    if (rBottomPressed != rBottomPressedLast){ if (digitalRead(rightBottom) != rBottomPressed) { } rBottom = !rBottom;
  162.    if (rBottom == true) {
  163.      Keyboard.press(KEY_LEFT_CTRL);
  164.      Keyboard.press(KEY_RIGHT_SHIFT);
  165.      Keyboard.press(KEY_F10);
  166.    }else{
  167.      Keyboard.release(KEY_LEFT_CTRL);
  168.      Keyboard.release(KEY_RIGHT_SHIFT);
  169.      Keyboard.release(KEY_F10);
  170.      }
  171.    }
  172.    
  173.    if (rMiddlePressed != rMiddlePressedLast){ if (digitalRead(rightMiddle) != rMiddlePressed) { } rMiddle = !rMiddle;
  174.    if (rMiddle == true) {
  175.      Remote.next();
  176.    }else{
  177.  
  178.      }
  179.    }
  180.    
  181.    if (rTopPressed != rTopPressedLast){ if (digitalRead(rightTop) != rTopPressed) { } rTop = !rTop;
  182.    if (rTop == true) {
  183.      Keyboard.press(KEY_LEFT_CTRL);
  184.      Keyboard.press(KEY_RIGHT_SHIFT);
  185.      Keyboard.press(KEY_F9);
  186.    }else{
  187.      Keyboard.release(KEY_LEFT_CTRL);
  188.      Keyboard.release(KEY_RIGHT_SHIFT);
  189.      Keyboard.release(KEY_F9);
  190.      }
  191.    }
  192.    
  193.    if (clickPressed != clickPressedLast){ if (digitalRead(knobClick) != clickPressed) { } knobClicked = !knobClicked;
  194.    if (knobClicked == true) {
  195.      Remote.play();
  196.    }else{
  197.      
  198.      }
  199.    }
  200.    
  201.    
  202.    //Reset denoising values every loop
  203.    aLastState = aState;
  204.  
  205.    clickPressedLast = clickPressed;
  206.    
  207.    lBottomPressedLast = lBottomPressed;
  208.    lMiddlePressedLast = lMiddlePressed;
  209.    lTopPressedLast = lTopPressed;
  210.    
  211.    rBottomPressedLast = rBottomPressed;
  212.    rMiddlePressedLast = rMiddlePressed;
  213.    rTopPressedLast = rTopPressed;
  214.  }
Advertisement
Add Comment
Please, Sign In to add comment