/* | |||||
Copyright (c) 2014-2015 NicoHood | |||||
See the readme for credit to other people. | |||||
*/ | |||||
#include "HID-Project.h" | |||||
const int pinLed = LED_BUILTIN; | |||||
const int MX01 = A1; | |||||
const int MX02 = A2; | |||||
const int MX03 = A3; | |||||
const int MX04 = A4; | |||||
const int MX05 = SCK; | |||||
const int MX06 = MOSI; | |||||
const int MX07 = 11; | |||||
const int MX08 = 10; | |||||
const int MX09 = 9; | |||||
const int MX10 = 7; | |||||
const int MX11 = SCL; | |||||
const int MX12 = SDA; | |||||
const int VGround = A5; | |||||
void setup() { | |||||
// Prepare led + buttons | |||||
pinMode(pinLed, OUTPUT); | |||||
pinMode(MX01, INPUT_PULLUP); | |||||
pinMode(MX02, INPUT_PULLUP); | |||||
pinMode(MX03, INPUT_PULLUP); | |||||
pinMode(MX04, INPUT_PULLUP); | |||||
pinMode(MX05, INPUT_PULLUP); | |||||
pinMode(MX06, INPUT_PULLUP); | |||||
pinMode(MX07, INPUT_PULLUP); | |||||
pinMode(MX08, INPUT_PULLUP); | |||||
pinMode(MX09, INPUT_PULLUP); | |||||
pinMode(MX10, INPUT_PULLUP); | |||||
pinMode(MX11, INPUT_PULLUP); | |||||
pinMode(MX12, INPUT_PULLUP); | |||||
pinMode(VGround, OUTPUT); | |||||
digitalWrite(VGround, LOW); | |||||
// Sends a clean report to the host. This is important on any Arduino type. | |||||
Keyboard.begin(); | |||||
} | |||||
void loop() { | |||||
if (!digitalRead(MX01)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_HOME); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX02)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_UP); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX03)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_PAGE_UP); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX04)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_LEFT); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX05)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_ESC); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX06)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_RIGHT); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX07)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_END); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX08)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_DOWN); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX09)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_PAGE_DOWN); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX10)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_BACKSPACE); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX11)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_SPACE); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX12)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_ENTER); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
} |
/* | |||||
Copyright (c) 2014-2015 NicoHood | |||||
See the readme for credit to other people. | |||||
*/ | |||||
#include "HID-Project.h" | |||||
const int pinLed = LED_BUILTIN; | |||||
const int MX01 = 2; | |||||
const int MX02 = 3; | |||||
const int MX03 = 4; | |||||
const int MX04 = 5; | |||||
const int MX05 = 7; | |||||
const int MX06 = 8; | |||||
const int MX07 = 21; | |||||
const int MX08 = 20; | |||||
const int MX09 = 19; | |||||
const int MX10 = 18; | |||||
const int MX11 = 14; | |||||
const int MX12 = 16; | |||||
const int VGround = 6; | |||||
void setup() { | |||||
// Prepare led + buttons | |||||
pinMode(pinLed, OUTPUT); | |||||
pinMode(MX01, INPUT_PULLUP); | |||||
pinMode(MX02, INPUT_PULLUP); | |||||
pinMode(MX03, INPUT_PULLUP); | |||||
pinMode(MX04, INPUT_PULLUP); | |||||
pinMode(MX05, INPUT_PULLUP); | |||||
pinMode(MX06, INPUT_PULLUP); | |||||
pinMode(MX07, INPUT_PULLUP); | |||||
pinMode(MX08, INPUT_PULLUP); | |||||
pinMode(MX09, INPUT_PULLUP); | |||||
pinMode(MX10, INPUT_PULLUP); | |||||
pinMode(MX11, INPUT_PULLUP); | |||||
pinMode(MX12, INPUT_PULLUP); | |||||
pinMode(VGround, OUTPUT); | |||||
digitalWrite(VGround, LOW); | |||||
// Sends a clean report to the host. This is important on any Arduino type. | |||||
Keyboard.begin(); | |||||
} | |||||
void loop() { | |||||
if (!digitalRead(MX01)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_HOME); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX02)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_UP); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX03)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_PAGE_UP); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX04)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_LEFT); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX05)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_ESC); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX06)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_RIGHT); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX07)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_END); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX08)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_DOWN); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX09)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_PAGE_DOWN); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX10)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_BACKSPACE); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX11)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_SPACE); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
if (!digitalRead(MX12)) { | |||||
digitalWrite(pinLed, HIGH); | |||||
Keyboard.write(KEY_ENTER); | |||||
// Simple debounce | |||||
delay(300); | |||||
digitalWrite(pinLed, LOW); | |||||
} | |||||
} |
/* Buttons to USB Keyboard Example - Special Media Player Keys | |||||
You must select Keyboard from the "Tools > USB Type" menu | |||||
This example code is in the public domain. | |||||
*/ | |||||
#include <Bounce.h> | |||||
// Create Bounce objects for each button. The Bounce object | |||||
// automatically deals with contact chatter or "bounce", and | |||||
// it makes detecting changes very simple. | |||||
Bounce MX01 = Bounce(4, 10); | |||||
Bounce MX02 = Bounce(5, 10); // 10 ms debounce time is appropriate | |||||
Bounce MX03 = Bounce(6, 10); // for most mechanical pushbuttons | |||||
Bounce MX04 = Bounce(7, 10); | |||||
Bounce MX05 = Bounce(9, 10); // if a button is too "sensitive" | |||||
Bounce MX06 = Bounce(10, 10); // you can increase this time. | |||||
Bounce MX07 = Bounce(17, 10); | |||||
Bounce MX08 = Bounce(16, 10); | |||||
Bounce MX09 = Bounce(15, 10); | |||||
Bounce MX10 = Bounce(14, 10); | |||||
Bounce MX11 = Bounce(12, 10); | |||||
Bounce MX12 = Bounce(11, 10); | |||||
void setup() { | |||||
// Configure the pins for input mode with pullup resistors. | |||||
// The pushbuttons connect from each pin to ground. When | |||||
// the button is pressed, the pin reads LOW because the button | |||||
// shorts it to ground. When released, the pin reads HIGH | |||||
// because the pullup resistor connects to +5 volts inside | |||||
// the chip. | |||||
pinMode(4, INPUT_PULLUP); | |||||
pinMode(5, INPUT_PULLUP); | |||||
pinMode(6, INPUT_PULLUP); | |||||
pinMode(7, INPUT_PULLUP); | |||||
pinMode(9, INPUT_PULLUP); | |||||
pinMode(10, INPUT_PULLUP); | |||||
pinMode(17, INPUT_PULLUP); | |||||
pinMode(16, INPUT_PULLUP); | |||||
pinMode(15, INPUT_PULLUP); | |||||
pinMode(14, INPUT_PULLUP); | |||||
pinMode(12, INPUT_PULLUP); | |||||
pinMode(11, INPUT_PULLUP); | |||||
pinMode(8, OUTPUT); // The virtual Ground Pin | |||||
digitalWrite(8, LOW); | |||||
} | |||||
void loop() { | |||||
// Update all the buttons. There should not be any long | |||||
// delays in loop(), so this runs repetitively at a rate | |||||
// faster than the buttons could be pressed and released. | |||||
MX01.update(); | |||||
MX02.update(); | |||||
MX03.update(); | |||||
MX04.update(); | |||||
MX05.update(); | |||||
MX06.update(); | |||||
MX07.update(); | |||||
MX08.update(); | |||||
MX09.update(); | |||||
MX10.update(); | |||||
MX11.update(); | |||||
MX12.update(); | |||||
// Check each button for "falling" edge. | |||||
// falling = high (not pressed - voltage from pullup resistor) | |||||
// to low (pressed - button connects pin to ground) | |||||
if (MX01.fallingEdge()) { | |||||
Keyboard.press(KEY_HOME); | |||||
Keyboard.release(KEY_HOME); | |||||
} | |||||
if (MX02.fallingEdge()) { | |||||
Keyboard.press(KEY_UP); | |||||
Keyboard.release(KEY_UP); | |||||
} | |||||
if (MX03.fallingEdge()) { | |||||
Keyboard.press(KEY_PAGE_UP); | |||||
Keyboard.release(KEY_PAGE_UP); | |||||
} | |||||
if (MX04.fallingEdge()) { | |||||
Keyboard.press(KEY_LEFT); | |||||
Keyboard.release(KEY_LEFT); | |||||
} | |||||
if (MX05.fallingEdge()) { | |||||
Keyboard.press(KEY_ESC); | |||||
Keyboard.release(KEY_ESC); | |||||
} | |||||
if (MX06.fallingEdge()) { | |||||
Keyboard.press(KEY_RIGHT); | |||||
Keyboard.release(KEY_RIGHT); | |||||
} | |||||
if (MX07.fallingEdge()) { | |||||
Keyboard.press(KEY_END); | |||||
Keyboard.release(KEY_END); | |||||
} | |||||
if (MX08.fallingEdge()) { | |||||
Keyboard.press(KEY_DOWN); | |||||
Keyboard.release(KEY_DOWN); | |||||
} | |||||
if (MX09.fallingEdge()) { | |||||
Keyboard.press(KEY_PAGE_DOWN); | |||||
Keyboard.release(KEY_PAGE_DOWN); | |||||
} | |||||
if (MX10.fallingEdge()) { | |||||
Keyboard.press(KEY_BACKSPACE); | |||||
Keyboard.release(KEY_BACKSPACE); | |||||
} | |||||
if (MX11.fallingEdge()) { | |||||
Keyboard.press(KEY_SPACE); | |||||
Keyboard.release(KEY_SPACE); | |||||
} | |||||
if (MX12.fallingEdge()) { | |||||
Keyboard.press(KEY_ENTER); | |||||
Keyboard.release(KEY_ENTER); | |||||
} | |||||
} |
/* Buttons to USB Keyboard Example - Special Media Player Keys | |||||
You must select Keyboard from the "Tools > USB Type" menu | |||||
This example code is in the public domain. | |||||
*/ | |||||
#include <Bounce.h> | |||||
// Create Bounce objects for each button. The Bounce object | |||||
// automatically deals with contact chatter or "bounce", and | |||||
// it makes detecting changes very simple. | |||||
Bounce MX01 = Bounce(4, 10); | |||||
Bounce MX02 = Bounce(5, 10); // 10 ms debounce time is appropriate | |||||
Bounce MX03 = Bounce(6, 10); // for most mechanical pushbuttons | |||||
Bounce MX04 = Bounce(7, 10); | |||||
Bounce MX05 = Bounce(9, 10); // if a button is too "sensitive" | |||||
Bounce MX06 = Bounce(10, 10); // you can increase this time. | |||||
Bounce MX07 = Bounce(21, 10); | |||||
Bounce MX08 = Bounce(20, 10); | |||||
Bounce MX09 = Bounce(19, 10); | |||||
Bounce MX10 = Bounce(18, 10); | |||||
Bounce MX11 = Bounce(16, 10); | |||||
Bounce MX12 = Bounce(15, 10); | |||||
void setup() { | |||||
// Configure the pins for input mode with pullup resistors. | |||||
// The pushbuttons connect from each pin to ground. When | |||||
// the button is pressed, the pin reads LOW because the button | |||||
// shorts it to ground. When released, the pin reads HIGH | |||||
// because the pullup resistor connects to +5 volts inside | |||||
// the chip. | |||||
pinMode(4, INPUT_PULLUP); | |||||
pinMode(5, INPUT_PULLUP); | |||||
pinMode(6, INPUT_PULLUP); | |||||
pinMode(7, INPUT_PULLUP); | |||||
pinMode(9, INPUT_PULLUP); | |||||
pinMode(10, INPUT_PULLUP); | |||||
pinMode(21, INPUT_PULLUP); | |||||
pinMode(20, INPUT_PULLUP); | |||||
pinMode(19, INPUT_PULLUP); | |||||
pinMode(18, INPUT_PULLUP); | |||||
pinMode(16, INPUT_PULLUP); | |||||
pinMode(15, INPUT_PULLUP); | |||||
pinMode(8, OUTPUT); // The virtual Ground Pin | |||||
digitalWrite(8, LOW); | |||||
} | |||||
void loop() { | |||||
// Update all the buttons. There should not be any long | |||||
// delays in loop(), so this runs repetitively at a rate | |||||
// faster than the buttons could be pressed and released. | |||||
MX01.update(); | |||||
MX02.update(); | |||||
MX03.update(); | |||||
MX04.update(); | |||||
MX05.update(); | |||||
MX06.update(); | |||||
MX07.update(); | |||||
MX08.update(); | |||||
MX09.update(); | |||||
MX10.update(); | |||||
MX11.update(); | |||||
MX12.update(); | |||||
// Check each button for "falling" edge. | |||||
// falling = high (not pressed - voltage from pullup resistor) | |||||
// to low (pressed - button connects pin to ground) | |||||
if (MX01.fallingEdge()) { | |||||
Keyboard.press(KEY_HOME); | |||||
Keyboard.release(KEY_HOME); | |||||
} | |||||
if (MX02.fallingEdge()) { | |||||
Keyboard.press(KEY_UP); | |||||
Keyboard.release(KEY_UP); | |||||
} | |||||
if (MX03.fallingEdge()) { | |||||
Keyboard.press(KEY_PAGE_UP); | |||||
Keyboard.release(KEY_PAGE_UP); | |||||
} | |||||
if (MX04.fallingEdge()) { | |||||
Keyboard.press(KEY_LEFT); | |||||
Keyboard.release(KEY_LEFT); | |||||
} | |||||
if (MX05.fallingEdge()) { | |||||
Keyboard.press(KEY_ESC); | |||||
Keyboard.release(KEY_ESC); | |||||
} | |||||
if (MX06.fallingEdge()) { | |||||
Keyboard.press(KEY_RIGHT); | |||||
Keyboard.release(KEY_RIGHT); | |||||
} | |||||
if (MX07.fallingEdge()) { | |||||
Keyboard.press(KEY_END); | |||||
Keyboard.release(KEY_END); | |||||
} | |||||
if (MX08.fallingEdge()) { | |||||
Keyboard.press(KEY_DOWN); | |||||
Keyboard.release(KEY_DOWN); | |||||
} | |||||
if (MX09.fallingEdge()) { | |||||
Keyboard.press(KEY_PAGE_DOWN); | |||||
Keyboard.release(KEY_PAGE_DOWN); | |||||
} | |||||
if (MX10.fallingEdge()) { | |||||
Keyboard.press(KEY_BACKSPACE); | |||||
Keyboard.release(KEY_BACKSPACE); | |||||
} | |||||
if (MX11.fallingEdge()) { | |||||
Keyboard.press(KEY_SPACE); | |||||
Keyboard.release(KEY_SPACE); | |||||
} | |||||
if (MX12.fallingEdge()) { | |||||
Keyboard.press(KEY_ENTER); | |||||
Keyboard.release(KEY_ENTER); | |||||
} | |||||
} |