document
This commit is contained in:
parent
ce9c10aba6
commit
e84db1c61c
@ -36,6 +36,10 @@ Code contributions
|
||||
Unsure of where to begin contributing to keybrd code?
|
||||
You can start by looking through the improvement suggestions, bug reports, and [planned_features](doc/planned_features.md).
|
||||
|
||||
Scratch your own itch. Code for your own need. Then share it with the keybrd community.
|
||||
* [Tutorial 8b - sharing your keybrd extension library](tutorials/tutorial_8b_sharing_your_keybrd_extension_library.md)
|
||||
* [Tutorial 8c - sharing your keybrd sketch](tutorials/tutorial_8c_sharing_your_keybrd_sketch.md)
|
||||
|
||||
Git commit message style guide:
|
||||
* Limit the first line to 72 characters summary
|
||||
* Second line should be empty, followed by body of the commit message
|
||||
@ -95,17 +99,6 @@ If you prefer your answers remain confidential, pm the completed Q & A to [wolfv
|
||||
|
||||
Usability survey results will be used to make improvements to the keybrd library.
|
||||
|
||||
### Schematics
|
||||
The most glaring deficiency is the tutorials' lack of schematics.
|
||||
Schematics would be easier to read than the current photos.
|
||||
|
||||
Schematics are not my area of expertise. Use what ever would be the best solution for the tutorials:
|
||||
* schematics
|
||||
* breadboard drawings
|
||||
* Arduino simulation software
|
||||
|
||||
Contributions of tutorial schematics would benefit users new to the keybrd library.
|
||||
|
||||
### Documentation
|
||||
Suggest a clarification, simplification, correction, or other improvement.
|
||||
We need the perspective of people new to the project to see these things.
|
||||
|
@ -2,12 +2,12 @@ planned_features is a view of where the keybrd project is headed.
|
||||
|
||||
Top priority
|
||||
------------
|
||||
* User testing
|
||||
|
||||
Medium priority
|
||||
---------------
|
||||
* Add matrix-to-layout mapping (to decouple key matrix from layout)
|
||||
* Add breadboard keyboard schematics to tutorials
|
||||
|
||||
Medium priority
|
||||
---------------
|
||||
* Getting user feedback
|
||||
|
||||
Low priority
|
||||
------------
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifndef ROWSCANNER_SHIFTREGSPISOSINGLEROW_H
|
||||
#define ROWSCANNER_SHIFTREGSPISOSINGLEROW_H
|
||||
#ifndef ROWSCANNER_SHIFTREGSREAD_H
|
||||
#define ROWSCANNER_SHIFTREGSREAD_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <inttypes.h>
|
||||
@ -8,29 +8,33 @@
|
||||
#include <ScannerInterface.h>
|
||||
|
||||
/* Scanner_ShiftRegsRead reads shift registers.
|
||||
This was tested on 74HC165 shift registers, which are Parallel-In-Serial-Out (PISO).
|
||||
Upto 4 shift registers can be in a daisy chained for a total of 32 read pins.
|
||||
This was tested on 74HC165 shift registers, which are Parallel-In-Serial-Out (PISO).
|
||||
|
||||
The row is always powered (there is no strobe that turns off).
|
||||
|
||||
Example instantiation:
|
||||
Row row_R0(scanner_R, 0, ptrsKeys_R0, sizeof(ptrsKeys_R0)/sizeof(*ptrsKeys_R0));
|
||||
Scanner_ShiftRegsRead scanner_R(HIGH, SS, 4);
|
||||
Scanner_ShiftRegsRead scanner_R(HIGH, 6, 4);
|
||||
|
||||
The Row "strobePin" parameter is ignored.
|
||||
In the above example, the "strobePin" argument is 0, but it doesn't matter what value is given.
|
||||
In the above Row instantiation, argument 0 for "strobePin" is ignored because there is no strobe.
|
||||
|
||||
There are three Scanner_ShiftRegsRead parameters.
|
||||
"strobeOn" paramter is ignored, but should be active state HIGH or LOW required by ScannerInterface.
|
||||
|
||||
"slaveSelect" paramter can be any controller pin connected to shift register's SHIFT-LOAD pin.
|
||||
|
||||
"byte_count" is the number of bytes to read from shift registers (1 to 4).
|
||||
byte_count should cover all the row's keys:
|
||||
byte_count*8 >= row's keyCount
|
||||
1. "strobeOn" paramter is ignored, but should be active state HIGH or LOW for ScannerInterface.
|
||||
2. "slaveSelect" paramter can be any controller pin connected to shift register's SHIFT-LOAD pin.
|
||||
3. "byte_count" is the number of bytes to read from shift registers (1 to 4).
|
||||
byte_count should cover all the row's keys: byte_count*8 >= row's keyCount
|
||||
|
||||
Hardware setup:
|
||||
There is only one row, and it is permanently active.
|
||||
The row of keys is connected to a controller by 5 wires:
|
||||
* GND
|
||||
* power
|
||||
* CLK
|
||||
* Slave Select
|
||||
* MISO
|
||||
|
||||
Switches are connected to shift-register parallel-input pins and row.
|
||||
Diodes are not needed because there is only one row.
|
||||
Diodes are not needed if there is only one row.
|
||||
|
||||
For active low:
|
||||
Shift-register parallel-input pins need 10k Ohm pull-up resistors powered.
|
||||
@ -41,6 +45,8 @@ For active high:
|
||||
Shift-register parallel-input pins need 10k pull-down resistors grounded.
|
||||
Switches connect grouned row to parallel-input pins.
|
||||
Controller's MISO pin is connected to shift register's serial output (QH) pin
|
||||
|
||||
If multiple rows (or any SPI divice) share a MISO line, the shift registers need to be isolated by a tri-state buffer chip.
|
||||
*/
|
||||
class Scanner_ShiftRegsRead : public ScannerInterface
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifndef ROWSCANNER_SHIFTREGSPISOMULTIROW_H
|
||||
#define ROWSCANNER_SHIFTREGSPISOMULTIROW_H
|
||||
#ifndef ROWSCANNER_SHIFTREGSREADSTROBED_H
|
||||
#define ROWSCANNER_SHIFTREGSREADSTROBED_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <inttypes.h>
|
||||
@ -8,24 +8,30 @@
|
||||
#include <ScannerInterface.h>
|
||||
|
||||
/* Scanner_ShiftRegsReadStrobed reads shift registers.
|
||||
This was tested on 74HC165 shift registers, which are Parallel-In-Serial-Out (PISO).
|
||||
Shift registers can be daisy chained for a total of 32 read pins.
|
||||
This was tested on 74HC165 shift registers, which are Parallel-In-Serial-Out (PISO).
|
||||
|
||||
The class works with machanical switches or photointerrupter switches.
|
||||
A "strobe" powers the IR LEDs for a short time while the shift registers read the photo transistors.
|
||||
The IR LEDs are off most of the time to preserve IR LED life.
|
||||
|
||||
Example instantiation:
|
||||
Scanner_ShiftRegsReadStrobed scanner_R(HIGH, SS, 4);
|
||||
Scanner_ShiftRegsReadStrobed scanner_R(HIGH, 6, 4);
|
||||
|
||||
There are three Scanner_ShiftRegsReadStrobed parameters.
|
||||
"strobeOn" paramter is active state HIGH or LOW.
|
||||
|
||||
"slaveSelect" paramter can be any controller pin connected to shift register's SHIFT-LOAD pin.
|
||||
|
||||
"byte_count" is the number of bytes to read from shift registers (1 to 4).
|
||||
byte_count should cover all the row's keys:
|
||||
byte_count*8 >= row's keyCount
|
||||
1. "strobeOn" paramter is active state HIGH or LOW.
|
||||
2. "slaveSelect" paramter is controller pin connected to shift register's SHIFT-LOAD pin.
|
||||
3. "byte_count" is the number of bytes to read from shift registers (1 to 4).
|
||||
byte_count should cover all the row's keys: byte_count*8 >= row's keyCount
|
||||
|
||||
Hardware setup:
|
||||
Each row needs to be connected to a strobe pin from the controller.
|
||||
Switch and diode in series, connect shift-register parallel-input pins to strobed row.
|
||||
Each row of keys is connected to a controller by 6 wires:
|
||||
* GND
|
||||
* power
|
||||
* CLK
|
||||
* Slave Select
|
||||
* MISO
|
||||
* strobe
|
||||
|
||||
For active low:
|
||||
Shift-register parallel-input pins need 10k Ohm pull-up resistors powered.
|
||||
@ -36,6 +42,8 @@ For active high:
|
||||
Shift-register parallel-input pins need 10k pull-down resistors grounded.
|
||||
Orient diodes with cathode (banded end) towards the read pins.
|
||||
Controller's MISO pin is connected to shift register's serial output (QH) pin
|
||||
|
||||
If multiple rows (or any SPI divice) share a MISO line, the shift registers need to be isolated by a tri-state buffer chip.
|
||||
*/
|
||||
class Scanner_ShiftRegsReadStrobed : public ScannerInterface
|
||||
{
|
||||
|
@ -49,7 +49,7 @@ More scanning options are reviewed at http://www.openmusiclabs.com/learning/digi
|
||||
|
||||
Only ready-made cables that are widely available are listed.
|
||||
There are hundreds of other connectors listed at http://pinouts.ru/
|
||||
There are also wireless options if you don't mind adding complexity and maintaining a battery.
|
||||
There are also wireless options at the expense of adding complexity and maintaining a battery.
|
||||
|
||||
The 8-wire "GearIT Cat 6 Ethernet Flat Patch Cable 7 Feet" is very flexible.
|
||||
It's available at Walmart (9/19/16) if you want to feel the merchandise before you buy.
|
||||
|
@ -3,7 +3,7 @@ keybrd Tutorial 4b - split keyboard with shift registers
|
||||
When you finish this tutorial you will be able to be able to modify a split keybrd sketch with 10 to 24 keys on the shift registers.
|
||||
|
||||
Overview of split keyboard with shift registers
|
||||
------------------------------------------------
|
||||
-----------------------------------------------
|
||||
The breadboard in the following picture models a split keyboard.
|
||||
The green rectangle on the left is a Teensy LC micro controller.
|
||||
The black rectangles in the middle are two SN74HC165N shift registers daisy chained together.
|
||||
|
Reference in New Issue
Block a user