imaradiostar
Member
Please forgive me for any breach of protocol- this is my first post. My name is Jamie and I've long been an engineering tech working on analog stuff. I thought it was time to join the 21st century so I'm here!
I'm attempting to increase the debounce time on a 3x3 matrix read using the OneWireKeypad library. With the debounce line commented out my code appears to work fine other than the occasional misread key. I'm attempting to fix that by increasing the debounce time. From examples I've seen around the internet it looks like I should be able to increase the debounce time but I've been unable to do so. I keep getting this error- 'class OnewireKeypad<Print, 9u>' has no member named 'SetDebounceTime'.
Since the recent update is the library no longer able to use debounce? Should I hand-write code to average the value for a given time then lock out further changes for X number of milliseconds?
Code enclosed. Thanks all!
Jamie
I'm attempting to increase the debounce time on a 3x3 matrix read using the OneWireKeypad library. With the debounce line commented out my code appears to work fine other than the occasional misread key. I'm attempting to fix that by increasing the debounce time. From examples I've seen around the internet it looks like I should be able to increase the debounce time but I've been unable to do so. I keep getting this error- 'class OnewireKeypad<Print, 9u>' has no member named 'SetDebounceTime'.
Since the recent update is the library no longer able to use debounce? Should I hand-write code to average the value for a given time then lock out further changes for X number of milliseconds?
Code enclosed. Thanks all!
Jamie
Code:
#include <BitBool.h>
#include <OnewireKeypad.h>
//7-3-2016 only keypad input so far
//7-15 managed to get LED's to turn on!
char KEYS[]= {
'1','2','3',
'4','5','6',
'7','8','9',
};
OnewireKeypad <Print, 9 > Keypad(Serial, KEYS, 3, 3, A9, 4700, 1000 );
int ledPin1 = 21;
int ledPin2 = 20;
int ledPin3 = 19;
int ledPin4 = 18;
int ledPin5 = 17;
int ledPin6 = 16;
int ledPin7 = 15;
int ledPin8 = 14;
void setup ()
{
// Keypad.setDebounceTime(250); // debounce time in ms(doesn't work)
Serial.begin(9600);
pinMode(ledPin1, OUTPUT); // sets the digital pin as output
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
}
void loop()
{
// Keypad.SetDebounceTime(250); // Key Debounce time in ms (doesn't work here either)
int key = Keypad.Getkey();
delay (10);
Serial.println(key);
if(key) // Check for a valid key.
{
switch (key)
{
case '1':
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
break;
case '2':
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
break;
case '3':
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
break;
case '4':
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
break;
case '5':
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
break;
case '6':
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, HIGH);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
break;
case '7':
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, HIGH);
digitalWrite(ledPin8, LOW);
break;
case '8':
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, HIGH);
break;
case '9':
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, HIGH);
digitalWrite(ledPin7, HIGH);
digitalWrite(ledPin8, HIGH);
break;
default:
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
}
}
}