altered scohennm's code to allow for 6 outputs
Fork of CapKey_46_v2_button by
Diff: cdg_main.cpp
- Revision:
- 1:232e3f430f69
- Parent:
- 0:8a169bac9011
- Child:
- 2:4535af993186
diff -r 8a169bac9011 -r 232e3f430f69 cdg_main.cpp --- a/cdg_main.cpp Mon Oct 20 21:02:24 2014 +0000 +++ b/cdg_main.cpp Wed Oct 29 22:13:25 2014 +0000 @@ -4,37 +4,40 @@ //Dating Game Capkey controller 07/16/2013 sc // Modified for mbet KL46Z 10/07/2014 // Four inputs and Four relays +// Changed to simulate capkeys with the KL on board buttons #define PROGNAME "DG Cap Key v1.1\r\n" #define KEYHIT "KEY1" #define SERIAL_SPEED 9600 #define HIGH 1 #define LOW 0 -#define RESET_DELAY 1500 +#define RESET_DELAY 1200 #define RELAY_ON HIGH #define RELAY_OFF LOW #define LED_ON LOW #define LED_OFF HIGH #define DEBOUNCE 50 -#define NUMREL 4 +#define NUMREL 2 // really just the number of outputs #define LCDDELAY 0.200 #define COUNTERLIMIT 300 // constants won't change. They're used here to -// set pin numbers: -//const int buttonPin = PUSH2; + -DigitalOut Relays[NUMREL] = {D10,D11,D12,D13}; // corresponds to touches 1,2,3,4 -DigitalIn capKeys[NUMREL] = {D2,D4,D6,D8}; -DigitalOut capRST[NUMREL] = {D3,D5,D7,D9}; /* -DigitalOut Relays[NUMREL] = {D10}; // corresponds to touches 1,2,3,4 -DigitalIn capKeys[NUMREL] = {D2}; -DigitalOut capRST[NUMREL] = {D3,}; +DigitalOut Relays[NUMREL] = {D10,D11,D12,D13}; // corresponds to touches 1,2,3,4 +DigitalIn capKeys[NUMREL] = {PTC3,D4,D6,D8}; +DigitalOut capRST[NUMREL] = {D3,D5,D7,D9}; */ +// make two channel both buttons for testing +DigitalOut Relays[NUMREL] = {D10,D11}; +DigitalIn capKeys[NUMREL] = {PTC3, PTC12}; // on board buttons +DigitalOut capRST[NUMREL] = {D3,D5}; +DigitalOut LEDs[NUMREL] = {LED_GREEN, LED_RED}; +/* DigitalOut RLed(LED_RED); DigitalOut GLed(LED_GREEN); - +*/ Timer millis; Serial pc(USBTX, USBRX); SLCD slcd; //define LCD display @@ -69,6 +72,7 @@ for (i=0; i<NUMREL; i++){ Relays[i].write(RELAY_OFF); capRST[i].write(HIGH); + LEDs[i].write(LED_OFF); } while (true) { @@ -78,23 +82,24 @@ LCDCounter = LCDCounter % COUNTERLIMIT; sprintf (lcdData,"%3d",LCDCounter); LCDMess(lcdData, LCDDELAY); - RLed.write(ledState); - GLed.write(ledState); + //RLed.write(ledState); + //GLed.write(ledState); //End dramatic effect // read the state of the pushbutton value: if(OKtoRead) { for (i=0; i<NUMREL;i++){ - buttonVal = capKeys[i].read(); + buttonVal = ! capKeys[i].read(); wait_ms(DEBOUNCE); - buttonVal2 = capKeys[i].read(); + buttonVal2 = ! capKeys[i].read(); buttonVal = buttonVal && buttonVal2; if (buttonVal){ LCDMess(KEYHIT, LCDDELAY); Relays[i].write(RELAY_ON); capRST[i].write(LOW); //reset the cap key - pc.printf("i=%d Relays[i] = %d\n\r", i, Relays[i]); + LEDs[i].write(LED_ON); + pc.printf("Relay = %d \n\r", i); millis.reset(); relayTimeout = RESET_DELAY; OKtoRead = false; @@ -102,14 +107,15 @@ } } }//end OKtoRead - + if (millis.read_ms() > relayTimeout) { OKtoRead = true; for (i=0; i<NUMREL; i++){ Relays[i].write(RELAY_OFF); - capRST[i].write(HIGH); - + capRST[i].write(HIGH); + LEDs[i].write(LED_OFF); } } + }// end forever while } // end main \ No newline at end of file