I know I should know this, being a moderator, but I can't find how.
My displayed name used to be "Nick Gammon" but my underlying username is "nickgammon".
Now my name is displayed as "nickgammon" which is an irritation. I can't find how to change that.
How do I stop the forum logging me out after about 24 hours? It used to leave me logged in for months.
The administrator "member search" doesn't seem to work. If I uncheck all boxes except global moderators (see graphic) and do a search I get 13737 pages of results where each page is 30 users. It seems highly unlikely that we have 412,110 global moderators.
There now seems to be something like a number of hours inactivity that triggers the logout.
I currently don't have much time to sit behind my computers so mostly use a cell phone which hardly ever requires logon. All my other machines require login after some period of not using this forum.
Delta_G:
I saw a post yesterday with nickgammon in all lowercase and almost accused you of being an impostor.
Bloody hell! I got logged out again before I could reply. What, is there an 8-hour timeout? This is ridiculous.
Anyway, back to the subject, yes that's my point. People would be saying "as Nick Gammon said in his post" and now it is "nickgammon". Now I know that's similar, but as programmers we know that nickgammon and nickGammon are two different variable names. Near enough isn't good enough.
"Bloody hell! I got logged out again before I could reply. What, is there an 8-hour timeout? This is ridiculous."
That's a feature they added to prevent spamming.
Once you get past 100,000 posts, this limitation disappears.
BTW
Made filter additions to nick gammon's switch manager.
// Class for managing switch presses
// Author: Nick Gammon
// Date: 18 December 2013
// Modified: 12 February 2015 to pass pin number to function
// Noise filter Added REV. 1.01 LarryD
// With an input sample rate of 10ms, input signals > 20ms are guaranteed to be captured.
// Signals 10-20ms might be captured, with signals < 10ms guaranteed not to be captured.
/*
Example:
#include <SwitchManager.h>
SwitchManager mySwitch; // declare
// newState will be LOW or HIGH (the is the state the switch is now in)
// interval will be how many mS between the opposite state and this one
// whichPin will be which pin caused this change (so you can share the function amongst multiple switches)
void handleSwitchPress (const byte newState, const unsigned long interval, const byte whichPin)
{
}
void setup ()
{
mySwitch.begin (2, handleSwitchPress);
}
void loop ()
{
mySwitch.check (); // check for presses
}
*/
#include <Arduino.h>
class SwitchManager
{
enum { debounceTime = 10, noSwitch = -1 };
typedef void (*handlerFunction) (const byte newState,
const unsigned long interval,
const byte whichSwitch);
int pinNumber_;
handlerFunction f_;
byte oldSwitchState_;
unsigned long switchPressTime_; // when the switch last changed state
unsigned long lastLowTime_;
unsigned long lastHighTime_;
byte sampleCounter_; // 1.01
public:
// constructor
SwitchManager ()
{
pinNumber_ = noSwitch;
f_ = NULL;
oldSwitchState_ = HIGH;
switchPressTime_ = 0;
lastLowTime_ = 0;
lastHighTime_ = 0;
sampleCounter_ = 0; // 1.01
}
void begin (const int pinNumber, handlerFunction f)
{
pinNumber_ = pinNumber;
f_ = f;
if (pinNumber_ != noSwitch)
pinMode (pinNumber_, INPUT_PULLUP);
} // end of begin
void check ()
{
// we need a valid pin number and a valid function to call
if (pinNumber_ == noSwitch || f_ == NULL)
return;
// Time to check the switch?
if (millis () - switchPressTime_ < debounceTime) // 1.01
{
//it's not time yet
return;
}
switchPressTime_ = millis();
byte switchState = digitalRead(pinNumber_);
//Has the switch changed state?
if (switchState == oldSwitchState_) // 1.01
{
// Reset the counter as no state changed was detected 1.01
sampleCounter_ = 0; // 1.01
return; // 1.01
}
// The switch has changed state
sampleCounter_++; // This is used to filter circuit noise 1.01
// Must read the switch sequential 2 times before we validate a switch change. 1.01
// i.e. if debounceTime is 10ms, it will take 20ms to validate a switch change. 1.01
// With an input sample rate of 10ms, input signals > 20ms are guaranteed to be captured. 1.01
// Signals 10-20ms might be captured, with signals < 10ms guaranteed not to be captured. 1.01
// Is this the 2nd time in two sequential reads? 1.01
if (sampleCounter_ >= 2) // 1.01
{
oldSwitchState_ = switchState; // remember for next time
// Get ready for the next 2 samples 1.01
sampleCounter_ = 0; // 1.01
// see if switch is open or closed
if (switchState == LOW)
{
lastLowTime_ = switchPressTime_;
f_ (LOW, lastLowTime_ - lastHighTime_, pinNumber_);
}
// switch must be HIGH then
else
{
lastHighTime_ = switchPressTime_;
f_ (HIGH, lastHighTime_ - lastLowTime_, pinNumber_);
}
}
} // end of operator ()
}; // class SwitchManager
Did you notice your new name was used >>>>>-----> nick gammon's <-----<<<<<