document
This commit is contained in:
parent
589514dc3d
commit
55008ec4ec
@ -160,12 +160,14 @@ Following the style guide makes it easier for the next programmer to understand
|
|||||||
<!-- http://stackoverflow.com/questions/2198241/best-practice-for-c-function-commenting -->
|
<!-- http://stackoverflow.com/questions/2198241/best-practice-for-c-function-commenting -->
|
||||||
|
|
||||||
## Trace of keybrd scan
|
## Trace of keybrd scan
|
||||||
Arduino does not have a debugger; so here is a list of functions in the order that they are called.
|
Arduino does not have a debugger.
|
||||||
|
So here is the next best thing; a list of functions in the order that they are called.
|
||||||
Refer to it like a table of contents while reading the keybrd library.
|
Refer to it like a table of contents while reading the keybrd library.
|
||||||
|
|
||||||
```
|
```
|
||||||
Matrix::scan() for each row
|
Matrix::scan() for each row
|
||||||
Row::process()
|
Row::process()
|
||||||
|
Row::wait()
|
||||||
Row::scan()
|
Row::scan()
|
||||||
RowPort_*::setActivePin*() strobe row on
|
RowPort_*::setActivePin*() strobe row on
|
||||||
for each col port
|
for each col port
|
||||||
@ -177,6 +179,9 @@ Refer to it like a table of contents while reading the keybrd library.
|
|||||||
set rowState bit
|
set rowState bit
|
||||||
Row::debounce() debounce
|
Row::debounce() debounce
|
||||||
Row::pressRelease() for each key in row
|
Row::pressRelease() for each key in row
|
||||||
|
if falling edge
|
||||||
|
Key_*::release() scanCode->release()
|
||||||
|
Code_*::release() Keyboard.release(scancode)
|
||||||
if rising edge
|
if rising edge
|
||||||
Key_*::press() scanCode->press()
|
Key_*::press() scanCode->press()
|
||||||
Code_*::press() Keyboard.press(scancode)
|
Code_*::press() Keyboard.press(scancode)
|
||||||
|
@ -7,5 +7,7 @@ uint8_t ColPort::getColPins()
|
|||||||
|
|
||||||
uint8_t ColPort::getPortState()
|
uint8_t ColPort::getPortState()
|
||||||
{
|
{
|
||||||
|
//todo Keyboard.print(" portState=");
|
||||||
|
//Keyboard.print(portState);
|
||||||
return portState;
|
return portState;
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ extern unsigned int __heap_start;
|
|||||||
extern void *__brkval;
|
extern void *__brkval;
|
||||||
|
|
||||||
//measure and return amount of free SRAM
|
//measure and return amount of free SRAM
|
||||||
|
/*
|
||||||
uint16_t getFreeSRAM()
|
uint16_t getFreeSRAM()
|
||||||
{
|
{
|
||||||
uint8_t newVariable;
|
uint8_t newVariable;
|
||||||
@ -34,3 +35,19 @@ uint16_t getFreeSRAM()
|
|||||||
return (((uint16_t)&newVariable) - ((uint16_t)__brkval));
|
return (((uint16_t)&newVariable) - ((uint16_t)__brkval));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
// uint32_t for Teensy LC
|
||||||
|
uint32_t getFreeSRAM()
|
||||||
|
{
|
||||||
|
uint8_t newVariable;
|
||||||
|
// if heap is empty, use bss as start memory address
|
||||||
|
if ((uint32_t)__brkval == 0)
|
||||||
|
{
|
||||||
|
return (((uint32_t)&newVariable) - ((uint32_t)&__bss_end));
|
||||||
|
}
|
||||||
|
// else use heap end as the start of the memory address
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return (((uint32_t)&newVariable) - ((uint32_t)__brkval));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@ -24,7 +24,6 @@ keybrd runs at the end of this sketch, under the "MAIN" heading.
|
|||||||
// ################## GLOBAL ###################
|
// ################## GLOBAL ###################
|
||||||
// ================= INCLUDES ==================
|
// ================= INCLUDES ==================
|
||||||
/*
|
/*
|
||||||
The compiler copies #included files into the sketch.
|
|
||||||
All the includes in this sketch are to keybrd library classes.
|
All the includes in this sketch are to keybrd library classes.
|
||||||
*/
|
*/
|
||||||
//Ports
|
//Ports
|
||||||
|
@ -49,17 +49,24 @@ Switch-diode pairs connect rows to columns.
|
|||||||
The green rectangle on the right is the Teensy 2.0 microcontroller.
|
The green rectangle on the right is the Teensy 2.0 microcontroller.
|
||||||
The matrix rows and columns connect to the microcontroller via jumper wires.
|
The matrix rows and columns connect to the microcontroller via jumper wires.
|
||||||
|
|
||||||
|
Tutorials 4,5,9 will add more components to the breadboard.
|
||||||
|
Positioning components as shown on the picture will provide space for those components, with room for up to 9 cols.
|
||||||
|
Breadboard terminal strips are indexed 1 to 63 for accurate positioning of components.
|
||||||
|
[pic of IOE, LEDs, active high on one bb]
|
||||||
|
|
||||||
Breadboard keyboard assembly instructions:
|
Breadboard keyboard assembly instructions:
|
||||||
|
|
||||||
1. Cut leads to length.
|
1. Cut leads to length.
|
||||||
* tactile-switch-lead length 6 to 8 mm
|
* tactile-switch-lead length 6 to 8 mm
|
||||||
* diodes 22 to 24 mm total end-to-end length, and save the cut offs for steps 2 and 3
|
* diodes 22 to 24 mm total end-to-end length, and save the cut offs for steps 2 and 3
|
||||||
2. Insert parts into the breadboard as shown in the picture.
|
2. Insert parts into the breadboard as shown in the picture.
|
||||||
|
* Teensy LC on the terminal strip labeled 1
|
||||||
|
* switch leads oriented so that they will connect diodes to columns
|
||||||
* diode cut offs connect terminal strips into columns
|
* diode cut offs connect terminal strips into columns
|
||||||
* diodes are orient with cathode (banded end) towards the row (power strip)
|
* diodes are orient with cathode (banded end) towards the row (power strip)
|
||||||
* switches connect diode to columns
|
|
||||||
3. Insert jumper wires connecting Teensy2 to the matrix rows and columns.
|
3. Insert jumper wires connecting Teensy2 to the matrix rows and columns.
|
||||||
* follow pin connections table (below) and consult pinout diagram in
|
* follow pin connections table (below) and consult pinout diagram in
|
||||||
|
[close-up pic shows switch way half out, to show lead orientation]
|
||||||
[Teensy2_pinout.txt](../doc/Teensy2_pinout.txt)
|
[Teensy2_pinout.txt](../doc/Teensy2_pinout.txt)
|
||||||
|
|
||||||
todo add a schematic
|
todo add a schematic
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
Tutorial 2 - single-layer keyboard
|
Tutorial 2 - single-layer keyboard
|
||||||
=======================================
|
=======================================
|
||||||
[keybrd_2_single-layer_annotated.ino](keybrd_2_single-layer_annotated/keybrd_2_single-layer_annotated.ino) explains how a keybrd sketch works.
|
The easiest way to learn the keyboard library is to read some simple sketches.
|
||||||
You can view the class definitions in the [keybrd library](../src/).
|
[keybrd_2_single-layer_annotated.ino](keybrd_2_single-layer_annotated/keybrd_2_single-layer_annotated.ino) is a simple sketch with annotations that explain how a keybrd sketch works.
|
||||||
|
|
||||||
After reading the sketch you will be able to modify it to suite your own single-layer keyboard design.
|
After reading the sketch you will be able to modify it to suite your own single-layer keyboard design.
|
||||||
|
|
||||||
|
You can view the class definitions in the [keybrd library](../src/).
|
||||||
|
|
||||||
## Exercises
|
## Exercises
|
||||||
1) Add a third column to the breadboard and sketch.
|
1) Add a third column to the breadboard keyboard and sketch.
|
||||||
|
|
||||||
| Layout | **0** | **1** | **2** |
|
| Layout | **0** | **1** | **2** |
|
||||||
|:------:|-------|-------|-------|
|
|:------:|-------|-------|-------|
|
||||||
|
Reference in New Issue
Block a user