USB Macro Pad
A super easy USB Macro pad using the Arduino pro micro (or compatible) board. This uses 16 Cherry MX style switches with keycaps that have spaces for printed labels in them. The sky is the limit!
If this isn't for you, check out Dustin Watts' ESP32 Touchdown!:
https://www.tindie.com/products/dustinwattsnl/esp32-touchdown/
https://www.youtube.com/watch?v=TJTbuOdeoFw
For this build you will need:
1n4007 Diodes:
World - https://s.click.aliexpress.com/e/_DdRbCyT
Canada - https://amzn.to/3PT0dlQ
USA & World - https://amzn.to/3PUxFsr
Arduino pro micro:
World - https://s.click.aliexpress.com/e/_DlKXO2X
Canada - https://amzn.to/3Oxa93m
USA & World - https://amzn.to/3OApXCu
Cherry MX-style Switches: (Outemu Black used here):
World - https://s.click.aliexpress.com/e/_DDg3zBH
Canada - https://amzn.to/3b9jW1X
USA & World - https://amzn.to/3osKzCk
Clear (labelable) Keycaps (for Cherry-MX style keys):
World - https://s.click.aliexpress.com/e/_DEVJ6D5
Canada - https://amzn.to/3aXVlxj
USA & World - https://amzn.to/3cGN7Kp
Thanks for watching!
Check out my website: https://www.simpleelectronics.ca
If you feel like supporting the channel, please consider supporting on Patreon:
https://www.patreon.com/SimpleElectronics
or get some cool merch!
https://teespring.com/stores/electronics-r-us
or buy anything from USA Amazon using my affiliate link:
https://amzn.to/3Iki6q7
or buy anything from Canadian Amazon using my affiliate link:
https://amzn.to/3FNxPfI
or buy anything on Banggood's site using my affiliate link:
https://www.banggood.com/custlink/mGvGJL5Qm1
or buy anything using my Aliexpress affiliate link:
https://s.click.aliexpress.com/e/_9u07X6
and if you feel so inclined, here is my Amazon wish list!
https://www.amazon.ca/hz/wishlist/ls/2BMH2EFGY31V1?ref_=wl_share
I have other channels!:
Dan Fixes Cars:
https://www.youtube.com/channel/UC8gQZ_5-DOb0oQVm66oTl6A
SE Con Dairy:
https://www.youtube.com/channel/UCL1jXgPQjCI0gWFLltq2bzg
#include <Keyboard.h>
#include <SimpleKeypad.h>
const byte nb_rows = 4; // four rows
const byte nb_cols = 4; // four columns
char key_chars[nb_rows][nb_cols] = { // The symbols of the keys
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[nb_rows] = {9, 8, 7, 6}; // The pins where the rows are connected
byte colPins[nb_cols] = {5, 4, 3, 2}; // The pins where the columns are connected
SimpleKeypad kp1((char*)key_chars, rowPins, colPins, nb_rows, nb_cols); // New keypad called kp1
void setup() {
Serial.begin(9600);
Serial.println("Press any key on the keypad and it will show up here :");
}
void loop() {
char key = kp1.getKey(); // The getKey function scans the keypad every 10 ms and returns a key only one time, when you start pressing it
if (key) { // If getKey returned any key
Serial.println(key); // it is printed on the serial monitor
}
if (key == 'D') {
Keyboard.press(KEY_F13);
Keyboard.releaseAll();
}
if (key == '#') {
Keyboard.press(KEY_F14);
Keyboard.releaseAll();
}
if (key == '0') {
Keyboard.press(KEY_F15);
Keyboard.releaseAll();
}
if (key == '*') {
Keyboard.press(KEY_F16);
Keyboard.releaseAll();
}
if (key == 'C') {
Keyboard.press(KEY_F17);
Keyboard.releaseAll();
}
if (key == '9') {
Keyboard.press(KEY_F18);
Keyboard.releaseAll();
}
if (key == '8') {
Keyboard.press(KEY_F19);
Keyboard.releaseAll();
}
if (key == '7') {
Keyboard.press(KEY_F20);
Keyboard.releaseAll();
}
if (key == 'B') {
Keyboard.press(KEY_F21);
Keyboard.releaseAll();
}
if (key == '6') {
Keyboard.press(KEY_F22);
Keyboard.releaseAll();
}
if (key == '5') {
Keyboard.press(KEY_F23);
Keyboard.releaseAll();
}
if (key == '4') {
Keyboard.press(KEY_F24);
Keyboard.releaseAll();
}
if (key == 'A') {
Keyboard.press(KEY_LEFT_SHIFT);
delay(250);
Keyboard.press(KEY_F13);
delay(250);
Keyboard.release(KEY_F13);
delay(250);
Keyboard.release(KEY_LEFT_SHIFT);
}
if (key == '3') {
Keyboard.press(KEY_LEFT_SHIFT);
delay(250);
Keyboard.press(KEY_F14);
delay(250);
Keyboard.release(KEY_F14);
delay(250);
Keyboard.release(KEY_LEFT_SHIFT);
}
if (key == '2') {
Keyboard.press(KEY_LEFT_SHIFT);
delay(250);
Keyboard.press(KEY_F15);
delay(250);
Keyboard.release(KEY_F15);
delay(250);
Keyboard.release(KEY_LEFT_SHIFT);
}
if (key == '1') {
Keyboard.press(KEY_LEFT_SHIFT);
delay(250);
Keyboard.press(KEY_F16);
delay(250);
Keyboard.release(KEY_F16);
delay(250);
Keyboard.release(KEY_LEFT_SHIFT);
}
}
USB Macro Pad
*PCBWay community is a sharing platform. We are not responsible for any design issues and parameter issues (board thickness, surface finish, etc.) you choose.
- Comments(0)
- Likes(2)
- 0 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
More by Simple Electronics
- 0-60V Analog Load Build your own analog load to load up power supplies, drain batteries, limit current, all sorts of t...
- 0-30V Analog Load Build your own analog load to load up power supplies, drain batteries, limit current, all sorts of t...
- 0-15V Analog Load Build your own analog load to load up power supplies, drain batteries, limit current, all sorts of t...
- Relay Board I was unsatisfied with the generic relay PCBs on the market - so I made my own!You will also need th...
- A 12-Device USB Charging Station I have a lot of devices that need relatively low current charging and I don't really have that many ...
- Holiday Wreath This Holiday Season, PCBWay sponsored me to make a holiday decoration! The inspiration for this one ...
- Another Macro Pad! Yup! I made another one, this time with lights! Cherry MX (and equivalent) mechanical keyboard switc...
- banana plug power distribution board A neat little simple PCB to power my godly Riden power supplies!Here is what you will need:Screw Ter...
- USB Macro Pad A super easy USB Macro pad using the Arduino pro micro (or compatible) board. This uses 16 Cherry MX...
- 74HC04 | Hex Inverter Logic Chip | Reference Series Welcome to my reference series on 74HCxx chips! This one is about the quad, 2-input NOR chip, the 74...
- Fused Switch Board PCBWay sponsored this video in order for me to demonstrate that simple PCBs can easily help you orga...
- 74HC02 Exploration Welcome to my reference series on 74HCxx chips! This one is about the quad, 2-input NOR chip, the 74...
- 74HC00 Exploration Welcome to my reference series on 74HCxx chips! This one is about the quad, 2-input NAND chip, the 7...
- LED Panel V2 Take a look at my version 2 90+ CRI LED panel! The last panel was much larger and only had 12 leds o...
- Auto Ringing Doorbell PCB Just a PCB for combining a PIR and a radar sensor
- Motion Sensing Light I designed a PCB to solve a problem I have been having - I have to walk across a dark basement to tu...
- Uno Transistor Shield I made a quick and easy (and beginner-practice friendly) shield for Arduino UNO and Mega compatible ...
- LED Panel with mounting holes Super easy to build and assemble - if using 100 ohm resistors, you don't even need aluminum backed P...
-
Build a Walking Robot: Theo Jansen Style 3D Printed Octopod
114 0 3 -
-
-
kmMiniSchield MIDI I/O - IN/OUT/THROUGH MIDI extension for kmMidiMini
140 0 0 -
DIY Laser Power Meter with Arduino
214 0 2 -
-
-
Box & Bolt, 3D Printed Cardboard Crafting Tools
186 0 2