Guest User

Zoom Button

a guest
Jan 29th, 2021
1,695
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<Keyboard.h>
  2. #include "LowPassFilter.hpp"
  3.  
  4. #define OSX // LINUX, OSX or WINDOWS
  5. #define NORMAL // define DEBUG for development or NORMAL for production
  6.  
  7. constexpr int threshold = 1023 / 2; // set threshold as a constant expression, calcualted at compile time.
  8. int raw_value = 0;
  9. int filtered_value = 0;
  10. bool is_button_pressed = false;
  11. bool keystroke_sent = false;
  12. LowPassFilter lpf(1, 0.007);
  13.  
  14. void check_state_and_send_shortcut(){
  15.   if (is_button_pressed && !keystroke_sent){
  16.     //kill screenshare in case it was open
  17.     #ifdef OSX
  18.       Keyboard.press(KEY_LEFT_GUI);
  19.       Keyboard.write('S');
  20.     #endif
  21.     #ifdef WINDOWS
  22.       Keyboard.press(KEY_LEFT_ALT);
  23.       Keyboard.write('s');
  24.     #endif
  25.     Keyboard.releaseAll();
  26.     // send escape key to exit screenshare select window (if screenshare was off)
  27.     Keyboard.write(KEY_ESC);
  28.     // send leave meeting command
  29.     #ifdef OSX
  30.       Keyboard.press(KEY_LEFT_GUI);
  31.       Keyboard.write('w');
  32.     #endif
  33.     #ifdef WINDOWS
  34.       Keyboard.press(KEY_LEFT_ALT);
  35.       Keyboard.write('q');
  36.     #endif
  37.     Keyboard.releaseAll();
  38.     // press and release enter key to confirm we want to exit
  39.     Keyboard.write(KEY_RETURN);
  40.     keystroke_sent = true;
  41.   }
  42.   Keyboard.end();
  43. }
  44.  
  45. void turn_on_light(){
  46.   digitalWrite(13, HIGH);
  47. }
  48.  
  49. void turn_off_light(){
  50.   digitalWrite(13, LOW);
  51. }
  52.  
  53. void setup() {
  54.   #ifdef DEBUG
  55.     Serial.begin(115200);
  56.   #endif
  57.   pinMode(13, OUTPUT);
  58.   pinMode(A0, INPUT_PULLUP);
  59.   Keyboard.begin();
  60. }
  61.  
  62. void loop() {
  63.   raw_value = analogRead(A0);
  64.   filtered_value = lpf.update(raw_value);
  65.   #ifdef DEBUG
  66.     Serial.print("raw value is: ");
  67.     Serial.print(raw_value);
  68.     Serial.print(" | filtered value is: ");
  69.     Serial.print(filtered_value);
  70.     Serial.println();
  71.   #endif
  72.   if ( filtered_value < threshold) {
  73.     is_button_pressed = true;
  74.     turn_on_light();
  75.   }
  76.   else {
  77.     is_button_pressed = false;
  78.     keystroke_sent = false;
  79.     turn_off_light();
  80.   }
  81.   #ifdef NORMAL
  82.     check_state_and_send_shortcut();
  83.   #endif
  84. }
  85.  
Advertisement
Add Comment
Please, Sign In to add comment