#define PIN_Y0 1
#define PIN_Y2 2
#define PIN_Y 3
#define PIN_Y3 4
#define PIN_Y1 5
#define PIN_INH 6
#define PIN_VEE 7
#define PIN_VSS 8
#define PIN_A 9
#define PIN_B 10
#define PIN_X3 11
#define PIN_X0 12
#define PIN_X 13
#define PIN_X1 14
#define PIN_X2 15
#define PIN_VDD 16
#define RON 100.0
#define ROFF 100000000000.0
#define COFF 0.000000000001
void set_x(float r0, float r1, float r2, float r3) {
resistance(PIN_X0, PIN_X, r0);
resistance(PIN_X1, PIN_X, r1);
resistance(PIN_X2, PIN_X, r2);
resistance(PIN_X3, PIN_X, r3);
}
void set_y(float r0, float r1, float r2, float r3) {
resistance(PIN_Y0, PIN_Y, r0);
resistance(PIN_Y1, PIN_Y, r1);
resistance(PIN_Y2, PIN_Y, r2);
resistance(PIN_Y3, PIN_Y, r3);
}
void set_all_off() {
set_x(ROFF, ROFF, ROFF, ROFF);
set_y(ROFF, ROFF, ROFF, ROFF);
}
void setup() {
chipName("CD4052B");
pin(PIN_Y0, "Y0");
pin(PIN_Y2, "Y2");
pin(PIN_Y, "Y");
pin(PIN_Y3, "Y3");
pin(PIN_Y1, "Y1");
pin(PIN_INH, "INH");
pin(PIN_VEE, "VEE");
pin(PIN_VSS, "VSS", GROUND);
pin(PIN_A, "A");
pin(PIN_B, "B");
pin(PIN_X3, "X3");
pin(PIN_X0, "X0");
pin(PIN_X, "X");
pin(PIN_X1, "X1");
pin(PIN_X2, "X2");
pin(PIN_VDD, "VDD", POWER);
resistance(PIN_X0, PIN_X, ROFF, NON_LINEAR);
resistance(PIN_X1, PIN_X, ROFF, NON_LINEAR);
resistance(PIN_X2, PIN_X, ROFF, NON_LINEAR);
resistance(PIN_X3, PIN_X, ROFF, NON_LINEAR);
resistance(PIN_Y0, PIN_Y, ROFF, NON_LINEAR);
resistance(PIN_Y1, PIN_Y, ROFF, NON_LINEAR);
resistance(PIN_Y2, PIN_Y, ROFF, NON_LINEAR);
resistance(PIN_Y3, PIN_Y, ROFF, NON_LINEAR);
}
void loop() {
int inh = digitalRead(PIN_INH);
int a = digitalRead(PIN_A);
int b = digitalRead(PIN_B);
int selected = 0;
if (a) {
selected = selected + 1;
}
if (b) {
selected = selected + 2;
}
if (inh) {
set_all_off();
} else if (selected == 0) {
set_x(RON, ROFF, ROFF, ROFF);
set_y(RON, ROFF, ROFF, ROFF);
} else if (selected == 1) {
set_x(ROFF, RON, ROFF, ROFF);
set_y(ROFF, RON, ROFF, ROFF);
} else if (selected == 2) {
set_x(ROFF, ROFF, RON, ROFF);
set_y(ROFF, ROFF, RON, ROFF);
} else {
set_x(ROFF, ROFF, ROFF, RON);
set_y(ROFF, ROFF, ROFF, RON);
}
}