/* * Computer Switchboard * * Because interfacing with computers should be fun * and a keyboard is not enough. * * Let's turn a computer into an airplane (interface wise). * * * * MINIMAL: * I only need the button to shutdown the computer. No rotary or 7seg. */ //todo: debounce, see neotimer //makes serial slower so it can be read #define DEBUGMODE 0 #include #include //switch // digital pin 9 has a pushbutton attached to it. Give it a name: int pushButton = 9; // Example showing use of the MD_KeySwitch library // // Momentary switch // // Prints the switch value on the Serial Monitor // Allows setting of options to see theior effect (see setup()) // #include // This is just an average debounce -steak // what i need is a way to actually, not register if I don't pick up the depressed button // but good enough for now const uint8_t SWITCH_PIN = 9; // switch connected to this pin const uint8_t SWITCH_ACTIVE = LOW; // digital signal when switch is pressed 'on' MD_KeySwitch S(SWITCH_PIN, SWITCH_ACTIVE); void setup() { // initialize I/O pins Serial.begin(9600); Serial.println("GnuxSwitcher"); pinMode(pushButton, INPUT_PULLUP); pinMode(LED_BUILTIN, OUTPUT); S.begin(); //S.enableDoublePress(true); //S.enableLongPress(true); /*S.enableRepeat(true); S.enableRepeatResult(true);*/ } void loop() { //BUTTONS /* int resultb = 0; resultb = PINB; delay(100); if (resultb == 0 ){ decPt = 1; Serial.print("User Pressed button: "); Serial.println(segdisp); } else{ decPt = 0; } */ // too fast, print serial when checking switch only // Serial.println(resultb,BIN); // noisy, but reads 0 when low. switch(S.read()) { case MD_KeySwitch::KS_NULL: /* Serial.println("NULL"); */ break; case MD_KeySwitch::KS_PRESS: //Serial.println("\nSINGLE PRESS"); Serial.println("Initiate the Shutdown Procedure Immediately"); digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW break; /* case MD_KeySwitch::KS_DPRESS: Serial.print("\nDOUBLE PRESS"); break;*/ //case MD_KeySwitch::KS_LONGPRESS: Serial.print("\nLONG PRESS"); //break; //this doesn't seem to work at all. - steak /* case MD_KeySwitch::KS_RPTPRESS: Serial.print("\nREPEAT PRESS"); break; */ default: Serial.print("\nUNKNOWN"); break; } }