Anyways, until that gets sorted out, here is my code so far. I am not sure how to convert the binary number to individual pin outputs (my questions are located in the comments in the "pressKey" function.
#define INH 2
#define A_1 3
#define B_1 4
#define C_1 5
#define A_2 6
#define B_2 7
#define C_2 8
byte keys[34] = { //0b00A1B1C1A2B2C2
0b00100000 /* PF */ , //0
0b00010000 /* %- */ , //1
0b00110000 /* VD */ , //2
0b00001000 /* PLU */ , //3
0b00101000 /* OFF */ , //4
0b00011000 /* %+ */ , //5
0b00100100 /* C */ , //6
0b00010100 /* PLC */ , //7
0b00110100 /* PRC */ , //8
0b00001100 /* STL */ , //9
0b00101100 /* PY */ , //10
0b00011100 /* X */ , //11
0b00100010 /* 7 */ , //12
0b00010010 /* 4 */ , //13
0b00110010 /* 1 */ , //14
0b00001010 /* 00 */ , //15
0b00101010 /* 8 */ , //16
0b00011010 /* 5 */ , //17
0b00100110 /* 2 */ , //18
0b00010110 /* 0 */ , //19
0b00110110 /* 9 */ , //20
0b00001110 /* 6 */ , //21
0b00101110 /* 3 */ , //22
0b00011110 /* . */ , //23
0b00111101 /* ON */ , //24
0b00010001 /* DP1 */ , //25
0b00110001 /* DP2 */ , //26
0b00001001 /* DP4 */ , //27
0b00101001 /* TL */ , //28
0b00011001 /* DP3 */ , //29
0b00000001 /* DP5 */ , //30
0b00000110 /* DP6 */ , //31
0b00000010 /* DP7 */ , //32
};
void setup() {
pinMode( INH, INPUT ) ; // sets inhibit pin to high impedance
// declaring A B C select pins on the first chip as output here :
pinMode( A_1, OUTPUT ) ;
pinMode( B_1, OUTPUT ) ;
pinMode( C_1, OUTPUT ) ;
// declaring A B C select pins on the second chip as output here :
pinMode( A_2, OUTPUT ) ;
pinMode( B_2, OUTPUT ) ;
pinMode( C_2, OUTPUT ) ;
/*
// PF Key A1B1C1A2B2C2: 100000
// CD4051 #1
digitalWrite( A_1 , 0 ) ;
digitalWrite( B_1 , 0 ) ;
digitalWrite( C_1 , 0 ) ;
// CD4051 #2
digitalWrite( A_2 , 0 ) ;
digitalWrite( B_2 , 0 ) ;
digitalWrite( C_2 , 0 ) ;
pinMode( INH, OUTPUT ) ; // inhibit
digitalWrite( INH , LOW ) ; // enable
delay(100) ; // simulate a keypress for 100ms
pinMode( INH, INPUT ) ; // sets inhibit to high impedance
*/
}
void loop() {
pressKey(keys[0], 100); //PF for 100ms, will send "0b00100000" as keyIndex and "100" as pressTime to pressKey()
}
void pressKey(int keyIndex, int pressTime) {
//in this attempt, the key to press is PF, or 0b00100000
//how do I convert 0b00100000 to the individual pin outputs?
//so how do I make it look at the farthest-right digit and set the pin to that and so on (in this case 0)?
pinMode( INH, OUTPUT ) ; // inhibit
digitalWrite( INH , LOW ) ; // enable
delay(pressTime) ; // simulate a keypress for pressTime ms
pinMode( INH, INPUT ) ; // sets inhibit to high impedance
}