From 999ec79b7ca15920a6dcb7cccd61922589f056bb Mon Sep 17 00:00:00 2001 From: Rob Tillaart Date: Sat, 11 Nov 2023 16:44:15 +0100 Subject: [PATCH] simplify begin() (#18) - simplify begin() - added I2Ckeypad_Wire1_ESP32.ino - update readme.md - minor edits --- CHANGELOG.md | 9 +- I2CKeyPad .cpp | 34 ++---- I2CKeyPad.h | 10 +- README.md | 41 ++++++- .../I2CKeypad_interrupts_1.ino | 20 ++-- examples/I2Ckeypad_5x3/I2Ckeypad_5x3.ino | 4 +- examples/I2Ckeypad_6x2/I2Ckeypad_6x2.ino | 4 +- examples/I2Ckeypad_8x1/I2Ckeypad_8x1.ino | 5 +- .../I2Ckeypad_Wire1_ESP32/.arduino-ci.yml | 28 +++++ .../I2Ckeypad_Wire1_ESP32.ino | 111 ++++++++++++++++++ .../I2Ckeypad_demo01/I2Ckeypad_demo01.ino | 4 +- .../I2Ckeypad_demo02/I2Ckeypad_demo02.ino | 8 +- .../I2Ckeypad_demo03/I2Ckeypad_demo03.ino | 26 ++-- .../I2Ckeypad_keymap/I2Ckeypad_keymap.ino | 4 +- .../I2Ckeypad_keymap_calculator.ino | 8 +- .../I2Ckeypad_keymap_demo2.ino | 10 +- .../I2Ckeypad_readKeyUntil.ino | 24 ++-- .../I2Ckeypad_readKeyUntil_KM.ino | 32 +++-- library.json | 4 +- library.properties | 2 +- 20 files changed, 273 insertions(+), 115 deletions(-) create mode 100644 examples/I2Ckeypad_Wire1_ESP32/.arduino-ci.yml create mode 100644 examples/I2Ckeypad_Wire1_ESP32/I2Ckeypad_Wire1_ESP32.ino diff --git a/CHANGELOG.md b/CHANGELOG.md index f59cb93..4599cb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,11 +6,18 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [0.4.0] - 2023-11-09 +- simplify begin() +- added I2Ckeypad_Wire1_ESP32.ino +- update readme.md +- minor edits + +---- + ## [0.3.3] - 2022-11-12 - Add RP2040 support to build-CI. - Add CHANGELOG.md - ## [0.3.2] - 2022-09-19 - experimental version - add 5x3, 6x2 and 8x1 support diff --git a/I2CKeyPad .cpp b/I2CKeyPad .cpp index 098792c..8ab0abc 100644 --- a/I2CKeyPad .cpp +++ b/I2CKeyPad .cpp @@ -1,11 +1,9 @@ // // FILE: I2CKeyPad.cpp // AUTHOR: Rob Tillaart -// VERSION: 0.3.3 +// VERSION: 0.4.0 // PURPOSE: Arduino library for 4x4 KeyPad connected to an I2C PCF8574 // URL: https://github.com/RobTillaart/I2CKeyPad -// -// HISTORY: see changelog.md #include "I2CKeyPad.h" @@ -20,20 +18,8 @@ I2CKeyPad::I2CKeyPad(const uint8_t deviceAddress, TwoWire *wire) } -#if defined(ESP8266) || defined(ESP32) -bool I2CKeyPad::begin(uint8_t sda, uint8_t scl) -{ - _wire->begin(sda, scl); - // enable interrupts - _read(0xF0); - return isConnected(); -} -#endif - - bool I2CKeyPad::begin() { - _wire->begin(); // enable interrupts _read(0xF0); return isConnected(); @@ -145,9 +131,9 @@ uint8_t I2CKeyPad::_getKey4x4() else if (rows == 0x70) key = 3; else return I2C_KEYPAD_FAIL; - // 4 columns as input pull up, 4 rows as output + // 4 columns as input pull up, 4 rows as output uint8_t cols = _read(0x0F); - // check if single line has gone low. + // check if single line has gone low. if (cols == 0x0F) return I2C_KEYPAD_NOKEY; else if (cols == 0x0E) key += 0; else if (cols == 0x0D) key += 4; @@ -157,7 +143,7 @@ uint8_t I2CKeyPad::_getKey4x4() _lastKey = key; - return key; // 0..15 + return key; // 0..15 } @@ -189,7 +175,7 @@ uint8_t I2CKeyPad::_getKey5x3() _lastKey = key; - return key; // 0..14 + return key; // 0..14 } @@ -211,9 +197,9 @@ uint8_t I2CKeyPad::_getKey6x2() else if (rows == 0x7C) key = 5; else return I2C_KEYPAD_FAIL; - // 2 columns as input pull up, 6 rows as output + // 2 columns as input pull up, 6 rows as output uint8_t cols = _read(0x03); - // check if single line has gone low. + // check if single line has gone low. if (cols == 0x03) return I2C_KEYPAD_NOKEY; else if (cols == 0x02) key += 0; else if (cols == 0x01) key += 6; @@ -221,7 +207,7 @@ uint8_t I2CKeyPad::_getKey6x2() _lastKey = key; - return key; // 0..11 + return key; // 0..11 } @@ -247,9 +233,9 @@ uint8_t I2CKeyPad::_getKey8x1() _lastKey = key; - return key; // 0..7 + return key; // 0..7 } -// -- END OF FILE -- +// -- END OF FILE -- diff --git a/I2CKeyPad.h b/I2CKeyPad.h index 01a9aee..19b7d84 100644 --- a/I2CKeyPad.h +++ b/I2CKeyPad.h @@ -2,7 +2,7 @@ // // FILE: I2CKeyPad.h // AUTHOR: Rob Tillaart -// VERSION: 0.3.3 +// VERSION: 0.4.0 // PURPOSE: Arduino library for 4x4 KeyPad connected to an I2C PCF8574 // URL: https://github.com/RobTillaart/I2CKeyPad @@ -11,7 +11,7 @@ #include "Wire.h" -#define I2C_KEYPAD_LIB_VERSION (F("0.3.3")) +#define I2C_KEYPAD_LIB_VERSION (F("0.4.0")) #define I2C_KEYPAD_NOKEY 16 #define I2C_KEYPAD_FAIL 17 @@ -28,9 +28,7 @@ class I2CKeyPad public: I2CKeyPad(const uint8_t deviceAddress, TwoWire *wire = &Wire); -#if defined(ESP8266) || defined(ESP32) - bool begin(uint8_t sda, uint8_t scl); -#endif + // call Wire.begin() first! bool begin(); // get raw key's 0..15 @@ -69,5 +67,5 @@ class I2CKeyPad }; -// -- END OF FILE -- +// -- END OF FILE -- diff --git a/README.md b/README.md index 3a102bb..d6eb2bd 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,11 @@ [![Arduino CI](https://github.com/RobTillaart/I2CKeyPad/workflows/Arduino%20CI/badge.svg)](https://github.com/marketplace/actions/arduino_ci) [![Arduino-lint](https://github.com/RobTillaart/I2CKeyPad/actions/workflows/arduino-lint.yml/badge.svg)](https://github.com/RobTillaart/I2CKeyPad/actions/workflows/arduino-lint.yml) [![JSON check](https://github.com/RobTillaart/I2CKeyPad/actions/workflows/jsoncheck.yml/badge.svg)](https://github.com/RobTillaart/I2CKeyPad/actions/workflows/jsoncheck.yml) +[![GitHub issues](https://img.shields.io/github/issues/RobTillaart/I2CKeyPad.svg)](https://github.com/RobTillaart/I2CKeyPad/issues) + [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/I2CKeyPad/blob/master/LICENSE) [![GitHub release](https://img.shields.io/github/release/RobTillaart/I2CKeyPad.svg?maxAge=3600)](https://github.com/RobTillaart/I2CKeyPad/releases) +[![PlatformIO Registry](https://badges.registry.platformio.org/packages/robtillaart/library/I2CKeyPad.svg)](https://registry.platformio.org/libraries/robtillaart/I2CKeyPad) # I2CKeyPad @@ -18,7 +21,13 @@ Smaller keypads, meaning less columns or rows (4x3) can be read with it too. Since 0.3.2 the library allows a 5x3, 6x2 or 8x1 or smaller keypad to be connected too. -Relates to https://github.com/RobTillaart/I2CKeyPad8x8. which is an 8x8 version using PCF8575. +#### Related + +Relates strongly to https://github.com/RobTillaart/I2CKeyPad8x8. which is an 8x8 version using **PCF8575**. + +- https://github.com/RobTillaart/AnalogKeypad +- https://github.com/RobTillaart/I2CKeyPad8x8 +- https://github.com/WK-Software56/AdvKeyPad (derived work with keyboard alike interface) ## Connection @@ -45,12 +54,17 @@ It might take some trying to get the correct pins connected. ## Interface -- **I2CKEYPAD(const uint8_t deviceAddress, TwoWire \*wire = &Wire)** +```cpp +#include "I2CKeyPad.h" +``` + +#### Base + +- **I2CKeyPad(const uint8_t deviceAddress, TwoWire \*wire = &Wire)** The constructor sets the device address and optionally allows to selects the I2C bus to use. - **bool begin()** The return value shows if the PCF8574 with the given address is connected properly. -- **bool begin(uint8_t sda, uint8_t scl)** for ESP32. -The return value shows if the PCF8574 with the given address is connected properly. +Call wire.begin() first! - **bool isConnected()** returns false if the PCF8574 cannot be connected to. - **uint8_t getKey()** Returns default 0..15 for regular keys, Returns 16 if no key is pressed and 17 in case of an error. @@ -141,5 +155,24 @@ See examples ## Future +#### Must + - update documentation + +#### Should + - test key mapping functions. + +#### Could + +#### Wont + + +## Support + +If you appreciate my libraries, you can support the development and maintenance. +Improve the quality of the libraries by providing issues and Pull Requests, or +donate through PayPal or GitHub sponsors. + +Thank you, + diff --git a/examples/I2CKeypad_interrupts_1/I2CKeypad_interrupts_1.ino b/examples/I2CKeypad_interrupts_1/I2CKeypad_interrupts_1.ino index f22af17..eb9ed9a 100644 --- a/examples/I2CKeypad_interrupts_1/I2CKeypad_interrupts_1.ino +++ b/examples/I2CKeypad_interrupts_1/I2CKeypad_interrupts_1.ino @@ -13,7 +13,7 @@ // IRQ pin 2 // SDA A4 // SCL A5 -// 4x4 or smaller keypad. +// 4x4 or smaller keypad. // notes @@ -36,7 +36,7 @@ // however it is more efficient to reset the flag only after the // keypress is handled. // -// Note: multiple keypresses are not queued. +// Note: multiple keypresses are not queued. //////////////////////////////////////////////////////////////////////// @@ -49,7 +49,7 @@ const uint8_t KEYPAD_ADDRESS = 0x20; I2CKeyPad keyPad(KEYPAD_ADDRESS); -char keys[] = "123A456B789C*0#DNF"; // N = NoKey, F = Fail (e.g. >1 keys pressed) +char keys[] = "123A456B789C*0#DNF"; // N = NoKey, F = Fail (e.g. > 1 keys pressed) // volatile for IRQ var volatile bool keyChange = false; @@ -67,13 +67,13 @@ void setup() Serial.println(__FILE__); - // NOTE: PCF8574 will generate an interrupt on key press and release. + // NOTE: PCF8574 will generate an interrupt on key press and release. pinMode(3, INPUT_PULLUP); attachInterrupt(1, keyChanged, FALLING); keyChange = false; - Wire.begin(); + Wire.setClock(100000); if (keyPad.begin() == false) { Serial.println("\nERROR: cannot communicate to keypad.\nPlease reboot.\n"); @@ -81,8 +81,6 @@ void setup() } measurePolling(); - - Wire.setClock(100000); } @@ -91,7 +89,7 @@ void loop() if (keyChange) { uint8_t index = keyPad.getKey(); - // only after keyChange is handled it is time reset the flag + // only after keyChange is handled it is time reset the flag keyChange = false; if (index != 16) { @@ -109,7 +107,7 @@ void loop() void measurePolling() { - // measure time to check isPressed() by polling. + // measure time to check isPressed() by polling. // CLOCK TIME (us) // --------------------- @@ -126,7 +124,7 @@ void measurePolling() Wire.setClock(clock); for (int i = 0; i < 1; i++) { - // reference time for keyPressed check UNO ~ + // reference time for keyPressed check UNO ~ uint32_t start = micros(); uint8_t index = keyPad.isPressed(); uint32_t stop = micros(); @@ -144,5 +142,5 @@ void measurePolling() } -// -- END OF FILE -- +// -- END OF FILE -- diff --git a/examples/I2Ckeypad_5x3/I2Ckeypad_5x3.ino b/examples/I2Ckeypad_5x3/I2Ckeypad_5x3.ino index d282799..1090975 100644 --- a/examples/I2Ckeypad_5x3/I2Ckeypad_5x3.ino +++ b/examples/I2Ckeypad_5x3/I2Ckeypad_5x3.ino @@ -41,7 +41,7 @@ void loop() { uint32_t now = millis(); // adjust keymap if needed - char keys[] = "1234567890ABCDE NF"; // N = NoKey, F = Fail + char keys[] = "1234567890ABCDE NF"; // N = NoKey, F = Fail if (now - lastKeyPressed >= 100) { @@ -62,4 +62,4 @@ void loop() } -// -- END OF FILE -- +// -- END OF FILE -- diff --git a/examples/I2Ckeypad_6x2/I2Ckeypad_6x2.ino b/examples/I2Ckeypad_6x2/I2Ckeypad_6x2.ino index e05874b..511fe38 100644 --- a/examples/I2Ckeypad_6x2/I2Ckeypad_6x2.ino +++ b/examples/I2Ckeypad_6x2/I2Ckeypad_6x2.ino @@ -41,7 +41,7 @@ void loop() { uint32_t now = millis(); // adjust keymap if needed - char keys[] = "1234567890ABC NF"; // N = NoKey, F = Fail + char keys[] = "1234567890ABC NF"; // N = NoKey, F = Fail if (now - lastKeyPressed >= 100) { @@ -62,4 +62,4 @@ void loop() } -// -- END OF FILE -- +// -- END OF FILE -- diff --git a/examples/I2Ckeypad_8x1/I2Ckeypad_8x1.ino b/examples/I2Ckeypad_8x1/I2Ckeypad_8x1.ino index ce7655f..a97ef10 100644 --- a/examples/I2Ckeypad_8x1/I2Ckeypad_8x1.ino +++ b/examples/I2Ckeypad_8x1/I2Ckeypad_8x1.ino @@ -6,7 +6,6 @@ // // PCF8574 // pin p0-p7 rows -// #include "Wire.h" @@ -41,7 +40,7 @@ void loop() { uint32_t now = millis(); // adjust keymap if needed - char keys[] = "12345678 NF"; // N = NoKey, F = Fail + char keys[] = "12345678 NF"; // N = NoKey, F = Fail if (now - lastKeyPressed >= 100) { @@ -62,4 +61,4 @@ void loop() } -// -- END OF FILE -- +// -- END OF FILE -- diff --git a/examples/I2Ckeypad_Wire1_ESP32/.arduino-ci.yml b/examples/I2Ckeypad_Wire1_ESP32/.arduino-ci.yml new file mode 100644 index 0000000..e1c447b --- /dev/null +++ b/examples/I2Ckeypad_Wire1_ESP32/.arduino-ci.yml @@ -0,0 +1,28 @@ +platforms: + rpipico: + board: rp2040:rp2040:rpipico + package: rp2040:rp2040 + gcc: + features: + defines: + - ARDUINO_ARCH_RP2040 + warnings: + flags: + +packages: + rp2040:rp2040: + url: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json + +compile: + # Choosing to run compilation tests on 2 different Arduino platforms + platforms: + # - uno + # - due + # - zero + # - leonardo + # - m4 + - esp32 + # - esp8266 + # - mega2560 + # - rpipico + diff --git a/examples/I2Ckeypad_Wire1_ESP32/I2Ckeypad_Wire1_ESP32.ino b/examples/I2Ckeypad_Wire1_ESP32/I2Ckeypad_Wire1_ESP32.ino new file mode 100644 index 0000000..ffe5da7 --- /dev/null +++ b/examples/I2Ckeypad_Wire1_ESP32/I2Ckeypad_Wire1_ESP32.ino @@ -0,0 +1,111 @@ +// +// FILE: I2Ckeypad_Wire1_ESP32.ino +// AUTHOR: Rob Tillaart +// PURPOSE: demo reading a larger value from the keyPad +// URL: https://github.com/RobTillaart/I2CKeyPad +// +// PCF8574 +// pin p0-p3 rows +// pin p4-p7 columns +// 4x4 or smaller keypad. + + +#include "Wire.h" +#include "I2CKeyPad.h" + +const uint8_t KEYPAD_ADDRESS = 0x38; + +I2CKeyPad keyPad(KEYPAD_ADDRESS, &Wire1); + +uint32_t start, stop; +uint32_t lastKeyPressed = 0; +uint32_t value = 0; + + +void setup() +{ + Serial.begin(115200); + Serial.println(__FILE__); + + Wire1.begin(22, 23); // adjust pins if needed + Wire1.setClock(400000); + if (keyPad.begin() == false) + { + Serial.println("\nERROR: cannot communicate to keypad.\nPlease reboot.\n"); + while(1); + } +} + + +void loop() +{ + uint32_t now = millis(); + + if (now - lastKeyPressed >= 100) + { + lastKeyPressed = now; + + start = micros(); + char c = handleKeyPadValue(value); + if (value > 125000) value = 125000; // some sample max. + stop = micros(); + Serial.print(millis()); + Serial.print("\t"); + Serial.print(value); + Serial.print("\t"); + Serial.print((char) c); + Serial.print("\t"); + Serial.println(stop - start); + } +} + + +// handleKeyPadValue is used to read a uint32_t from the keypad +// every digit must be pressed separately +// the last key pressed is also returned. +// +// 0..9 adds to the number +// * means remove last digit +// # resets to zero +// ABCD are not mapped. +char handleKeyPadValue(uint32_t &value) +{ + char v[19] = "123A456B789C*0#DNF"; // N = NoKey, F = Fail + static uint8_t lastKey = 0; + + uint8_t idx = keyPad.getKey(); + char c = v[idx]; + + if (lastKey != c) + { + lastKey = c; + switch (c) + { + case '0' ... '9': + value *= 10; + value += c - '0'; + break; + case '*': + if (value > 0) value /= 10; + break; + case '#': + value = 0; + break; + case 'A' ... 'D': + // e.g. store value in EEPROM + break; + case 'F': + Serial.println("FAIL"); + break; + case 'N': + Serial.println("NOKEY"); + break; + default: + break; + } + } + return c; +} + + +// -- END OF FILE -- diff --git a/examples/I2Ckeypad_demo01/I2Ckeypad_demo01.ino b/examples/I2Ckeypad_demo01/I2Ckeypad_demo01.ino index 5bc3e02..ce6b1ff 100644 --- a/examples/I2Ckeypad_demo01/I2Ckeypad_demo01.ino +++ b/examples/I2Ckeypad_demo01/I2Ckeypad_demo01.ino @@ -39,7 +39,7 @@ void setup() void loop() { uint32_t now = millis(); - char keys[] = "123A456B789C*0#DNF"; // N = NoKey, F = Fail + char keys[] = "123A456B789C*0#DNF"; // N = NoKey, F = Fail if (now - lastKeyPressed >= 100) { @@ -60,5 +60,5 @@ void loop() } -// -- END OF FILE -- +// -- END OF FILE -- diff --git a/examples/I2Ckeypad_demo02/I2Ckeypad_demo02.ino b/examples/I2Ckeypad_demo02/I2Ckeypad_demo02.ino index 8badf2d..cbacb7c 100644 --- a/examples/I2Ckeypad_demo02/I2Ckeypad_demo02.ino +++ b/examples/I2Ckeypad_demo02/I2Ckeypad_demo02.ino @@ -4,10 +4,10 @@ // PURPOSE: demo // URL: https://github.com/RobTillaart/I2CKeyPad // -// PCF8574 +// PCF8574 // pin p0-p3 rows // pin p4-p7 columns -// 4x4 or smaller keypad. +// 4x4 or smaller keypad. #include "Wire.h" @@ -55,7 +55,7 @@ void loop() Serial.print("\t"); Serial.print(index); Serial.print("\t"); - Serial.print((char)"123A456B789C*0#DNF"[index]); // NoKey, Fail + Serial.print((char)"123A456B789C*0#DNF"[index]); // NoKey, Fail Serial.print("\t"); Serial.print(lastKey); Serial.print("\t"); @@ -68,5 +68,5 @@ void loop() } -// -- END OF FILE -- +// -- END OF FILE -- diff --git a/examples/I2Ckeypad_demo03/I2Ckeypad_demo03.ino b/examples/I2Ckeypad_demo03/I2Ckeypad_demo03.ino index 07702b8..1aaa5f5 100644 --- a/examples/I2Ckeypad_demo03/I2Ckeypad_demo03.ino +++ b/examples/I2Ckeypad_demo03/I2Ckeypad_demo03.ino @@ -4,10 +4,10 @@ // PURPOSE: demo reading a larger value from the keyPad // URL: https://github.com/RobTillaart/I2CKeyPad // -// PCF8574 +// PCF8574 // pin p0-p3 rows // pin p4-p7 columns -// 4x4 or smaller keypad. +// 4x4 or smaller keypad. #include "Wire.h" @@ -47,7 +47,7 @@ void loop() start = micros(); char c = handleKeyPadValue(value); - if (value > 125000) value = 125000; // some sample max. + if (value > 125000) value = 125000; // some sample max. stop = micros(); Serial.print(millis()); Serial.print("\t"); @@ -60,17 +60,17 @@ void loop() } -// handleKeyPadValue is used to read a uint32_t from the keypad -// every digit must be pressed separately -// the last key pressed is also returned. +// handleKeyPadValue is used to read a uint32_t from the keypad +// every digit must be pressed separately +// the last key pressed is also returned. // -// 0..9 adds to the number -// * means remove last digit -// # resets to zero -// ABCD are not mapped. +// 0..9 adds to the number +// * means remove last digit +// # resets to zero +// ABCD are not mapped. char handleKeyPadValue(uint32_t &value) { - char v[19] = "123A456B789C*0#DNF"; // N = NoKey, F = Fail + char v[19] = "123A456B789C*0#DNF"; // N = NoKey, F = Fail static uint8_t lastKey = 0; uint8_t idx = keyPad.getKey(); @@ -92,7 +92,7 @@ char handleKeyPadValue(uint32_t &value) value = 0; break; case 'A' ... 'D': - // e.g. store value in EEPROM + // e.g. store value in EEPROM break; case 'F': Serial.println("FAIL"); @@ -108,5 +108,5 @@ char handleKeyPadValue(uint32_t &value) } -// -- END OF FILE -- +// -- END OF FILE -- diff --git a/examples/I2Ckeypad_keymap/I2Ckeypad_keymap.ino b/examples/I2Ckeypad_keymap/I2Ckeypad_keymap.ino index 17f7b53..f56c56e 100644 --- a/examples/I2Ckeypad_keymap/I2Ckeypad_keymap.ino +++ b/examples/I2Ckeypad_keymap/I2Ckeypad_keymap.ino @@ -4,10 +4,10 @@ // PURPOSE: demo key mapping // URL: https://github.com/RobTillaart/I2CKeyPad // -// PCF8574 +// PCF8574 // pin p0-p3 rows // pin p4-p7 columns -// 4x4 or smaller keypad. +// 4x4 or smaller keypad. #include "Wire.h" diff --git a/examples/I2Ckeypad_keymap_calculator/I2Ckeypad_keymap_calculator.ino b/examples/I2Ckeypad_keymap_calculator/I2Ckeypad_keymap_calculator.ino index 4959c87..42ccdcc 100644 --- a/examples/I2Ckeypad_keymap_calculator/I2Ckeypad_keymap_calculator.ino +++ b/examples/I2Ckeypad_keymap_calculator/I2Ckeypad_keymap_calculator.ino @@ -4,10 +4,10 @@ // PURPOSE: demo key mapping // URL: https://github.com/RobTillaart/I2CKeyPad // -// PCF8574 +// PCF8574 // pin p0-p3 rows // pin p4-p7 columns -// 4x4 or smaller keypad. +// 4x4 or smaller keypad. // @@ -20,7 +20,7 @@ const uint8_t KEYPAD_ADDRESS = 0x38; I2CKeyPad keyPad(KEYPAD_ADDRESS); // minimal calculator layout -char calculator_layout[19] = "789+456-123 0 NF"; // N = NoKey, F = Fail +char calculator_layout[19] = "789+456-123 0 NF"; // N = NoKey, F = Fail int32_t sum = 0; int32_t val = 0; @@ -73,5 +73,5 @@ void loop() } -// -- END OF FILE -- +// -- END OF FILE -- diff --git a/examples/I2Ckeypad_keymap_demo2/I2Ckeypad_keymap_demo2.ino b/examples/I2Ckeypad_keymap_demo2/I2Ckeypad_keymap_demo2.ino index cb2e21c..9380c3b 100644 --- a/examples/I2Ckeypad_keymap_demo2/I2Ckeypad_keymap_demo2.ino +++ b/examples/I2Ckeypad_keymap_demo2/I2Ckeypad_keymap_demo2.ino @@ -4,10 +4,10 @@ // PURPOSE: demo key mapping // URL: https://github.com/RobTillaart/I2CKeyPad // -// PCF8574 +// PCF8574 // pin p0-p3 rows // pin p4-p7 columns -// 4x4 or smaller keypad. +// 4x4 or smaller keypad. #include "Wire.h" @@ -20,8 +20,8 @@ I2CKeyPad keyPad(KEYPAD_ADDRESS); // two different lay out styles of a nummeric keyPad -char phone_layout[19] = "123A456B789C*0#DNF"; // N = NoKey, F = Fail -char calculator_layout[19] = "789A456B123C*0#DNF"; // N = NoKey, F = Fail +char phone_layout[19] = "123A456B789C*0#DNF"; // N = NoKey, F = Fail +char calculator_layout[19] = "789A456B123C*0#DNF"; // N = NoKey, F = Fail void setup() @@ -60,5 +60,5 @@ void loop() } -// -- END OF FILE -- +// -- END OF FILE -- diff --git a/examples/I2Ckeypad_readKeyUntil/I2Ckeypad_readKeyUntil.ino b/examples/I2Ckeypad_readKeyUntil/I2Ckeypad_readKeyUntil.ino index cb6911c..1e16d32 100644 --- a/examples/I2Ckeypad_readKeyUntil/I2Ckeypad_readKeyUntil.ino +++ b/examples/I2Ckeypad_readKeyUntil/I2Ckeypad_readKeyUntil.ino @@ -4,10 +4,10 @@ // PURPOSE: demo reading until specific keyPress // URL: https://github.com/RobTillaart/I2CKeyPad // -// PCF8574 +// PCF8574 // pin p0-p3 rows // pin p4-p7 columns -// 4x4 or smaller keypad. +// 4x4 or smaller keypad. // // This demo doesn't use the build in key mapping. // @@ -64,14 +64,14 @@ void loop() // -// until = end character -// buffer = buffer to fill -// length = length of buffer (including '\0' -// timeout = timeout in milliseconds -// returns 0 = success -// -1 = keyPad fail -// -2 = timeout -// -3 = buffer overflow +// until = end character +// buffer = buffer to fill +// length = length of buffer (including '\0' +// timeout = timeout in milliseconds +// returns 0 = success +// -1 = keyPad fail +// -2 = timeout +// -3 = buffer overflow int readKeyPadUntil(char until, char * buffer, uint8_t length, uint16_t timeout) { char keymap[19] = "123A456B789C*0#DNF"; // ... NoKey Fail } @@ -99,7 +99,7 @@ int readKeyPadUntil(char until, char * buffer, uint8_t length, uint16_t timeout) // handle end conditions if ( key == until) return 0; - if ( key == 'F') return -1; // failed to read; + if ( key == 'F') return -1; // failed to read; if (bufferIndex == length) return -3; // add key to buffer @@ -116,5 +116,5 @@ int readKeyPadUntil(char until, char * buffer, uint8_t length, uint16_t timeout) } -// -- END OF FILE -- +// -- END OF FILE -- diff --git a/examples/I2Ckeypad_readKeyUntil_KM/I2Ckeypad_readKeyUntil_KM.ino b/examples/I2Ckeypad_readKeyUntil_KM/I2Ckeypad_readKeyUntil_KM.ino index 65bac4a..34e0e74 100644 --- a/examples/I2Ckeypad_readKeyUntil_KM/I2Ckeypad_readKeyUntil_KM.ino +++ b/examples/I2Ckeypad_readKeyUntil_KM/I2Ckeypad_readKeyUntil_KM.ino @@ -4,13 +4,12 @@ // PURPOSE: demo reading until specific keyPress - using build in key mapping // URL: https://github.com/RobTillaart/I2CKeyPad // -// PCF8574 +// PCF8574 // pin p0-p3 rows // pin p4-p7 columns -// 4x4 or smaller keypad. +// 4x4 or smaller keypad. // // This demo doesn't use the build in key mapping. -// #include "Wire.h" @@ -67,15 +66,14 @@ void loop() } -// -// until = end character -// buffer = buffer to fill -// length = length of buffer (including '\0' -// timeout = timeout in milliseconds -// returns 0 = success -// -1 = keyPad fail -// -2 = timeout -// -3 = buffer overflow +// until = end character +// buffer = buffer to fill +// length = length of buffer (including '\0' +// timeout = timeout in milliseconds +// returns 0 = success +// -1 = keyPad fail +// -2 = timeout +// -3 = buffer overflow // int readKeyPadUntil(char until, char * buffer, uint8_t length, uint16_t timeout) { @@ -90,15 +88,15 @@ int readKeyPadUntil(char until, char * buffer, uint8_t length, uint16_t timeout) { char ch = keyPad.getChar(); if (ch == 'N') lastChar = 'N'; - else if (ch == until) return 0; // success - else if (ch == 'F') return -1; // keyPad fail + else if (ch == until) return 0; // success + else if (ch == 'F') return -1; // keyPad fail else { if (ch != lastChar) { lastChar = ch; - if ( bufferIndex == length ) return -3; // overflow - // add key to buffer + if ( bufferIndex == length ) return -3; // overflow + // add key to buffer buffer[bufferIndex++] = ch; buffer[bufferIndex] = 0; } @@ -109,5 +107,5 @@ int readKeyPadUntil(char until, char * buffer, uint8_t length, uint16_t timeout) } -// -- END OF FILE -- +// -- END OF FILE -- diff --git a/library.json b/library.json index e895e05..974f37d 100644 --- a/library.json +++ b/library.json @@ -15,9 +15,9 @@ "type": "git", "url": "https://github.com/RobTillaart/I2CKeyPad.git" }, - "version": "0.3.3", + "version": "0.4.0", "license": "MIT", - "frameworks": "arduino", + "frameworks": "*", "platforms": "*", "headers": "I2CKeyPad.h" } diff --git a/library.properties b/library.properties index 3ebb790..46716f9 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=I2CKeyPad -version=0.3.3 +version=0.4.0 author=Rob Tillaart maintainer=Rob Tillaart sentence=Arduino library for a KeyPad connected to a PCF8574.