keybrd library is an open source library for creating custom-keyboard firmware.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

tutorial_4c_split_keyboard_with_IOE_notgit.md 3.4KB

8 years ago
8 years ago
8 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. keybrd Tutorial 4 - split keyboard with I/O Expander
  2. ====================================================
  3. When you finish this tutorial you will be able to be able to modify a 2-matrix keybrd sketch to suite your own split keyboard design.
  4. ## Overview of split keyboard with I/O Expander
  5. The breadboard in this picture models a split keyboard.
  6. ![breadboard keyboard with 2 rows and 4 columns of keys](images/breadboard_keyboard_2x5_labeled.jpg "2x5 breadboard keyboard")
  7. The breadboard's four bus strips are used as rows.
  8. Two rows (blue bus strips) are connected to the microcontroller.
  9. Two rows (red bus strips) are connected to the shift registers.
  10. The breadboard's four bus strips are used as rows.
  11. Two rows connect to a microcontroller, and two rows connected to a I/O expander.
  12. The I/O expander has a small notch on one end, which identifies pin 1.
  13. In the picture, pin 1 is on the right end.
  14. The microcontroller and I/O expander are connected by 4 jumper wires:
  15. * ground
  16. * power
  17. * Serial CLock signal (SCL)
  18. * Serial DAta signal (SDA)
  19. A decoupling capacitor on the power pin dampens noise coming in through the power and ground wires.
  20. The microcontroller and I/O expander communicate via [I2C](http://en.wikipedia.org/wiki/I%C2%B2C) bus, which consists of two signals: SCL and SDA.
  21. Two resistors pull-up voltage on the SCL and SDA.
  22. I/O expander I2C address is configured by hardware pins.
  23. The MCP23018 with all address pins grounded has an I2C address of ?? todo.
  24. The I/O expander has two ports. Each port has eight pins.
  25. One port is connected to the matrix's rows. The other port is connected to the matrix's columns.
  26. ## Building a split keyboard with I/O Expander
  27. We will build a split keyboard adding parts to the basic breadboard keyboard described in [tutorial_1_breadboard_keyboard.md](tutorial_1_breadboard_keyboard.md)
  28. todo add schematic
  29. <!-- schematic with IOE power decoupling capacitor
  30. This schematic was written by consulting the I/O expander's datasheet and using the ?? tool. -->
  31. Continuing from the basic breadboard keyboard instructions:
  32. <!-- At some point in the future, Markdown may support starting ordered lists at an arbitrary number. -->
  33. 4. Insert the I/O expander
  34. 5. Install I/O expander power
  35. * ground
  36. * power
  37. * capacitor
  38. 6. Install I2C bus
  39. * SCL
  40. * SDA
  41. * pull-up resistors on SCL and SDA
  42. 7. configure I2C address
  43. 8. Assemble key matrix as shown in the picture.
  44. 9. Connect I/O expander ports to matrix rows and columns
  45. ## Sketch for split keyboard with I/O Expander
  46. The [keybrd_4_split_with_IOE_annotated.ino](keybrd_4_split_with_IOE_annotated/keybrd_4_split_with_IOE_annotated.ino)
  47. sketch explains how the I/O Expander works on a keyboard.
  48. <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">keybrd tutorial</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/wolfv6/keybrd" property="cc:attributionName" rel="cc:attributionURL">Wolfram Volpi</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.<br />Permissions beyond the scope of this license may be available at <a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/wolfv6/keybrd/issues/new" rel="cc:morePermissions">https://github.com/wolfv6/keybrd/issues/new</a>.