Adding new firmware examples
This commit is contained in:
		| @@ -0,0 +1,96 @@ | |||||||
|  | /****************************************************************************** | ||||||
|  |   Example_3a_Qwiic_Joystick_HID_Mouse.ino | ||||||
|  |   Written by: Ho Yun "Bobby" Chan | ||||||
|  |   Date: January 13, 2020 | ||||||
|  |   Development Environment Specifics: | ||||||
|  |     Arduino IDE 1.8.9 | ||||||
|  |  | ||||||
|  |   Description: | ||||||
|  |     Based on the Jim's Pro Micro "HID Mouse" and Wes' Qwiic Joystick "basic reading" | ||||||
|  |     examples, this example moves your computer's mouse based on the joystick's | ||||||
|  |     position. Pressing down on the joystick's will enable a mouse's left click. | ||||||
|  |     The left click will relese as soon as you stop pressing down on the joystick. | ||||||
|  |  | ||||||
|  |   Libraries: | ||||||
|  |     Mouse.h (included with Arduino IDE) | ||||||
|  |     Wire.h (included with Arduino IDE) | ||||||
|  |     SparkFun_Qwiic_Joystick_Arduino_Library.h (included in the src folder) http://librarymanager/All#SparkFun_joystick | ||||||
|  |  | ||||||
|  |   License: | ||||||
|  |     This code is released under the MIT License (http://opensource.org/licenses/MIT) | ||||||
|  |  | ||||||
|  |   ******************************************************************************/ | ||||||
|  |  | ||||||
|  | #include <Mouse.h> | ||||||
|  | #include <Wire.h> | ||||||
|  |  | ||||||
|  | #include "SparkFun_Qwiic_Joystick_Arduino_Library.h" //Click here to get the library: http://librarymanager/All#SparkFun_joystick | ||||||
|  | JOYSTICK joystick;                                   //Create instance of this object | ||||||
|  |  | ||||||
|  | int vertZero, horzZero;       // Stores the initial value of each axis, usually around 512 | ||||||
|  | int vertValue, horzValue;     // Stores current analog output of each axis | ||||||
|  | const int sensitivity = 200;  // Higher sensitivity value = slower mouse, should be <= about 500 | ||||||
|  | int mouseClickFlag = 0; | ||||||
|  |  | ||||||
|  | //int invertMouse = 1;        //Invert joystick based on orientation | ||||||
|  | int invertMouse = -1;         //Noninverted joystick based on orientation | ||||||
|  |  | ||||||
|  | //Debug mode, comment one of these lines out using a syntax | ||||||
|  | //for a single line comment ("//"): | ||||||
|  | #define DEBUG 0       //0 = HID only | ||||||
|  | //#define DEBUG 1     //1 = HID with serial output | ||||||
|  |  | ||||||
|  | void setup() { | ||||||
|  | #if DEBUG | ||||||
|  |   Serial.begin(9600); | ||||||
|  |   Serial.println("Example 3: HID Mouse w/ Qwiic Joystick"); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |   if (joystick.begin() == false) | ||||||
|  |   { | ||||||
|  | #if DEBUG | ||||||
|  |     Serial.println("Joystick does not appear to be connected. Please check wiring. Freezing..."); | ||||||
|  | #endif | ||||||
|  |     while (1); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   delay(1000);  // short delay to let outputs settle | ||||||
|  |   vertZero = joystick.getVertical();  // get the initial values | ||||||
|  |   horzZero = joystick.getHorizontal();  // Joystick should be in neutral position when reading these | ||||||
|  |  | ||||||
|  |   Mouse.begin(); //Init mouse emulation | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void loop() { | ||||||
|  | #if DEBUG | ||||||
|  |   Serial.print("X: "); | ||||||
|  |   Serial.print(joystick.getHorizontal()); | ||||||
|  |  | ||||||
|  |   Serial.print(" Y: "); | ||||||
|  |   Serial.print(joystick.getVertical()); | ||||||
|  |  | ||||||
|  |   Serial.print(" Button: "); | ||||||
|  |   Serial.println(joystick.getButton()); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |   vertValue = joystick.getVertical() - vertZero; // read vertical offset | ||||||
|  |   horzValue = joystick.getHorizontal() - horzZero;  // read horizontal offset | ||||||
|  |  | ||||||
|  |   if (vertValue != 0) | ||||||
|  |     Mouse.move(0, (invertMouse * (vertValue / sensitivity)), 0); // move mouse on y axis | ||||||
|  |   if (horzValue != 0) | ||||||
|  |     Mouse.move((invertMouse * (horzValue / sensitivity)), 0, 0); // move mouse on x axis | ||||||
|  |  | ||||||
|  |   if ((joystick.getButton() == 0) && (!mouseClickFlag))  // if the joystick button is pressed | ||||||
|  |   { | ||||||
|  |     mouseClickFlag = 1; | ||||||
|  |     Mouse.press(MOUSE_LEFT);  // click the left button down | ||||||
|  |   } | ||||||
|  |   else if ((joystick.getButton()) && (mouseClickFlag)) // if the joystick button is not pressed | ||||||
|  |   { | ||||||
|  |     mouseClickFlag = 0; | ||||||
|  |     Mouse.release(MOUSE_LEFT);  // release the left button | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   //delay(200); //remove "//" on this line if you need a small delay | ||||||
|  | } | ||||||
| @@ -0,0 +1,95 @@ | |||||||
|  | /****************************************************************************** | ||||||
|  |   Example_3b_Qwiic_Keypad_HID_Keyboard.ino | ||||||
|  |   Written by: Ho Yun "Bobby" Chan | ||||||
|  |   Date: February 6, 2020 | ||||||
|  |   Development Environment Specifics: | ||||||
|  |     Arduino IDE 1.8.9 | ||||||
|  |  | ||||||
|  |   Description: | ||||||
|  |     Based on the Jim's Pro Micro "HID Mouse" and Pete' Qwiic Keypad "read button" | ||||||
|  |     examples, this example outputs keyboard presses associated with the keypad. | ||||||
|  |  | ||||||
|  |   Libraries: | ||||||
|  |    Keyboard.h (included with Arduino IDE) | ||||||
|  |    Wire.h (included with Arduino IDE) | ||||||
|  |    SparkFun_Qwiic_Keypad_Arduino_Library.h (included in the src folder) http://librarymanager/All#SparkFun_keypad | ||||||
|  |  | ||||||
|  |   License: | ||||||
|  |     This code is released under the MIT License (http://opensource.org/licenses/MIT) | ||||||
|  |  | ||||||
|  | ******************************************************************************/ | ||||||
|  |  | ||||||
|  | #include <Keyboard.h> | ||||||
|  | #include <Wire.h> | ||||||
|  | #include "SparkFun_Qwiic_Keypad_Arduino_Library.h" //Click here to get the library: http://librarymanager/All#SparkFun_keypad | ||||||
|  | KEYPAD keypad1;                                    //Create instance of this object | ||||||
|  |  | ||||||
|  | void setup() { | ||||||
|  |   Serial.begin(9600); | ||||||
|  |   Serial.println("Qwiic KeyPad Example"); | ||||||
|  |  | ||||||
|  |   if (keypad1.begin() == false)   // Note, using begin() like this will use default I2C address, 0x4B. | ||||||
|  |     // You can pass begin() a different address like so: keypad1.begin(Wire, 0x4A). | ||||||
|  |   { | ||||||
|  |     Serial.println("Keypad does not appear to be connected. Please check wiring. Freezing..."); | ||||||
|  |     while (1); | ||||||
|  |   } | ||||||
|  |   Serial.print("Initialized. Firmware Version: "); | ||||||
|  |   Serial.println(keypad1.getVersion()); | ||||||
|  |   Serial.println("Press a button: * to do a space. # to go to next line."); | ||||||
|  |  | ||||||
|  |   Keyboard.begin(); //Init keyboard emulation | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void loop() { | ||||||
|  |   keypad1.updateFIFO();  // necessary for keypad to pull button from stack to readable register | ||||||
|  |   char button = keypad1.getButton(); | ||||||
|  |  | ||||||
|  |   if (button == -1) | ||||||
|  |   { | ||||||
|  |     Serial.println("No keypad detected"); | ||||||
|  |     delay(1000); | ||||||
|  |   } | ||||||
|  |   else if (button != 0) | ||||||
|  |   { | ||||||
|  |     if (button == '0') {//note that this is a keypad '0' not the button press itself | ||||||
|  |       Keyboard.write('0'); | ||||||
|  |     } | ||||||
|  |     else if (button == '1') { | ||||||
|  |       Keyboard.write('1'); | ||||||
|  |     } | ||||||
|  |     else if (button == '2') { | ||||||
|  |       Keyboard.write('2'); | ||||||
|  |     } | ||||||
|  |     else if (button == '3') { | ||||||
|  |       Keyboard.write('3'); | ||||||
|  |     } | ||||||
|  |     else if (button == '4') { | ||||||
|  |       Keyboard.write('4'); | ||||||
|  |     } | ||||||
|  |     else if (button == '5') { | ||||||
|  |       Keyboard.write('5'); | ||||||
|  |     } | ||||||
|  |     else if (button == '6') { | ||||||
|  |       Keyboard.write('6'); | ||||||
|  |     } | ||||||
|  |     else if (button == '7') { | ||||||
|  |       Keyboard.write('7'); | ||||||
|  |     } | ||||||
|  |     else if (button == '8') { | ||||||
|  |       Keyboard.write('8'); | ||||||
|  |     } | ||||||
|  |     else if (button == '9') { | ||||||
|  |       Keyboard.write('9'); | ||||||
|  |     } | ||||||
|  |     else if (button == '#') { | ||||||
|  |       Keyboard.write('#'); | ||||||
|  |     } | ||||||
|  |     else if (button == '*') { | ||||||
|  |       Keyboard.write('*'); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   //Do something else. Don't call your Keypad a ton otherwise you'll tie up the I2C bus | ||||||
|  |   delay(25); //25 is good, more is better | ||||||
|  | } | ||||||
| @@ -0,0 +1,178 @@ | |||||||
|  | /****************************************************************************** | ||||||
|  |   Example_3c_Qwiic_HID_Mouse_Keyboard_Combined.ino | ||||||
|  |   Written by: Ho Yun "Bobby" Chan | ||||||
|  |   Date: February 6, 2020 | ||||||
|  |   Development Environment Specifics: | ||||||
|  |     Arduino IDE 1.8.9 | ||||||
|  |  | ||||||
|  |   Description: | ||||||
|  |     Based on the following examples: | ||||||
|  |       - Jim's Pro Micro "HID Mouse/Keyboard" | ||||||
|  |       - Wes' Qwiic Joystick "basic reading" | ||||||
|  |       - Pete's Qwiic Keypad "read button" | ||||||
|  |  | ||||||
|  |     This example controls the mouse with the Qwiic Joystick | ||||||
|  |     and keyboard presses associated with the Qwiic Keypad. | ||||||
|  |     The serial output is turned off so that Qwiic Pro Micro | ||||||
|  |     can respond faster. | ||||||
|  |  | ||||||
|  |   Libraries: | ||||||
|  |    Mouse.h (included with Arduino IDE) | ||||||
|  |    Keyboard.h (included with Arduino IDE) | ||||||
|  |    Wire.h (included with Arduino IDE) | ||||||
|  |    SparkFun_Qwiic_Joystick_Arduino_Library.h (included in the src folder) http://librarymanager/All#SparkFun_joystick | ||||||
|  |    SparkFun_Qwiic_Keypad_Arduino_Library.h (included in the src folder) http://librarymanager/All#SparkFun_keypad | ||||||
|  |  | ||||||
|  |   License: | ||||||
|  |     This code is released under the MIT License (http://opensource.org/licenses/MIT) | ||||||
|  |  | ||||||
|  | ******************************************************************************/ | ||||||
|  |  | ||||||
|  | #include <Mouse.h> | ||||||
|  | #include <Keyboard.h> | ||||||
|  | #include <Wire.h> | ||||||
|  |  | ||||||
|  | #include "SparkFun_Qwiic_Joystick_Arduino_Library.h" //Click here to get the library: http://librarymanager/All#SparkFun_joystick | ||||||
|  | JOYSTICK joystick;                                   //Create instance of this object | ||||||
|  |  | ||||||
|  | #include "SparkFun_Qwiic_Keypad_Arduino_Library.h" //Click here to get the library: http://librarymanager/All#SparkFun_keypad | ||||||
|  | KEYPAD keypad1;                                    //Create instance of this object | ||||||
|  |  | ||||||
|  | int vertZero, horzZero;       // Stores the initial value of each axis, usually around 512 | ||||||
|  | int vertValue, horzValue;     // Stores current analog output of each axis | ||||||
|  | const int sensitivity = 150;  // Higher sensitivity value = slower mouse, should be <= about 500 | ||||||
|  | int mouseClickFlag = 0; | ||||||
|  |  | ||||||
|  | //int invertMouse = 1;        //Invert joystick based on orientation | ||||||
|  | int invertMouse = -1;         //Noninverted joystick based on orientation | ||||||
|  |  | ||||||
|  | //Debug mode, comment one of these lines out using a syntax | ||||||
|  | //for a single line comment ("//"): | ||||||
|  | #define DEBUG 0       //0 = HID only | ||||||
|  | //#define DEBUG 1     //1 = HID with serial output | ||||||
|  |  | ||||||
|  | void setup() { | ||||||
|  | #if DEBUG | ||||||
|  |   Serial.begin(9600); | ||||||
|  |   Serial.println("Qwiic KeyPad Example"); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |   if (joystick.begin() == false) { | ||||||
|  | #if DEBUG | ||||||
|  |     Serial.println("Joystick does not appear to be connected. Please check wiring. Freezing..."); | ||||||
|  | #endif | ||||||
|  |     while (1); | ||||||
|  |   } | ||||||
|  |   if (keypad1.begin() == false) {  // Note, using begin() like this will use default I2C address, 0x4B. | ||||||
|  |     // You can pass begin() a different address like so: keypad1.begin(Wire, 0x4A). | ||||||
|  | #if DEBUG | ||||||
|  |     Serial.println("Keypad does not appear to be connected. Please check wiring. Freezing..."); | ||||||
|  | #endif | ||||||
|  |     while (1); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   delay(1000);  // short delay to let outputs settle | ||||||
|  |   vertZero = joystick.getVertical();  // get the initial values | ||||||
|  |   horzZero = joystick.getHorizontal();  // Joystick should be in neutral position when reading these | ||||||
|  |  | ||||||
|  | #if DEBUG | ||||||
|  |   Serial.print("Initialized. Firmware Version: "); | ||||||
|  |   Serial.println(keypad1.getVersion()); | ||||||
|  |   Serial.println("Press a button: * to do a space. # to go to next line."); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |   Mouse.begin(); //Init mouse emulation | ||||||
|  |   Keyboard.begin(); //Init keyboard emulation | ||||||
|  |  | ||||||
|  | }//end setup | ||||||
|  |  | ||||||
|  | void loop() { | ||||||
|  |   keypad1.updateFIFO();  // necessary for keypad to pull button from stack to readable register | ||||||
|  |   char button = keypad1.getButton(); | ||||||
|  |  | ||||||
|  | #if DEBUG | ||||||
|  |   Serial.print("X: "); | ||||||
|  |   Serial.print(joystick.getHorizontal()); | ||||||
|  |  | ||||||
|  |   Serial.print(" Y: "); | ||||||
|  |   Serial.print(joystick.getVertical()); | ||||||
|  |  | ||||||
|  |   Serial.print(" Button: "); | ||||||
|  |   Serial.println(joystick.getButton()); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |   vertValue = joystick.getVertical() - vertZero; // read vertical offset | ||||||
|  |   horzValue = joystick.getHorizontal() - horzZero;  // read horizontal offset | ||||||
|  |  | ||||||
|  |   if (vertValue != 0) | ||||||
|  |     Mouse.move(0, (invertMouse * (vertValue / sensitivity)), 0); // move mouse on y axis | ||||||
|  |   if (horzValue != 0) | ||||||
|  |     Mouse.move((invertMouse * (horzValue / sensitivity)), 0, 0); // move mouse on x axis | ||||||
|  |  | ||||||
|  |   if ((joystick.getButton() == 0) && (!mouseClickFlag))  // if the joystick button is pressed | ||||||
|  |   { | ||||||
|  |     mouseClickFlag = 1; | ||||||
|  |     Mouse.press(MOUSE_LEFT);  // click the left button down | ||||||
|  |   } | ||||||
|  |   else if ((joystick.getButton()) && (mouseClickFlag)) // if the joystick button is not pressed | ||||||
|  |   { | ||||||
|  |     mouseClickFlag = 0; | ||||||
|  |     Mouse.release(MOUSE_LEFT);  // release the left button | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (button == -1) { | ||||||
|  | #if DEBUG | ||||||
|  |     Serial.println("No keypad detected"); | ||||||
|  | #endif | ||||||
|  |     delay(1000); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   else if (button != 0) { | ||||||
|  | #if DEBUG | ||||||
|  |     Serial.print("Qwiic Keypad Button:  "); | ||||||
|  |     Serial.println(button); | ||||||
|  | #endif | ||||||
|  |     if (button == '0') {//note that this is a keypad '0' not the button press itself | ||||||
|  |       Keyboard.write('0'); | ||||||
|  |     } | ||||||
|  |     else if (button == '1') { | ||||||
|  |       Keyboard.write('1'); | ||||||
|  |     } | ||||||
|  |     else if (button == '2') { | ||||||
|  |       Keyboard.write('2'); | ||||||
|  |     } | ||||||
|  |     else if (button == '3') { | ||||||
|  |       Keyboard.write('3'); | ||||||
|  |     } | ||||||
|  |     else if (button == '4') { | ||||||
|  |       Keyboard.write('4'); | ||||||
|  |     } | ||||||
|  |     else if (button == '5') { | ||||||
|  |       Keyboard.write('5'); | ||||||
|  |     } | ||||||
|  |     else if (button == '6') { | ||||||
|  |       Keyboard.write('6'); | ||||||
|  |     } | ||||||
|  |     else if (button == '7') { | ||||||
|  |       Keyboard.write('7'); | ||||||
|  |     } | ||||||
|  |     else if (button == '8') { | ||||||
|  |       Keyboard.write('8'); | ||||||
|  |     } | ||||||
|  |     else if (button == '9') { | ||||||
|  |       Keyboard.write('9'); | ||||||
|  |     } | ||||||
|  |     else if (button == '#') { | ||||||
|  |       Keyboard.write('#'); | ||||||
|  |     } | ||||||
|  |     else if (button == '*') { | ||||||
|  |       Keyboard.write('*'); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   //Do something else. Don't call your Keypad a ton otherwise you'll tie up the I2C bus | ||||||
|  |   //Uncomment this if necessary but since we check the Qwiic Joystick it does not | ||||||
|  |   // appear to be an issue | ||||||
|  |   //delay(25); //25 is good, more is better | ||||||
|  |  | ||||||
|  | }//end loop | ||||||
		Reference in New Issue
	
	Block a user