update keybrd_MCP23018 and PCA9655E_5_keybrd.ino for bb
This commit is contained in:
parent
76b9e4efd3
commit
22ac815015
@ -91,8 +91,6 @@ void setup()
|
|||||||
{
|
{
|
||||||
delay(6000);
|
delay(6000);
|
||||||
Keyboard.print("PCA9655E_5_keybrd.ino ");
|
Keyboard.print("PCA9655E_5_keybrd.ino ");
|
||||||
|
|
||||||
//Keyboard.begin();todo not needed ?? it's in DH mainSketch.cpp and keybrd_4c_split_keyboard_with_IOE.ino
|
|
||||||
scanner_R.begin();
|
scanner_R.begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 117 KiB |
Binary file not shown.
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 138 KiB |
20
examples/keybrd_MCP23017/keybrd_MCP23017.ino
Normal file
20
examples/keybrd_MCP23017/keybrd_MCP23017.ino
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/* keybrd_MCP23017.ino
|
||||||
|
|
||||||
|
MCP23017 pin assignments
|
||||||
|
DESTINATION PIN PIN_NUMBER PIN DESTINATION
|
||||||
|
row0 GPB0 1 28 GPA7
|
||||||
|
row1 GPB1 2 27 GPA6
|
||||||
|
GPB2 3 26 GPA5
|
||||||
|
GPB3 4 25 GPA4
|
||||||
|
GPB4 5 24 GPA3
|
||||||
|
GPB5 6 23 GPA2
|
||||||
|
GPB6 7 22 GPA1 col1
|
||||||
|
GPB7 8 21 GPA0 col0
|
||||||
|
LC 3.3V VDD 9 20 INTA
|
||||||
|
GND VSS 10 19 INTB
|
||||||
|
NC 11 18 /RESET VDD
|
||||||
|
LC 19 SCL 12 17 A2 GND
|
||||||
|
LC 18 SDA 13 16 A1 GND
|
||||||
|
NC 14 15 A0 GND
|
||||||
|
|
||||||
|
*/
|
BIN
examples/keybrd_MCP23018/back.JPG
Normal file
BIN
examples/keybrd_MCP23018/back.JPG
Normal file
Binary file not shown.
After Width: | Height: | Size: 140 KiB |
BIN
examples/keybrd_MCP23018/front.JPG
Normal file
BIN
examples/keybrd_MCP23018/front.JPG
Normal file
Binary file not shown.
After Width: | Height: | Size: 157 KiB |
@ -9,12 +9,28 @@ This sketch:
|
|||||||
|-------|-------|-------| |-------|-------|-------|
|
|-------|-------|-------| |-------|-------|-------|
|
||||||
| **1** | 1 | 2 | | **1** | 3 | 4 |
|
| **1** | 1 | 2 | | **1** | 3 | 4 |
|
||||||
| **0** | a | b | | **0** | c | d |
|
| **0** | a | b | | **0** | c | d |
|
||||||
|
|
||||||
|
MCP23018 pin assignments
|
||||||
|
DESTINATION PIN PIN_NUMBER PIN DESTINATION
|
||||||
|
GND VSS 1 28 NC
|
||||||
|
NC 2 27 GPA7
|
||||||
|
row0 GPB0 3 26 GPA6
|
||||||
|
row1 GPB1 4 25 GPA5
|
||||||
|
GPB2 5 24 GPA4
|
||||||
|
GPB4 7 22 GPA2
|
||||||
|
GPB5 8 21 GPA1 col1
|
||||||
|
GPB6 9 20 GPA0 col0
|
||||||
|
GPB7 10 19 INTA
|
||||||
|
LC 3.3V VCC 11 18 INTB
|
||||||
|
LC 19 SCL 12 17 NC
|
||||||
|
LC 18 SDA 13 16 /RESET VCC
|
||||||
|
NC 14 15 ADDR GND
|
||||||
|
|
||||||
*/
|
*/
|
||||||
// ################## GLOBAL ###################
|
// ################## GLOBAL ###################
|
||||||
// ================= INCLUDES ==================
|
// ================= INCLUDES ==================
|
||||||
#include <ScanDelay.h>
|
#include <ScanDelay.h>
|
||||||
#include <Code_Sc.h>
|
#include <Code_Sc.h>
|
||||||
#include <Code_LEDLock.h>
|
|
||||||
#include <Row.h>
|
#include <Row.h>
|
||||||
|
|
||||||
//left matrix
|
//left matrix
|
||||||
@ -36,28 +52,14 @@ const uint8_t readPinCount = sizeof(readPins)/sizeof(*readPins);
|
|||||||
|
|
||||||
Scanner_uC scanner_L(LOW, readPins, readPinCount);
|
Scanner_uC scanner_L(LOW, readPins, readPinCount);
|
||||||
|
|
||||||
/* =============== RIGHT SCANNER ===============
|
// =============== RIGHT SCANNER ===============
|
||||||
The right matrix is scanned by an I/O expander.
|
const uint8_t IOE_ADDR = 0x20; //MCP23018 ADDR pin grounded
|
||||||
The MCP23018 address is set by grounding or powering pins.
|
|
||||||
*/
|
|
||||||
const uint8_t IOE_ADDR = 0x20; //MCP23018 address pin grounded
|
|
||||||
|
|
||||||
/*
|
|
||||||
Normally all strobe pins are on one port, and all the read pins are on the other port.
|
|
||||||
In this example, portB stobes the row while portA reads the colums.
|
|
||||||
Port_MCP23018 constructor parameters are: deviceAddr, portNum, readPins.
|
|
||||||
readPins is a bit pattern, where 0=output, 1=input.
|
|
||||||
In portA, the first two pins are set to input for reading.
|
|
||||||
"<<" (bit shift left) and "|" (OR) are bitwise operators.
|
|
||||||
Pin numbers to be read are delimited by "|" and to the right of "1<<".
|
|
||||||
*/
|
|
||||||
Port_MCP23018 portA(IOE_ADDR, 0, 1<<0 | 1<<1 ); //read pins 0, 1
|
Port_MCP23018 portA(IOE_ADDR, 0, 1<<0 | 1<<1 ); //read pins 0, 1
|
||||||
Port_MCP23018 portB(IOE_ADDR, 1, 0);
|
Port_MCP23018 portB(IOE_ADDR, 1, 0);
|
||||||
Scanner_IOE scanner_R(LOW, portB, portA);
|
Scanner_IOE scanner_R(LOW, portB, portA);
|
||||||
|
|
||||||
/* ================= RIGHT LED =================
|
// ================= RIGHT LED =================
|
||||||
The LED_Port constructor parameters are a port and pin number that is connected to an LED.
|
|
||||||
*/
|
|
||||||
LED_Port LED_capsLck(portA, 1<<7);
|
LED_Port LED_capsLck(portA, 1<<7);
|
||||||
|
|
||||||
// =================== CODES ===================
|
// =================== CODES ===================
|
||||||
@ -71,19 +73,8 @@ Code_Sc s_2(KEY_2);
|
|||||||
Code_Sc s_3(KEY_3);
|
Code_Sc s_3(KEY_3);
|
||||||
Code_Sc s_4(KEY_4);
|
Code_Sc s_4(KEY_4);
|
||||||
|
|
||||||
Code_LEDLock o_capsLock(KEY_CAPS_LOCK, LED_capsLck);//was testing LED, restore s_4 when done
|
// =================== ROWS ====================
|
||||||
|
// ---------------- LEFT ROWS ------------------
|
||||||
/* =================== ROWS ====================
|
|
||||||
Left row names contain the letter 'L', while right row names conatain the letter 'R'.
|
|
||||||
|
|
||||||
Row constructor parameters are: scanner, strobePin, ptrsKeys[], keyCount.
|
|
||||||
strobePin has one of two formats:
|
|
||||||
* if refScanner a Scanner_uC, then strobePin is an Arduino pin number connected to this row
|
|
||||||
* otherwise strobePin is a bit pattern, 1 indicating an IC pin connected to the row
|
|
||||||
*/
|
|
||||||
/* ---------------- LEFT ROWS ------------------
|
|
||||||
The left rows have a Scanner_uC and Arduino pin numbers to strobe.
|
|
||||||
*/
|
|
||||||
Key* ptrsKeys_L0[] = { &s_1, &s_2 };
|
Key* ptrsKeys_L0[] = { &s_1, &s_2 };
|
||||||
const uint8_t KEY_COUNT_L0 = sizeof(ptrsKeys_L0)/sizeof(*ptrsKeys_L0);
|
const uint8_t KEY_COUNT_L0 = sizeof(ptrsKeys_L0)/sizeof(*ptrsKeys_L0);
|
||||||
Row row_L0(scanner_L, 0, ptrsKeys_L0, KEY_COUNT_L0);
|
Row row_L0(scanner_L, 0, ptrsKeys_L0, KEY_COUNT_L0);
|
||||||
@ -92,10 +83,8 @@ Key* ptrsKeys_L1[] = { &s_a, &s_b };
|
|||||||
const uint8_t KEY_COUNT_L1 = sizeof(ptrsKeys_L1)/sizeof(*ptrsKeys_L1);
|
const uint8_t KEY_COUNT_L1 = sizeof(ptrsKeys_L1)/sizeof(*ptrsKeys_L1);
|
||||||
Row row_L1(scanner_L, 1, ptrsKeys_L1, KEY_COUNT_L1);
|
Row row_L1(scanner_L, 1, ptrsKeys_L1, KEY_COUNT_L1);
|
||||||
|
|
||||||
/* ---------------- RIGHT ROWS -----------------
|
// ---------------- RIGHT ROWS -----------------
|
||||||
The right rows have a Scanner_IOE and pin bits to strobe.
|
Key* ptrsKeys_R0[] = { &s_3, &s_4 };
|
||||||
*/
|
|
||||||
Key* ptrsKeys_R0[] = { &s_3, &o_capsLock };
|
|
||||||
const uint8_t KEY_COUNT_R0 = sizeof(ptrsKeys_R0)/sizeof(*ptrsKeys_R0);
|
const uint8_t KEY_COUNT_R0 = sizeof(ptrsKeys_R0)/sizeof(*ptrsKeys_R0);
|
||||||
Row row_R0(scanner_R, 1<<0, ptrsKeys_R0, KEY_COUNT_R0);
|
Row row_R0(scanner_R, 1<<0, ptrsKeys_R0, KEY_COUNT_R0);
|
||||||
|
|
||||||
@ -106,7 +95,9 @@ Row row_R1(scanner_R, 1<<1, ptrsKeys_R1, KEY_COUNT_R1);
|
|||||||
// ################### MAIN ####################
|
// ################### MAIN ####################
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
Keyboard.begin();
|
delay(6000);
|
||||||
|
Keyboard.print("keybrd_MCP23018.ino ");
|
||||||
|
|
||||||
scanner_R.begin();
|
scanner_R.begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,10 +19,12 @@ Example instantiation:
|
|||||||
|
|
||||||
In the above Row instantiation, argument 0 for "strobePin" is ignored because there is no strobe.
|
In the above Row instantiation, argument 0 for "strobePin" is ignored because there is no strobe.
|
||||||
|
|
||||||
There are three Scanner_ShiftRegsRead parameters.
|
There are three Scanner_ShiftRegsRead-constructor parameters.
|
||||||
1. "activeState" paramter is ignored, but should be active state HIGH or LOW for ScannerInterface.
|
1. "activeState" paramter is ignored, but should be HIGH or LOW for documention.
|
||||||
|
activeState is required by ScannerInterface.
|
||||||
|
Actual activeState is determined by external pull-up or pull-down resistors described below.
|
||||||
2. "slaveSelect" paramter can be any controller pin connected to shift register's SHIFT-LOAD pin.
|
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).
|
3. "byte_count" is the number of bytes to read from shift registers (1, 2, 3, or 4).
|
||||||
byte_count should cover all the row's keys: byte_count*8 >= row's keyCount
|
byte_count should cover all the row's keys: byte_count*8 >= row's keyCount
|
||||||
|
|
||||||
Hardware setup:
|
Hardware setup:
|
||||||
|
Reference in New Issue
Block a user