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_10_writing_IOE_Port_classes.md 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. Tutorial 10 - writing new IOE Port classes
  2. ==========================================
  3. Port classes are the keybrd library's interface to I/O expander ports.
  4. To write a new Port class:
  5. 1. Get a copy of the I/O expander's datasheet.
  6. 2. An I/O expander will use one of two communication protocols: [http://www.byteparadigm.com/applications/introduction-to-i2c-and-spi-protocols/](SPI or I2C).
  7. Refer to the [Arduino SPI](https://www.arduino.cc/en/Reference/SPI)
  8. or [Arduino Wire (I2C)](https://www.arduino.cc/en/Reference/Wire) library
  9. 3. Get familiar with your I/O expander.
  10. Different I/O expanders use different commands (a.k.a. operation codes).
  11. Refer to your I/O expander's datasheet for read and write commands.
  12. Search for Arduino sketch examples containing your I/O expander
  13. ([sumotoy](https://github.com/sumotoy/gpio_expander) has a large gpio expander library).
  14. Write very simple read and write examples for your I/O expander.
  15. Simple SPI I/O expander examples:
  16. todo link, pictures
  17. /home/wolfv/Documents/Arduino/demo/IOE_MCP23S17_read/
  18. /home/wolfv/Documents/Arduino/demo/IOE_MCP23S17_write/
  19. Simple I2C I/O expander examples:
  20. todo link, pictures
  21. read
  22. write
  23. 4. Study other keybrd Port classes.
  24. Port classes for SPI MCP23S17 I/O expander:
  25. *todo
  26. *
  27. *
  28. Port classes for I2C PCA9655E I/O expander:
  29. * PortWrite_PCA9655E todo link
  30. * PortRead_PCA9655E
  31. * LED_PCA9655E
  32. 5. Write similar Port classes for your I/O expander.
  33. Debugging I/O expander code is hard because SPI or I2C protocol adds a level of indirection.
  34. <br>
  35. <a rel="license" href="https://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://licensebuttons.net/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="https://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="https://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="https://creativecommons.org/ns" href="https://github.com/wolfv6/keybrd/issues/new" rel="cc:morePermissions">https://github.com/wolfv6/keybrd/issues/new</a>.