<img src="tutorials/keybrd_1_breadboard/breadboard_keyboard_2x2.JPG" title="breadboard keyboard" alt="breadboard keyboard" style="height:290px;width:328px;"> | <img src="tutorials/keybrd_1_breadboard/breadboard_keyboard_2x2.JPG" title="breadboard keyboard" alt="breadboard keyboard" style="height:290px;width:328px;"> | ||||
<img src="tutorials/keybrd_1_breadboard/breadboard_keyboard_2x2.JPG" title="breadboard keyboard" alt="breadboard keyboard" height="290" width="328"> | |||||
Example complex keybrd sketch | Example complex keybrd sketch | ||||
----------------------------- | ----------------------------- | ||||
keybrd_DH and its instantiation files contain about 800 lines of code. | keybrd_DH and its instantiation files contain about 800 lines of code. |
Tutorial 10 - writing your own port classes | |||||
Tutorial 10 - writing IOE Port classes | |||||
=========================================== | =========================================== | ||||
Port classes are the keybrd library's interface to I/O expander ports. | Port classes are the keybrd library's interface to I/O expander ports. | ||||
To write your own port classes: | |||||
To write your own Port class: | |||||
1. Get a copy of the controller or I/O expander datasheet. | |||||
1. Get a copy of the I/O expander datasheet. | |||||
2. Study other keybrd Port classes. | 2. Study other keybrd Port classes. | ||||
For example, the keybrd_DH library use these keybrd classes for its PCA9655E I/O: | |||||
For example, the keybrd_DH library uses these keybrd classes for its PCA9655E I/O expander: | |||||
* PortWrite_PCA9655E | * PortWrite_PCA9655E | ||||
* PortRead_PCA9655E | * PortRead_PCA9655E | ||||
* LED_PCA9655E | * LED_PCA9655E |
| Layout | **0** | **1** | | | Layout | **0** | **1** | | ||||
|:------:|:-----:|:-----:| | |:------:|:-----:|:-----:| | ||||
| **0** | a ! 6 | b @ 7 | | | **0** | a ! 6 | b @ 7 | | ||||
| **1** | sym |. num .| | |||||
| **1** | sym | num | | |||||
<br> | <br> | ||||
<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>. | <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>. |