You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

143 lines
2.7 KiB

/*
* 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 <avr/io.h>
#include <avr/interrupt.h>
//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 <MD_KeySwitch.h>
// 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;
}
}