//First Pass/*void setup(){ Serial.begin(115200);}
void loop(){ Serial.println(XC4602_read(2,3)); //SCL on 2, SDO on 3 delay(100);}
int XC4602_read(int sclpin, int sdopin){ //returns key number or 0 if no key pressed int key=0; //default to no keys pressed pinMode(sclpin,OUTPUT); digitalWrite(sclpin,HIGH); pinMode(sdopin,INPUT); delay(2); //ensure data is reset to first key // for(int i=1;i<9;i++){ for(int i=1;i<17;i++){ //16 clocks digitalWrite(sclpin,LOW); //toggle clock // delayMicroseconds(500); digitalWrite(sclpin,HIGH); if(!digitalRead(sdopin)){key=i;} //valid data found //delayMicroseconds(500); } return key;}*/
//Second Pass#define sclpin 2 #define sdopin 3void setup(){ Serial.begin(115200); pinMode(sclpin,OUTPUT); digitalWrite(sclpin,HIGH); pinMode(sdopin,INPUT);}/*void loop( ){ if (!digitalRead(sdopin)) //exits loop or other actions if no key pressed { // Serial.println("Key pressed"); //one mess at start, one at end - should take longer than DV pulse (93uS) while (!digitalRead(sdopin)); //wait for DV complete delayMicroseconds(10); //specs call for 10 uS delay for(int i=1;i<9;i++){ digitalWrite(sclpin,LOW); //toggle clock digitalWrite(sclpin,HIGH); //if(!digitalRead(sdopin)){key=i;} //valid data found } }}*/
//Third Passvoid loop( ){ if (!digitalRead(sdopin)) //exits loop or other actions if no key pressed { // Serial.println("Key pressed"); //one mess at start, one at end - should take longer than DV pulse (93uS) while (!digitalRead(sdopin)); //wait for DV complete delayMicroseconds(10); //specs call for 10 uS delay int key = 0; //default for no key // for(int i=1;i<9;i++){ for(int i=1;i< 17;i++){ //16 iterations digitalWrite(sclpin,LOW); //toggle clock digitalWrite(sclpin,HIGH); if(!digitalRead(sdopin)){key=i;} //valid data found } if (key) Serial.println(key); //the key -ignore '0' delay(3); }}