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