Xover_relays.cpp library
Source code of Xover_relays library (~/libraries/Xover_relays/Xover_relays.cpp)
/*
Xover44 realys controller by Sirio Maccolini 2018
*/
#include <Wire.h>
#include "Adafruit_MCP23017.h"
#include "dondo_MCP23017.h"
#include "Xover_relays.h"
//Board1 2 ways - channel B - baddr1 = 0 (0x20) - function filter1() - Left
//Board2 2 ways - channel B - baddr2 = 1 (0x21) - function filter1() - Right
//Board3 3 ways - channel B - baddr3 = 2 (0x22) - function filter1() - Left
//Board4 3 ways - channel B - baddr4 = 3 (0x23) - function filter1() - Right
//Board5 4 ways - channel B - baddr5 = 4 (0x24) - function filter1() - Left
//Board6 4 ways - channel B - baddr6 = 5 (0x25) - function filter1() - Right
//Board7 selector - channel A - addr1 = 0 (0x20) - function selector1() - Left+Right
//Board8 selector - channel A - addr2 = 1 (0x21) - function selector2() - Right **********now not used
//Board9 Volumes - channel A - addr3 = 2 (0x22) - function volumes1() - Left+Right
//Board10 Volumes - channel A - addr4 = 3 (0x23) - function volumes2() - Left+Right
//Board11 Volumes - channel A - addr5 = 2 (0x24) - function volumes1() - Left+Right
//Board12 Volumes - channel A - addr6 = 3 (0x25) - function volumes2() - Left+Right
uint8_t baddr1 = 0;//freq0-L
uint8_t baddr2 = 1;//freq1-L
uint8_t baddr3 = 2;//freq2-L
uint8_t baddr4 = 4;//freq0-R
uint8_t baddr5 = 5;//freq1-R
uint8_t baddr6 = 6;//freq2-R
uint8_t addr1 = 0;//selector-1
uint8_t addr2 = 1;//selector-2
uint8_t addr3 = 2;//vol-1
uint8_t addr4 = 4;//vol-2
uint8_t addr5 = 2;//vol-1
uint8_t addr6 = 4;//vol-2
//pre setup
Adafruit_MCP23017 mcp8;
Adafruit_MCP23017 mcp9;
Adafruit_MCP23017 mcp10;
Adafruit_MCP23017 mcp11;
Adafruit_MCP23017 mcp12;
Adafruit_MCP23017 mcp13;
dondo_MCP23017 mcp;
dondo_MCP23017 mcp1;
dondo_MCP23017 mcp2;
dondo_MCP23017 mcp3;
dondo_MCP23017 mcp4;
dondo_MCP23017 mcp5;
Xover_relays Xover_rel = Xover_relays();
void Xover_relays::setup(){
//------mcp23017 setup------------//
mcp.begin(baddr1);
mcp.pinMode(0, OUTPUT);
mcp.pinMode(1, OUTPUT);
mcp.pinMode(2, OUTPUT);
mcp.pinMode(3, OUTPUT);
mcp.pinMode(4, OUTPUT);
mcp.pinMode(5, OUTPUT);
mcp.pinMode(6, OUTPUT);
mcp.pinMode(7, OUTPUT);
mcp.pinMode(8, OUTPUT);
mcp.pinMode(9, OUTPUT);
mcp.pinMode(10, OUTPUT);
mcp.pinMode(11, OUTPUT);
mcp.pinMode(12, OUTPUT);
mcp.pinMode(13, OUTPUT);
mcp.pinMode(14, OUTPUT);
mcp.pinMode(15, OUTPUT);
mcp1.begin(baddr2);
mcp1.pinMode(0, OUTPUT);
mcp1.pinMode(1, OUTPUT);
mcp1.pinMode(2, OUTPUT);
mcp1.pinMode(3, OUTPUT);//non collegato
mcp1.pinMode(4, OUTPUT);
mcp1.pinMode(5, OUTPUT);
mcp1.pinMode(6, OUTPUT);
mcp1.pinMode(7, OUTPUT);
mcp1.pinMode(8, OUTPUT);
mcp1.pinMode(9, OUTPUT);
mcp1.pinMode(10, OUTPUT);
mcp1.pinMode(11, OUTPUT);//non collegato
mcp1.pinMode(12, OUTPUT);
mcp1.pinMode(13, OUTPUT);
mcp1.pinMode(14, OUTPUT);
mcp1.pinMode(15, OUTPUT);
mcp2.begin(baddr3);
mcp2.pinMode(0, OUTPUT);
mcp2.pinMode(1, OUTPUT);
mcp2.pinMode(2, OUTPUT);
mcp2.pinMode(3, OUTPUT);//non collegato
mcp2.pinMode(4, OUTPUT);//non collegato
mcp2.pinMode(5, OUTPUT);
mcp2.pinMode(6, OUTPUT);
mcp2.pinMode(7, OUTPUT);
mcp2.pinMode(8, OUTPUT);
mcp2.pinMode(9, OUTPUT);
mcp2.pinMode(10, OUTPUT);
mcp2.pinMode(11, OUTPUT);//non collegato
mcp2.pinMode(12, OUTPUT);//non collegato
mcp2.pinMode(13, OUTPUT);
mcp2.pinMode(14, OUTPUT);
mcp2.pinMode(15, OUTPUT);
mcp3.begin(baddr4);
mcp3.pinMode(0, OUTPUT);
mcp3.pinMode(1, OUTPUT);
mcp3.pinMode(2, OUTPUT);
mcp3.pinMode(3, OUTPUT);
mcp3.pinMode(4, OUTPUT);
mcp3.pinMode(5, OUTPUT);
mcp3.pinMode(6, OUTPUT);
mcp3.pinMode(7, OUTPUT);
mcp3.pinMode(8, OUTPUT);
mcp3.pinMode(9, OUTPUT);
mcp3.pinMode(10, OUTPUT);
mcp3.pinMode(11, OUTPUT);
mcp3.pinMode(12, OUTPUT);
mcp3.pinMode(13, OUTPUT);
mcp3.pinMode(14, OUTPUT);
mcp3.pinMode(15, OUTPUT);
mcp4.begin(baddr5);
mcp4.pinMode(0, OUTPUT);
mcp4.pinMode(1, OUTPUT);
mcp4.pinMode(2, OUTPUT);
mcp4.pinMode(3, OUTPUT);
mcp4.pinMode(4, OUTPUT);
mcp4.pinMode(5, OUTPUT);
mcp4.pinMode(6, OUTPUT);
mcp4.pinMode(7, OUTPUT);
mcp4.pinMode(8, OUTPUT);
mcp4.pinMode(9, OUTPUT);
mcp4.pinMode(10, OUTPUT);
mcp4.pinMode(11, OUTPUT);
mcp4.pinMode(12, OUTPUT);
mcp4.pinMode(13, OUTPUT);
mcp4.pinMode(14, OUTPUT);
mcp4.pinMode(15, OUTPUT);
mcp5.begin(baddr6);
mcp5.pinMode(0, OUTPUT);
mcp5.pinMode(1, OUTPUT);
mcp5.pinMode(2, OUTPUT);
mcp5.pinMode(3, OUTPUT);
mcp5.pinMode(4, OUTPUT);
mcp5.pinMode(5, OUTPUT);
mcp5.pinMode(6, OUTPUT);
mcp5.pinMode(7, OUTPUT);
mcp5.pinMode(8, OUTPUT);
mcp5.pinMode(9, OUTPUT);
mcp5.pinMode(10, OUTPUT);
mcp5.pinMode(11, OUTPUT);
mcp5.pinMode(12, OUTPUT);
mcp5.pinMode(13, OUTPUT);
mcp5.pinMode(14, OUTPUT);
mcp5.pinMode(15, OUTPUT);
mcp8.begin(addr1); //sel1
mcp8.pinMode(0, OUTPUT);
mcp8.pinMode(1, OUTPUT);
mcp8.pinMode(2, OUTPUT);
mcp8.pinMode(3, OUTPUT);
mcp8.pinMode(4, OUTPUT);
mcp8.pinMode(5, OUTPUT);
mcp8.pinMode(6, OUTPUT);
mcp8.pinMode(7, OUTPUT);
mcp8.pinMode(8, OUTPUT);
mcp8.pinMode(9, OUTPUT);
mcp8.pinMode(10, OUTPUT);
mcp8.pinMode(11, OUTPUT);
mcp8.pinMode(12, OUTPUT);
mcp8.pinMode(13, OUTPUT);
mcp8.pinMode(14, OUTPUT);
mcp8.pinMode(15, OUTPUT);
mcp9.begin(addr2); //sel2
mcp9.pinMode(0, OUTPUT);
mcp9.pinMode(1, OUTPUT);
mcp9.pinMode(2, OUTPUT);
mcp9.pinMode(3, OUTPUT);
mcp9.pinMode(4, OUTPUT);
mcp9.pinMode(5, OUTPUT);
mcp9.pinMode(6, OUTPUT);
mcp9.pinMode(7, OUTPUT);
mcp9.pinMode(8, OUTPUT);
mcp9.pinMode(9, OUTPUT);
mcp9.pinMode(10, OUTPUT);
mcp9.pinMode(11, OUTPUT);
mcp9.pinMode(12, OUTPUT);
mcp9.pinMode(13, OUTPUT);
mcp9.pinMode(14, OUTPUT);
mcp9.pinMode(15, OUTPUT);
mcp10.begin(addr3); //vol1
mcp10.pinMode(0, OUTPUT);
mcp10.pinMode(1, OUTPUT);
mcp10.pinMode(2, OUTPUT);
mcp10.pinMode(3, OUTPUT);
mcp10.pinMode(4, OUTPUT);
mcp10.pinMode(5, OUTPUT);
mcp10.pinMode(6, OUTPUT);
mcp10.pinMode(7, OUTPUT);
mcp10.pinMode(8, OUTPUT);
mcp10.pinMode(9, OUTPUT);
mcp10.pinMode(10, OUTPUT);
mcp10.pinMode(11, OUTPUT);
mcp10.pinMode(12, OUTPUT);
mcp10.pinMode(13, OUTPUT);
mcp10.pinMode(14, OUTPUT);
mcp10.pinMode(15, OUTPUT);
mcp11.begin(addr4); //vol2
mcp11.pinMode(0, OUTPUT);
mcp11.pinMode(1, OUTPUT);
mcp11.pinMode(2, OUTPUT);
mcp11.pinMode(3, OUTPUT);
mcp11.pinMode(4, OUTPUT);
mcp11.pinMode(5, OUTPUT);
mcp11.pinMode(6, OUTPUT);
mcp11.pinMode(7, OUTPUT);
mcp11.pinMode(8, OUTPUT);
mcp11.pinMode(9, OUTPUT);
mcp11.pinMode(10, OUTPUT);
mcp11.pinMode(11, OUTPUT);
mcp11.pinMode(12, OUTPUT);
mcp11.pinMode(13, OUTPUT);
mcp11.pinMode(14, OUTPUT);
mcp11.pinMode(15, OUTPUT);
mcp12.begin(addr5); //vol3
mcp12.pinMode(0, OUTPUT);
mcp12.pinMode(1, OUTPUT);
mcp12.pinMode(2, OUTPUT);
mcp12.pinMode(3, OUTPUT);
mcp12.pinMode(4, OUTPUT);
mcp12.pinMode(5, OUTPUT);
mcp12.pinMode(6, OUTPUT);
mcp12.pinMode(7, OUTPUT);
mcp12.pinMode(8, OUTPUT);
mcp12.pinMode(9, OUTPUT);
mcp12.pinMode(10, OUTPUT);
mcp12.pinMode(11, OUTPUT);
mcp12.pinMode(12, OUTPUT);
mcp12.pinMode(13, OUTPUT);
mcp12.pinMode(14, OUTPUT);
mcp12.pinMode(15, OUTPUT);
mcp13.begin(addr6); //vol4
mcp13.pinMode(0, OUTPUT);
mcp13.pinMode(1, OUTPUT);
mcp13.pinMode(2, OUTPUT);
mcp13.pinMode(3, OUTPUT);
mcp13.pinMode(4, OUTPUT);
mcp13.pinMode(5, OUTPUT);
mcp13.pinMode(6, OUTPUT);
mcp13.pinMode(7, OUTPUT);
mcp13.pinMode(8, OUTPUT);
mcp13.pinMode(9, OUTPUT);
mcp13.pinMode(10, OUTPUT);
mcp13.pinMode(11, OUTPUT);
mcp13.pinMode(12, OUTPUT);
mcp13.pinMode(13, OUTPUT);
mcp13.pinMode(14, OUTPUT);
mcp13.pinMode(15, OUTPUT);
}
void Xover_relays::filter1(int pos, int freq, int reso, int order, int delayr){
_pos=pos;
_freq=freq;
_reso=reso;
_order=order;
_delayr=delayr;
if(pos==14 or pos==20 or pos ==26){
if((freq % 2) > 0) { mcp.digitalWrite(3, HIGH); mcp.digitalWrite(11, LOW);} else { mcp.digitalWrite(3, LOW); mcp.digitalWrite(11, HIGH);}
if((freq % 4) > 1) { mcp.digitalWrite(4, HIGH); mcp.digitalWrite(12, LOW);} else { mcp.digitalWrite(4, LOW); mcp.digitalWrite(12, HIGH);}
if((freq % 8) > 3) { mcp.digitalWrite(5, HIGH); mcp.digitalWrite(13, LOW);} else { mcp.digitalWrite(5, LOW); mcp.digitalWrite(13, HIGH);}
if((freq % 16) > 7) { mcp.digitalWrite(6, HIGH); mcp.digitalWrite(14, LOW);} else { mcp.digitalWrite(6, LOW); mcp.digitalWrite(14, HIGH);}
if((freq % 32) > 15) { mcp.digitalWrite(7, HIGH); mcp.digitalWrite(15, LOW);} else { mcp.digitalWrite(7, LOW); mcp.digitalWrite(15, HIGH);}
if((reso % 2) > 0) { mcp.digitalWrite(1, HIGH); mcp.digitalWrite(9, LOW);} else { mcp.digitalWrite(1, LOW); mcp.digitalWrite(9, HIGH);}
if((reso % 4) > 1) { mcp.digitalWrite(2, HIGH); mcp.digitalWrite(10, LOW);} else { mcp.digitalWrite(2, LOW); mcp.digitalWrite(10, HIGH);}
if((order % 2) > 0) { mcp.digitalWrite(0, HIGH); mcp.digitalWrite(8, LOW);} else { mcp.digitalWrite(0, LOW); mcp.digitalWrite(8, HIGH);}
delay(delayr);
mcp.digitalWrite(3, LOW);
mcp.digitalWrite(4, LOW);
mcp.digitalWrite(5, LOW);
mcp.digitalWrite(6, LOW);
mcp.digitalWrite(7, LOW);
mcp.digitalWrite(2, LOW);
mcp.digitalWrite(1, LOW);
mcp.digitalWrite(0, LOW);
mcp.digitalWrite(11, LOW);
mcp.digitalWrite(12, LOW);
mcp.digitalWrite(13, LOW);
mcp.digitalWrite(14, LOW);
mcp.digitalWrite(15, LOW);
mcp.digitalWrite(9, LOW);
mcp.digitalWrite(10, LOW);
mcp.digitalWrite(8, LOW);
}
if(pos==15 or pos==21 or pos ==27){
if((freq % 2) > 0) { mcp1.digitalWrite(4, HIGH); mcp1.digitalWrite(12, LOW);} else { mcp1.digitalWrite(4, LOW); mcp1.digitalWrite(12, HIGH);}
if((freq % 4) > 1) { mcp1.digitalWrite(5, HIGH); mcp1.digitalWrite(13, LOW);} else { mcp1.digitalWrite(5, LOW); mcp1.digitalWrite(13, HIGH);}
if((freq % 8) > 3) { mcp1.digitalWrite(6, HIGH); mcp1.digitalWrite(14, LOW);} else { mcp1.digitalWrite(6, LOW); mcp1.digitalWrite(14, HIGH);}
if((freq % 16) > 7) { mcp1.digitalWrite(7, HIGH); mcp1.digitalWrite(15, LOW);} else { mcp1.digitalWrite(7, LOW); mcp1.digitalWrite(15, HIGH);}
//if((freq % 32) > 15) { mcp1.digitalWrite(7, HIGH); mcp1.digitalWrite(15, LOW);} else { mcp1.digitalWrite(7, LOW); mcp1.digitalWrite(15, HIGH);} //non collegato
if((reso % 2) > 0) { mcp1.digitalWrite(1, HIGH); mcp1.digitalWrite(9, LOW);} else { mcp1.digitalWrite(1, LOW); mcp1.digitalWrite(9, HIGH);}
if((reso % 4) > 1) { mcp1.digitalWrite(2, HIGH); mcp1.digitalWrite(10, LOW);} else { mcp1.digitalWrite(2, LOW); mcp1.digitalWrite(10, HIGH);}
if((order % 2) > 0) { mcp1.digitalWrite(0, HIGH); mcp1.digitalWrite(8, LOW);} else { mcp1.digitalWrite(0, LOW); mcp1.digitalWrite(8, HIGH);}
delay(delayr);
//mcp1.digitalWrite(3, LOW); //non collegato
mcp1.digitalWrite(4, LOW);
mcp1.digitalWrite(5, LOW);
mcp1.digitalWrite(6, LOW);
mcp1.digitalWrite(7, LOW);
mcp1.digitalWrite(2, LOW);
mcp1.digitalWrite(1, LOW);
mcp1.digitalWrite(0, LOW);
//mcp1.digitalWrite(11, LOW); //non collegato
mcp1.digitalWrite(12, LOW);
mcp1.digitalWrite(13, LOW);
mcp1.digitalWrite(14, LOW);
mcp1.digitalWrite(15, LOW);
mcp1.digitalWrite(9, LOW);
mcp1.digitalWrite(10, LOW);
mcp1.digitalWrite(8, LOW);
}
if(pos==16 or pos==22 or pos==28){
if((freq % 2) > 0) { mcp2.digitalWrite(5, HIGH); mcp2.digitalWrite(13, LOW);} else { mcp2.digitalWrite(5, LOW); mcp2.digitalWrite(13, HIGH);}
if((freq % 4) > 1) { mcp2.digitalWrite(6, HIGH); mcp2.digitalWrite(14, LOW);} else { mcp2.digitalWrite(6, LOW); mcp2.digitalWrite(14, HIGH);}
if((freq % 8) > 3) { mcp2.digitalWrite(7, HIGH); mcp2.digitalWrite(15, LOW);} else { mcp2.digitalWrite(7, LOW); mcp2.digitalWrite(15, HIGH);}
//if((freq % 16) > 7) { mcp2.digitalWrite(6, HIGH); mcp2.digitalWrite(14, LOW);} else { mcp2.digitalWrite(6, LOW); mcp2.digitalWrite(14, HIGH);}
//if((freq % 32) > 15) { mcp2.digitalWrite(7, HIGH); mcp2.digitalWrite(15, LOW);} else { mcp2.digitalWrite(7, LOW); mcp2.digitalWrite(15, HIGH);}
if((reso % 2) > 0) { mcp2.digitalWrite(1, HIGH); mcp2.digitalWrite(9, LOW);} else { mcp2.digitalWrite(1, LOW); mcp2.digitalWrite(9, HIGH);}
if((reso % 4) > 1) { mcp2.digitalWrite(2, HIGH); mcp2.digitalWrite(10, LOW);} else { mcp2.digitalWrite(2, LOW); mcp2.digitalWrite(10, HIGH);}
if((order % 2) > 0) { mcp2.digitalWrite(0, HIGH); mcp2.digitalWrite(8, LOW);} else { mcp2.digitalWrite(0, LOW); mcp2.digitalWrite(8, HIGH);}
delay(delayr);
//mcp2.digitalWrite(3, LOW);
//mcp2.digitalWrite(4, LOW);
mcp2.digitalWrite(5, LOW);
mcp2.digitalWrite(6, LOW);
mcp2.digitalWrite(7, LOW);
mcp2.digitalWrite(2, LOW);
mcp2.digitalWrite(1, LOW);
mcp2.digitalWrite(0, LOW);
//mcp2.digitalWrite(11, LOW);
//mcp2.digitalWrite(12, LOW);
mcp2.digitalWrite(13, LOW);
mcp2.digitalWrite(14, LOW);
mcp2.digitalWrite(15, LOW);
mcp2.digitalWrite(9, LOW);
mcp2.digitalWrite(10, LOW);
mcp2.digitalWrite(8, LOW);
}
if(pos==17 or pos==23 or pos ==29){
if((freq % 2) > 0) { mcp3.digitalWrite(3, HIGH); mcp3.digitalWrite(11, LOW);} else { mcp3.digitalWrite(3, LOW); mcp3.digitalWrite(11, HIGH);}
if((freq % 4) > 1) { mcp3.digitalWrite(4, HIGH); mcp3.digitalWrite(12, LOW);} else { mcp3.digitalWrite(4, LOW); mcp3.digitalWrite(12, HIGH);}
if((freq % 8) > 3) { mcp3.digitalWrite(5, HIGH); mcp3.digitalWrite(13, LOW);} else { mcp3.digitalWrite(5, LOW); mcp3.digitalWrite(13, HIGH);}
if((freq % 16) > 7) { mcp3.digitalWrite(6, HIGH); mcp3.digitalWrite(14, LOW);} else { mcp3.digitalWrite(6, LOW); mcp3.digitalWrite(14, HIGH);}
if((freq % 32) > 15) { mcp3.digitalWrite(7, HIGH); mcp3.digitalWrite(15, LOW);} else { mcp3.digitalWrite(7, LOW); mcp3.digitalWrite(15, HIGH);}
if((reso % 2) > 0) { mcp3.digitalWrite(1, HIGH); mcp3.digitalWrite(9, LOW);} else { mcp3.digitalWrite(1, LOW); mcp3.digitalWrite(9, HIGH);}
if((reso % 4) > 1) { mcp3.digitalWrite(2, HIGH); mcp3.digitalWrite(10, LOW);} else { mcp3.digitalWrite(2, LOW); mcp3.digitalWrite(10, HIGH);}
if((order % 2) > 0) { mcp3.digitalWrite(0, HIGH); mcp3.digitalWrite(8, LOW);} else { mcp3.digitalWrite(0, LOW); mcp3.digitalWrite(8, HIGH);}
delay(delayr);
mcp3.digitalWrite(3, LOW);
mcp3.digitalWrite(4, LOW);
mcp3.digitalWrite(5, LOW);
mcp3.digitalWrite(6, LOW);
mcp3.digitalWrite(7, LOW);
mcp3.digitalWrite(2, LOW);
mcp3.digitalWrite(1, LOW);
mcp3.digitalWrite(0, LOW);
mcp3.digitalWrite(11, LOW);
mcp3.digitalWrite(12, LOW);
mcp3.digitalWrite(13, LOW);
mcp3.digitalWrite(14, LOW);
mcp3.digitalWrite(15, LOW);
mcp3.digitalWrite(9, LOW);
mcp3.digitalWrite(10, LOW);
mcp3.digitalWrite(8, LOW);
}
if(pos==18 or pos==24 or pos ==30){
if((freq % 2) > 0) { mcp4.digitalWrite(4, HIGH); mcp4.digitalWrite(12, LOW);} else { mcp4.digitalWrite(4, LOW); mcp4.digitalWrite(12, HIGH);}
if((freq % 4) > 1) { mcp4.digitalWrite(5, HIGH); mcp4.digitalWrite(13, LOW);} else { mcp4.digitalWrite(5, LOW); mcp4.digitalWrite(13, HIGH);}
if((freq % 8) > 3) { mcp4.digitalWrite(6, HIGH); mcp4.digitalWrite(14, LOW);} else { mcp4.digitalWrite(6, LOW); mcp4.digitalWrite(14, HIGH);}
if((freq % 16) > 7) { mcp4.digitalWrite(7, HIGH); mcp4.digitalWrite(15, LOW);} else { mcp4.digitalWrite(7, LOW); mcp4.digitalWrite(15, HIGH);}
//if((freq % 32) > 15) { mcp4.digitalWrite(7, HIGH); mcp4.digitalWrite(15, LOW);} else { mcp4.digitalWrite(7, LOW); mcp4.digitalWrite(15, HIGH);}
if((reso % 2) > 0) { mcp4.digitalWrite(1, HIGH); mcp4.digitalWrite(9, LOW);} else { mcp4.digitalWrite(1, LOW); mcp4.digitalWrite(9, HIGH);}
if((reso % 4) > 1) { mcp4.digitalWrite(2, HIGH); mcp4.digitalWrite(10, LOW);} else { mcp4.digitalWrite(2, LOW); mcp4.digitalWrite(10, HIGH);}
if((order % 2) > 0) { mcp4.digitalWrite(0, HIGH); mcp4.digitalWrite(8, LOW);} else { mcp4.digitalWrite(0, LOW); mcp4.digitalWrite(8, HIGH);}
delay(delayr);
//mcp4.digitalWrite(3, LOW);
mcp4.digitalWrite(4, LOW);
mcp4.digitalWrite(5, LOW);
mcp4.digitalWrite(6, LOW);
mcp4.digitalWrite(7, LOW);
mcp4.digitalWrite(2, LOW);
mcp4.digitalWrite(1, LOW);
mcp4.digitalWrite(0, LOW);
//mcp4.digitalWrite(11, LOW);
mcp4.digitalWrite(12, LOW);
mcp4.digitalWrite(13, LOW);
mcp4.digitalWrite(14, LOW);
mcp4.digitalWrite(15, LOW);
mcp4.digitalWrite(9, LOW);
mcp4.digitalWrite(10, LOW);
mcp4.digitalWrite(8, LOW);
}
if(pos==19 or pos==25 or pos ==31){
if((freq % 2) > 0) { mcp5.digitalWrite(5, HIGH); mcp5.digitalWrite(13, LOW);} else { mcp5.digitalWrite(5, LOW); mcp5.digitalWrite(13, HIGH);}
if((freq % 4) > 1) { mcp5.digitalWrite(6, HIGH); mcp5.digitalWrite(14, LOW);} else { mcp5.digitalWrite(6, LOW); mcp5.digitalWrite(14, HIGH);}
if((freq % 8) > 3) { mcp5.digitalWrite(7, HIGH); mcp5.digitalWrite(15, LOW);} else { mcp5.digitalWrite(7, LOW); mcp5.digitalWrite(15, HIGH);}
//if((freq % 16) > 7) { mcp5.digitalWrite(6, HIGH); mcp5.digitalWrite(14, LOW);} else { mcp5.digitalWrite(6, LOW); mcp5.digitalWrite(14, HIGH);}
//if((freq % 32) > 15) { mcp5.digitalWrite(7, HIGH); mcp5.digitalWrite(15, LOW);} else { mcp5.digitalWrite(7, LOW); mcp5.digitalWrite(15, HIGH);}
if((reso % 2) > 0) { mcp5.digitalWrite(1, HIGH); mcp5.digitalWrite(9, LOW);} else { mcp5.digitalWrite(1, LOW); mcp5.digitalWrite(9, HIGH);}
if((reso % 4) > 1) { mcp5.digitalWrite(2, HIGH); mcp5.digitalWrite(10, LOW);} else { mcp5.digitalWrite(2, LOW); mcp5.digitalWrite(10, HIGH);}
if((order % 2) > 0) { mcp5.digitalWrite(0, HIGH); mcp5.digitalWrite(8, LOW);} else { mcp5.digitalWrite(0, LOW); mcp5.digitalWrite(8, HIGH);}
delay(delayr);
//mcp5.digitalWrite(3, LOW);
//mcp5.digitalWrite(4, LOW);
mcp5.digitalWrite(5, LOW);
mcp5.digitalWrite(6, LOW);
mcp5.digitalWrite(7, LOW);
mcp5.digitalWrite(2, LOW);
mcp5.digitalWrite(1, LOW);
mcp5.digitalWrite(0, LOW);
//mcp5.digitalWrite(11, LOW);
//mcp5.digitalWrite(12, LOW);
mcp5.digitalWrite(13, LOW);
mcp5.digitalWrite(14, LOW);
mcp5.digitalWrite(15, LOW);
mcp5.digitalWrite(9, LOW);
mcp5.digitalWrite(10, LOW);
mcp5.digitalWrite(8, LOW);
}
}
void Xover_relays::volCtrl0(int pos, int vol, int ways, int delayr){
_pos=pos;
_vol=vol;
_ways=ways;
_delayr=delayr;
if(pos==6 or pos==10){
if((vol % 2) > 0) { mcp10.digitalWrite(0, HIGH); mcp10.digitalWrite(8, LOW);} else { mcp10.digitalWrite(0, LOW); mcp10.digitalWrite(8, HIGH);}
if((vol % 4) > 1) { mcp10.digitalWrite(1, HIGH); mcp10.digitalWrite(9, LOW);} else { mcp10.digitalWrite(1, LOW); mcp10.digitalWrite(9, HIGH);}
if((vol % 8) > 3) { mcp10.digitalWrite(2, HIGH); mcp10.digitalWrite(10, LOW);} else { mcp10.digitalWrite(2, LOW); mcp10.digitalWrite(10, HIGH);}
if((vol % 16) > 7) { mcp10.digitalWrite(3, HIGH); mcp10.digitalWrite(11, LOW);} else { mcp10.digitalWrite(3, LOW); mcp10.digitalWrite(11, HIGH);}
delay(delayr);
mcp10.digitalWrite(0, LOW);
mcp10.digitalWrite(1, LOW);
mcp10.digitalWrite(2, LOW);
mcp10.digitalWrite(3, LOW);
mcp10.digitalWrite(8, LOW);
mcp10.digitalWrite(9, LOW);
mcp10.digitalWrite(10, LOW);
mcp10.digitalWrite(11, LOW);
}
if(pos==7 or pos==11){
if((vol % 2) > 0) { mcp10.digitalWrite(4, HIGH); mcp10.digitalWrite(12, LOW);} else { mcp10.digitalWrite(4, LOW); mcp10.digitalWrite(12, HIGH);}
if((vol % 4) > 1) { mcp10.digitalWrite(5, HIGH); mcp10.digitalWrite(13, LOW);} else { mcp10.digitalWrite(5, LOW); mcp10.digitalWrite(13, HIGH);}
if((vol % 8) > 3) { mcp10.digitalWrite(6, HIGH); mcp10.digitalWrite(14, LOW);} else { mcp10.digitalWrite(6, LOW); mcp10.digitalWrite(14, HIGH);}
if((vol % 16) > 7) { mcp10.digitalWrite(7, HIGH); mcp10.digitalWrite(15, LOW);} else { mcp10.digitalWrite(7, LOW); mcp10.digitalWrite(15, HIGH);}
delay(delayr);
mcp10.digitalWrite(4, LOW);
mcp10.digitalWrite(5, LOW);
mcp10.digitalWrite(6, LOW);
mcp10.digitalWrite(7, LOW);
mcp10.digitalWrite(12, LOW);
mcp10.digitalWrite(13, LOW);
mcp10.digitalWrite(14, LOW);
mcp10.digitalWrite(15, LOW);
}
if(pos==8 or pos==12){
if((vol % 2) > 0) { mcp11.digitalWrite(0, HIGH); mcp11.digitalWrite(8, LOW);} else { mcp11.digitalWrite(0, LOW); mcp11.digitalWrite(8, HIGH);}
if((vol % 4) > 1) { mcp11.digitalWrite(1, HIGH); mcp11.digitalWrite(9, LOW);} else { mcp11.digitalWrite(1, LOW); mcp11.digitalWrite(9, HIGH);}
if((vol % 8) > 3) { mcp11.digitalWrite(2, HIGH); mcp11.digitalWrite(10, LOW);} else { mcp11.digitalWrite(2, LOW); mcp11.digitalWrite(10, HIGH);}
if((vol % 16) > 7) { mcp11.digitalWrite(3, HIGH); mcp11.digitalWrite(11, LOW);} else { mcp11.digitalWrite(3, LOW); mcp11.digitalWrite(11, HIGH);}
delay(delayr);
mcp11.digitalWrite(0, LOW);
mcp11.digitalWrite(1, LOW);
mcp11.digitalWrite(2, LOW);
mcp11.digitalWrite(3, LOW);
mcp11.digitalWrite(8, LOW);
mcp11.digitalWrite(9, LOW);
mcp11.digitalWrite(10, LOW);
mcp11.digitalWrite(11, LOW);
}
if(pos==9 or pos==13){
if((vol % 2) > 0) { mcp11.digitalWrite(4, HIGH); mcp11.digitalWrite(12, LOW);} else { mcp11.digitalWrite(4, LOW); mcp11.digitalWrite(12, HIGH);}
if((vol % 4) > 1) { mcp11.digitalWrite(5, HIGH); mcp11.digitalWrite(13, LOW);} else { mcp11.digitalWrite(5, LOW); mcp11.digitalWrite(13, HIGH);}
if((vol % 8) > 3) { mcp11.digitalWrite(6, HIGH); mcp11.digitalWrite(14, LOW);} else { mcp11.digitalWrite(6, LOW); mcp11.digitalWrite(14, HIGH);}
if((vol % 16) > 7) { mcp11.digitalWrite(7, HIGH); mcp11.digitalWrite(15, LOW);} else { mcp11.digitalWrite(7, LOW); mcp11.digitalWrite(15, HIGH);}
delay(delayr);
mcp11.digitalWrite(4, LOW);
mcp11.digitalWrite(5, LOW);
mcp11.digitalWrite(6, LOW);
mcp11.digitalWrite(7, LOW);
mcp11.digitalWrite(12, LOW);
mcp11.digitalWrite(13, LOW);
mcp11.digitalWrite(14, LOW);
mcp11.digitalWrite(15, LOW);
}
}
void Xover_relays::filter0(int pos, int freq, int reso, int order, int delayr){
_pos=pos;
_freq=freq;
_reso=reso;
_order=order;
_delayr=delayr;
if(pos==14 or pos==20 or pos ==26 or pos==17 or pos==23 or pos ==29){
if((freq % 2) > 0) { mcp.digitalWrite(3, HIGH); mcp.digitalWrite(11, LOW);} else { mcp.digitalWrite(3, LOW); mcp.digitalWrite(11, HIGH);}
if((freq % 4) > 1) { mcp.digitalWrite(4, HIGH); mcp.digitalWrite(12, LOW);} else { mcp.digitalWrite(4, LOW); mcp.digitalWrite(12, HIGH);}
if((freq % 8) > 3) { mcp.digitalWrite(5, HIGH); mcp.digitalWrite(13, LOW);} else { mcp.digitalWrite(5, LOW); mcp.digitalWrite(13, HIGH);}
if((freq % 16) > 7) { mcp.digitalWrite(6, HIGH); mcp.digitalWrite(14, LOW);} else { mcp.digitalWrite(6, LOW); mcp.digitalWrite(14, HIGH);}
if((freq % 32) > 15) { mcp.digitalWrite(7, HIGH); mcp.digitalWrite(15, LOW);} else { mcp.digitalWrite(7, LOW); mcp.digitalWrite(15, HIGH);}
if((reso % 2) > 0) { mcp.digitalWrite(1, HIGH); mcp.digitalWrite(9, LOW);} else { mcp.digitalWrite(1, LOW); mcp.digitalWrite(9, HIGH);}
if((reso % 4) > 1) { mcp.digitalWrite(2, HIGH); mcp.digitalWrite(10, LOW);} else { mcp.digitalWrite(2, LOW); mcp.digitalWrite(10, HIGH);}
if((order % 2) > 0) { mcp.digitalWrite(0, HIGH); mcp.digitalWrite(8, LOW);} else { mcp.digitalWrite(0, LOW); mcp.digitalWrite(8, HIGH);}
delay(delayr);
mcp.digitalWrite(3, LOW);
mcp.digitalWrite(4, LOW);
mcp.digitalWrite(5, LOW);
mcp.digitalWrite(6, LOW);
mcp.digitalWrite(7, LOW);
mcp.digitalWrite(2, LOW);
mcp.digitalWrite(1, LOW);
mcp.digitalWrite(0, LOW);
mcp.digitalWrite(11, LOW);
mcp.digitalWrite(12, LOW);
mcp.digitalWrite(13, LOW);
mcp.digitalWrite(14, LOW);
mcp.digitalWrite(15, LOW);
mcp.digitalWrite(9, LOW);
mcp.digitalWrite(10, LOW);
mcp.digitalWrite(8, LOW);
if((freq % 2) > 0) { mcp3.digitalWrite(3, HIGH); mcp3.digitalWrite(11, LOW);} else { mcp3.digitalWrite(3, LOW); mcp3.digitalWrite(11, HIGH);}
if((freq % 4) > 1) { mcp3.digitalWrite(4, HIGH); mcp3.digitalWrite(12, LOW);} else { mcp3.digitalWrite(4, LOW); mcp3.digitalWrite(12, HIGH);}
if((freq % 8) > 3) { mcp3.digitalWrite(5, HIGH); mcp3.digitalWrite(13, LOW);} else { mcp3.digitalWrite(5, LOW); mcp3.digitalWrite(13, HIGH);}
if((freq % 16) > 7) { mcp3.digitalWrite(6, HIGH); mcp3.digitalWrite(14, LOW);} else { mcp3.digitalWrite(6, LOW); mcp3.digitalWrite(14, HIGH);}
if((freq % 32) > 15) { mcp3.digitalWrite(7, HIGH); mcp3.digitalWrite(15, LOW);} else { mcp3.digitalWrite(7, LOW); mcp3.digitalWrite(15, HIGH);}
if((reso % 2) > 0) { mcp3.digitalWrite(1, HIGH); mcp3.digitalWrite(9, LOW);} else { mcp3.digitalWrite(1, LOW); mcp3.digitalWrite(9, HIGH);}
if((reso % 4) > 1) { mcp3.digitalWrite(2, HIGH); mcp3.digitalWrite(10, LOW);} else { mcp3.digitalWrite(2, LOW); mcp3.digitalWrite(10, HIGH);}
if((order % 2) > 0) { mcp3.digitalWrite(0, HIGH); mcp3.digitalWrite(8, LOW);} else { mcp3.digitalWrite(0, LOW); mcp3.digitalWrite(8, HIGH);}
delay(delayr);
mcp3.digitalWrite(3, LOW);
mcp3.digitalWrite(4, LOW);
mcp3.digitalWrite(5, LOW);
mcp3.digitalWrite(6, LOW);
mcp3.digitalWrite(7, LOW);
mcp3.digitalWrite(2, LOW);
mcp3.digitalWrite(1, LOW);
mcp3.digitalWrite(0, LOW);
mcp3.digitalWrite(11, LOW);
mcp3.digitalWrite(12, LOW);
mcp3.digitalWrite(13, LOW);
mcp3.digitalWrite(14, LOW);
mcp3.digitalWrite(15, LOW);
mcp3.digitalWrite(9, LOW);
mcp3.digitalWrite(10, LOW);
mcp3.digitalWrite(8, LOW);
}
if(pos==15 or pos==21 or pos ==27 or pos==18 or pos==24 or pos ==30){
if((freq % 2) > 0) { mcp1.digitalWrite(4, HIGH); mcp1.digitalWrite(12, LOW);} else { mcp1.digitalWrite(4, LOW); mcp1.digitalWrite(12, HIGH);}
if((freq % 4) > 1) { mcp1.digitalWrite(5, HIGH); mcp1.digitalWrite(13, LOW);} else { mcp1.digitalWrite(5, LOW); mcp1.digitalWrite(13, HIGH);}
if((freq % 8) > 3) { mcp1.digitalWrite(6, HIGH); mcp1.digitalWrite(14, LOW);} else { mcp1.digitalWrite(6, LOW); mcp1.digitalWrite(14, HIGH);}
if((freq % 16) > 7) { mcp1.digitalWrite(7, HIGH); mcp1.digitalWrite(15, LOW);} else { mcp1.digitalWrite(7, LOW); mcp1.digitalWrite(15, HIGH);}
//if((freq % 32) > 15) { mcp1.digitalWrite(7, HIGH); mcp1.digitalWrite(15, LOW);} else { mcp1.digitalWrite(7, LOW); mcp1.digitalWrite(15, HIGH);} //non collegato
if((reso % 2) > 0) { mcp1.digitalWrite(1, HIGH); mcp1.digitalWrite(9, LOW);} else { mcp1.digitalWrite(1, LOW); mcp1.digitalWrite(9, HIGH);}
if((reso % 4) > 1) { mcp1.digitalWrite(2, HIGH); mcp1.digitalWrite(10, LOW);} else { mcp1.digitalWrite(2, LOW); mcp1.digitalWrite(10, HIGH);}
if((order % 2) > 0) { mcp1.digitalWrite(0, HIGH); mcp1.digitalWrite(8, LOW);} else { mcp1.digitalWrite(0, LOW); mcp1.digitalWrite(8, HIGH);}
delay(delayr);
//mcp1.digitalWrite(3, LOW); //non collegato
mcp1.digitalWrite(4, LOW);
mcp1.digitalWrite(5, LOW);
mcp1.digitalWrite(6, LOW);
mcp1.digitalWrite(7, LOW);
mcp1.digitalWrite(2, LOW);
mcp1.digitalWrite(1, LOW);
mcp1.digitalWrite(0, LOW);
//mcp1.digitalWrite(11, LOW); //non collegato
mcp1.digitalWrite(12, LOW);
mcp1.digitalWrite(13, LOW);
mcp1.digitalWrite(14, LOW);
mcp1.digitalWrite(15, LOW);
mcp1.digitalWrite(9, LOW);
mcp1.digitalWrite(10, LOW);
mcp1.digitalWrite(8, LOW);
if((freq % 2) > 0) { mcp4.digitalWrite(4, HIGH); mcp4.digitalWrite(12, LOW);} else { mcp4.digitalWrite(4, LOW); mcp4.digitalWrite(12, HIGH);}
if((freq % 4) > 1) { mcp4.digitalWrite(5, HIGH); mcp4.digitalWrite(13, LOW);} else { mcp4.digitalWrite(5, LOW); mcp4.digitalWrite(13, HIGH);}
if((freq % 8) > 3) { mcp4.digitalWrite(6, HIGH); mcp4.digitalWrite(14, LOW);} else { mcp4.digitalWrite(6, LOW); mcp4.digitalWrite(14, HIGH);}
if((freq % 16) > 7) { mcp4.digitalWrite(7, HIGH); mcp4.digitalWrite(15, LOW);} else { mcp4.digitalWrite(7, LOW); mcp4.digitalWrite(15, HIGH);}
//if((freq % 32) > 15) { mcp4.digitalWrite(7, HIGH); mcp4.digitalWrite(15, LOW);} else { mcp4.digitalWrite(7, LOW); mcp4.digitalWrite(15, HIGH);}
if((reso % 2) > 0) { mcp4.digitalWrite(1, HIGH); mcp4.digitalWrite(9, LOW);} else { mcp4.digitalWrite(1, LOW); mcp4.digitalWrite(9, HIGH);}
if((reso % 4) > 1) { mcp4.digitalWrite(2, HIGH); mcp4.digitalWrite(10, LOW);} else { mcp4.digitalWrite(2, LOW); mcp4.digitalWrite(10, HIGH);}
if((order % 2) > 0) { mcp4.digitalWrite(0, HIGH); mcp4.digitalWrite(8, LOW);} else { mcp4.digitalWrite(0, LOW); mcp4.digitalWrite(8, HIGH);}
delay(delayr);
//mcp4.digitalWrite(3, LOW);
mcp4.digitalWrite(4, LOW);
mcp4.digitalWrite(5, LOW);
mcp4.digitalWrite(6, LOW);
mcp4.digitalWrite(7, LOW);
mcp4.digitalWrite(2, LOW);
mcp4.digitalWrite(1, LOW);
mcp4.digitalWrite(0, LOW);
//mcp4.digitalWrite(11, LOW);
mcp4.digitalWrite(12, LOW);
mcp4.digitalWrite(13, LOW);
mcp4.digitalWrite(14, LOW);
mcp4.digitalWrite(15, LOW);
mcp4.digitalWrite(9, LOW);
mcp4.digitalWrite(10, LOW);
mcp4.digitalWrite(8, LOW);
}
if(pos==16 or pos==22 or pos==28 or pos==19 or pos==25 or pos ==31){
if((freq % 2) > 0) { mcp2.digitalWrite(5, HIGH); mcp2.digitalWrite(13, LOW);} else { mcp2.digitalWrite(5, LOW); mcp2.digitalWrite(13, HIGH);}
if((freq % 4) > 1) { mcp2.digitalWrite(6, HIGH); mcp2.digitalWrite(14, LOW);} else { mcp2.digitalWrite(6, LOW); mcp2.digitalWrite(14, HIGH);}
if((freq % 8) > 3) { mcp2.digitalWrite(7, HIGH); mcp2.digitalWrite(15, LOW);} else { mcp2.digitalWrite(7, LOW); mcp2.digitalWrite(15, HIGH);}
//if((freq % 16) > 7) { mcp2.digitalWrite(6, HIGH); mcp2.digitalWrite(14, LOW);} else { mcp2.digitalWrite(6, LOW); mcp2.digitalWrite(14, HIGH);}
//if((freq % 32) > 15) { mcp2.digitalWrite(7, HIGH); mcp2.digitalWrite(15, LOW);} else { mcp2.digitalWrite(7, LOW); mcp2.digitalWrite(15, HIGH);}
if((reso % 2) > 0) { mcp2.digitalWrite(1, HIGH); mcp2.digitalWrite(9, LOW);} else { mcp2.digitalWrite(1, LOW); mcp2.digitalWrite(9, HIGH);}
if((reso % 4) > 1) { mcp2.digitalWrite(2, HIGH); mcp2.digitalWrite(10, LOW);} else { mcp2.digitalWrite(2, LOW); mcp2.digitalWrite(10, HIGH);}
if((order % 2) > 0) { mcp2.digitalWrite(0, HIGH); mcp2.digitalWrite(8, LOW);} else { mcp2.digitalWrite(0, LOW); mcp2.digitalWrite(8, HIGH);}
delay(delayr);
//mcp2.digitalWrite(3, LOW);
//mcp2.digitalWrite(4, LOW);
mcp2.digitalWrite(5, LOW);
mcp2.digitalWrite(6, LOW);
mcp2.digitalWrite(7, LOW);
mcp2.digitalWrite(2, LOW);
mcp2.digitalWrite(1, LOW);
mcp2.digitalWrite(0, LOW);
//mcp2.digitalWrite(11, LOW);
//mcp2.digitalWrite(12, LOW);
mcp2.digitalWrite(13, LOW);
mcp2.digitalWrite(14, LOW);
mcp2.digitalWrite(15, LOW);
mcp2.digitalWrite(9, LOW);
mcp2.digitalWrite(10, LOW);
mcp2.digitalWrite(8, LOW);
if((freq % 2) > 0) { mcp5.digitalWrite(5, HIGH); mcp5.digitalWrite(13, LOW);} else { mcp5.digitalWrite(5, LOW); mcp5.digitalWrite(13, HIGH);}
if((freq % 4) > 1) { mcp5.digitalWrite(6, HIGH); mcp5.digitalWrite(14, LOW);} else { mcp5.digitalWrite(6, LOW); mcp5.digitalWrite(14, HIGH);}
if((freq % 8) > 3) { mcp5.digitalWrite(7, HIGH); mcp5.digitalWrite(15, LOW);} else { mcp5.digitalWrite(7, LOW); mcp5.digitalWrite(15, HIGH);}
//if((freq % 16) > 7) { mcp5.digitalWrite(6, HIGH); mcp5.digitalWrite(14, LOW);} else { mcp5.digitalWrite(6, LOW); mcp5.digitalWrite(14, HIGH);}
//if((freq % 32) > 15) { mcp5.digitalWrite(7, HIGH); mcp5.digitalWrite(15, LOW);} else { mcp5.digitalWrite(7, LOW); mcp5.digitalWrite(15, HIGH);}
if((reso % 2) > 0) { mcp5.digitalWrite(1, HIGH); mcp5.digitalWrite(9, LOW);} else { mcp5.digitalWrite(1, LOW); mcp5.digitalWrite(9, HIGH);}
if((reso % 4) > 1) { mcp5.digitalWrite(2, HIGH); mcp5.digitalWrite(10, LOW);} else { mcp5.digitalWrite(2, LOW); mcp5.digitalWrite(10, HIGH);}
if((order % 2) > 0) { mcp5.digitalWrite(0, HIGH); mcp5.digitalWrite(8, LOW);} else { mcp5.digitalWrite(0, LOW); mcp5.digitalWrite(8, HIGH);}
delay(delayr);
//mcp5.digitalWrite(3, LOW);
//mcp5.digitalWrite(4, LOW);
mcp5.digitalWrite(5, LOW);
mcp5.digitalWrite(6, LOW);
mcp5.digitalWrite(7, LOW);
mcp5.digitalWrite(2, LOW);
mcp5.digitalWrite(1, LOW);
mcp5.digitalWrite(0, LOW);
//mcp5.digitalWrite(11, LOW);
//mcp5.digitalWrite(12, LOW);
mcp5.digitalWrite(13, LOW);
mcp5.digitalWrite(14, LOW);
mcp5.digitalWrite(15, LOW);
mcp5.digitalWrite(9, LOW);
mcp5.digitalWrite(10, LOW);
mcp5.digitalWrite(8, LOW);
}
//TODO: test mono frequency control
}
void Xover_relays::volCtrl1(int pos, int vol, int ways, int delayr){
_pos=pos;
_vol=vol;
_ways=ways;
_delayr=delayr;
if(pos==6){
if((vol % 2) > 0) { mcp10.digitalWrite(0, HIGH); mcp10.digitalWrite(8, LOW);} else { mcp10.digitalWrite(0, LOW); mcp10.digitalWrite(8, HIGH);}
if((vol % 4) > 1) { mcp10.digitalWrite(1, HIGH); mcp10.digitalWrite(9, LOW);} else { mcp10.digitalWrite(1, LOW); mcp10.digitalWrite(9, HIGH);}
if((vol % 8) > 3) { mcp10.digitalWrite(2, HIGH); mcp10.digitalWrite(10, LOW);} else { mcp10.digitalWrite(2, LOW); mcp10.digitalWrite(10, HIGH);}
if((vol % 16) > 7) { mcp10.digitalWrite(3, HIGH); mcp10.digitalWrite(11, LOW);} else { mcp10.digitalWrite(3, LOW); mcp10.digitalWrite(11, HIGH);}
delay(delayr);
mcp10.digitalWrite(0, LOW);
mcp10.digitalWrite(1, LOW);
mcp10.digitalWrite(2, LOW);
mcp10.digitalWrite(3, LOW);
mcp10.digitalWrite(8, LOW);
mcp10.digitalWrite(9, LOW);
mcp10.digitalWrite(10, LOW);
mcp10.digitalWrite(11, LOW);
}
if(pos==7){
if((vol % 2) > 0) { mcp10.digitalWrite(4, HIGH); mcp10.digitalWrite(12, LOW);} else { mcp10.digitalWrite(4, LOW); mcp10.digitalWrite(12, HIGH);}
if((vol % 4) > 1) { mcp10.digitalWrite(5, HIGH); mcp10.digitalWrite(13, LOW);} else { mcp10.digitalWrite(5, LOW); mcp10.digitalWrite(13, HIGH);}
if((vol % 8) > 3) { mcp10.digitalWrite(6, HIGH); mcp10.digitalWrite(14, LOW);} else { mcp10.digitalWrite(6, LOW); mcp10.digitalWrite(14, HIGH);}
if((vol % 16) > 7) { mcp10.digitalWrite(7, HIGH); mcp10.digitalWrite(15, LOW);} else { mcp10.digitalWrite(7, LOW); mcp10.digitalWrite(15, HIGH);}
delay(delayr);
mcp10.digitalWrite(4, LOW);
mcp10.digitalWrite(5, LOW);
mcp10.digitalWrite(6, LOW);
mcp10.digitalWrite(7, LOW);
mcp10.digitalWrite(12, LOW);
mcp10.digitalWrite(13, LOW);
mcp10.digitalWrite(14, LOW);
mcp10.digitalWrite(15, LOW);
}
if(pos==8){
if((vol % 2) > 0) { mcp11.digitalWrite(0, HIGH); mcp11.digitalWrite(8, LOW);} else { mcp11.digitalWrite(0, LOW); mcp11.digitalWrite(8, HIGH);}
if((vol % 4) > 1) { mcp11.digitalWrite(1, HIGH); mcp11.digitalWrite(9, LOW);} else { mcp11.digitalWrite(1, LOW); mcp11.digitalWrite(9, HIGH);}
if((vol % 8) > 3) { mcp11.digitalWrite(2, HIGH); mcp11.digitalWrite(10, LOW);} else { mcp11.digitalWrite(2, LOW); mcp11.digitalWrite(10, HIGH);}
if((vol % 16) > 7) { mcp11.digitalWrite(3, HIGH); mcp11.digitalWrite(11, LOW);} else { mcp11.digitalWrite(3, LOW); mcp11.digitalWrite(11, HIGH);}
delay(delayr);
mcp11.digitalWrite(0, LOW);
mcp11.digitalWrite(1, LOW);
mcp11.digitalWrite(2, LOW);
mcp11.digitalWrite(3, LOW);
mcp11.digitalWrite(8, LOW);
mcp11.digitalWrite(9, LOW);
mcp11.digitalWrite(10, LOW);
mcp11.digitalWrite(11, LOW);
}
if(pos==9){
if((vol % 2) > 0) { mcp11.digitalWrite(4, HIGH); mcp11.digitalWrite(12, LOW);} else { mcp11.digitalWrite(4, LOW); mcp11.digitalWrite(12, HIGH);}
if((vol % 4) > 1) { mcp11.digitalWrite(5, HIGH); mcp11.digitalWrite(13, LOW);} else { mcp11.digitalWrite(5, LOW); mcp11.digitalWrite(13, HIGH);}
if((vol % 8) > 3) { mcp11.digitalWrite(6, HIGH); mcp11.digitalWrite(14, LOW);} else { mcp11.digitalWrite(6, LOW); mcp11.digitalWrite(14, HIGH);}
if((vol % 16) > 7) { mcp11.digitalWrite(7, HIGH); mcp11.digitalWrite(15, LOW);} else { mcp11.digitalWrite(7, LOW); mcp11.digitalWrite(15, HIGH);}
delay(delayr);
mcp11.digitalWrite(4, LOW);
mcp11.digitalWrite(5, LOW);
mcp11.digitalWrite(6, LOW);
mcp11.digitalWrite(7, LOW);
mcp11.digitalWrite(12, LOW);
mcp11.digitalWrite(13, LOW);
mcp11.digitalWrite(14, LOW);
mcp11.digitalWrite(15, LOW);
}
if(pos==10){
if((vol % 2) > 0) { mcp12.digitalWrite(0, HIGH); mcp12.digitalWrite(8, LOW);} else { mcp12.digitalWrite(0, LOW); mcp12.digitalWrite(8, HIGH);}
if((vol % 4) > 1) { mcp12.digitalWrite(1, HIGH); mcp12.digitalWrite(9, LOW);} else { mcp12.digitalWrite(1, LOW); mcp12.digitalWrite(9, HIGH);}
if((vol % 8) > 3) { mcp12.digitalWrite(2, HIGH); mcp12.digitalWrite(10, LOW);} else { mcp12.digitalWrite(2, LOW); mcp12.digitalWrite(10, HIGH);}
if((vol % 16) > 7) { mcp12.digitalWrite(3, HIGH); mcp12.digitalWrite(11, LOW);} else { mcp12.digitalWrite(3, LOW); mcp12.digitalWrite(11, HIGH);}
delay(delayr);
mcp12.digitalWrite(0, LOW);
mcp12.digitalWrite(1, LOW);
mcp12.digitalWrite(2, LOW);
mcp12.digitalWrite(3, LOW);
mcp12.digitalWrite(8, LOW);
mcp12.digitalWrite(9, LOW);
mcp12.digitalWrite(10, LOW);
mcp12.digitalWrite(11, LOW);
}
if(pos==11){
if((vol % 2) > 0) { mcp12.digitalWrite(4, HIGH); mcp12.digitalWrite(12, LOW);} else { mcp12.digitalWrite(4, LOW); mcp12.digitalWrite(12, HIGH);}
if((vol % 4) > 1) { mcp12.digitalWrite(5, HIGH); mcp12.digitalWrite(13, LOW);} else { mcp12.digitalWrite(5, LOW); mcp12.digitalWrite(13, HIGH);}
if((vol % 8) > 3) { mcp12.digitalWrite(6, HIGH); mcp12.digitalWrite(14, LOW);} else { mcp12.digitalWrite(6, LOW); mcp12.digitalWrite(14, HIGH);}
if((vol % 16) > 7) { mcp12.digitalWrite(7, HIGH); mcp12.digitalWrite(15, LOW);} else { mcp12.digitalWrite(7, LOW); mcp12.digitalWrite(15, HIGH);}
delay(delayr);
mcp12.digitalWrite(4, LOW);
mcp12.digitalWrite(5, LOW);
mcp12.digitalWrite(6, LOW);
mcp12.digitalWrite(7, LOW);
mcp12.digitalWrite(12, LOW);
mcp12.digitalWrite(13, LOW);
mcp12.digitalWrite(14, LOW);
mcp12.digitalWrite(15, LOW);
}
if(pos==12){
if((vol % 2) > 0) { mcp13.digitalWrite(0, HIGH); mcp13.digitalWrite(8, LOW);} else { mcp13.digitalWrite(0, LOW); mcp13.digitalWrite(8, HIGH);}
if((vol % 4) > 1) { mcp13.digitalWrite(1, HIGH); mcp13.digitalWrite(9, LOW);} else { mcp13.digitalWrite(1, LOW); mcp13.digitalWrite(9, HIGH);}
if((vol % 8) > 3) { mcp13.digitalWrite(2, HIGH); mcp13.digitalWrite(10, LOW);} else { mcp13.digitalWrite(2, LOW); mcp13.digitalWrite(10, HIGH);}
if((vol % 16) > 7) { mcp13.digitalWrite(3, HIGH); mcp13.digitalWrite(11, LOW);} else { mcp13.digitalWrite(3, LOW); mcp13.digitalWrite(11, HIGH);}
delay(delayr);
mcp13.digitalWrite(0, LOW);
mcp13.digitalWrite(1, LOW);
mcp13.digitalWrite(2, LOW);
mcp13.digitalWrite(3, LOW);
mcp13.digitalWrite(8, LOW);
mcp13.digitalWrite(9, LOW);
mcp13.digitalWrite(10, LOW);
mcp13.digitalWrite(11, LOW);
}
if(pos==13){
if((vol % 2) > 0) { mcp13.digitalWrite(4, HIGH); mcp13.digitalWrite(12, LOW);} else { mcp13.digitalWrite(4, LOW); mcp13.digitalWrite(12, HIGH);}
if((vol % 4) > 1) { mcp13.digitalWrite(5, HIGH); mcp13.digitalWrite(13, LOW);} else { mcp13.digitalWrite(5, LOW); mcp13.digitalWrite(13, HIGH);}
if((vol % 8) > 3) { mcp13.digitalWrite(6, HIGH); mcp13.digitalWrite(14, LOW);} else { mcp13.digitalWrite(6, LOW); mcp13.digitalWrite(14, HIGH);}
if((vol % 16) > 7) { mcp13.digitalWrite(7, HIGH); mcp13.digitalWrite(15, LOW);} else { mcp13.digitalWrite(7, LOW); mcp13.digitalWrite(15, HIGH);}
delay(delayr);
mcp13.digitalWrite(4, LOW);
mcp13.digitalWrite(5, LOW);
mcp13.digitalWrite(6, LOW);
mcp13.digitalWrite(7, LOW);
mcp13.digitalWrite(12, LOW);
mcp13.digitalWrite(13, LOW);
mcp13.digitalWrite(14, LOW);
mcp13.digitalWrite(15, LOW);
}
//TODO: test stereo volume control
}
void Xover_relays::selCtrl0(int pos, int ways, int delayr){
_pos=pos;
_ways=ways;
_delayr=delayr;
if(pos==3){
//Switch1
if(ways==2) { mcp8.digitalWrite(0, HIGH); mcp8.digitalWrite(8, LOW); mcp8.digitalWrite(1, LOW); mcp8.digitalWrite(9, HIGH);}//A=on B=off
else if(ways==3) { mcp8.digitalWrite(0, LOW); mcp8.digitalWrite(8, HIGH); mcp8.digitalWrite(1, HIGH); mcp8.digitalWrite(9, LOW);}//A=off B=on
else if(ways==4) { mcp8.digitalWrite(0, LOW); mcp8.digitalWrite(8, HIGH); mcp8.digitalWrite(1, HIGH); mcp8.digitalWrite(9, LOW);}//A=off B=on
delay(delayr);
mcp8.digitalWrite(0, LOW);
mcp8.digitalWrite(1, LOW);
mcp8.digitalWrite(8, LOW);
mcp8.digitalWrite(9, LOW);
delay(delayr);
//Switch2
if(ways==2) { mcp8.digitalWrite(6, LOW); mcp8.digitalWrite(14, HIGH); mcp8.digitalWrite(7, HIGH); mcp8.digitalWrite(15, LOW);}//A=off B=on
else if(ways==3) { mcp8.digitalWrite(6, HIGH); mcp8.digitalWrite(14, LOW); mcp8.digitalWrite(7, LOW); mcp8.digitalWrite(15, HIGH);}//A=on B=off
else if(ways==4) { mcp8.digitalWrite(6, LOW); mcp8.digitalWrite(14, HIGH); mcp8.digitalWrite(7, HIGH); mcp8.digitalWrite(15, LOW);}//A=off B=on
delay(delayr);
mcp8.digitalWrite(6, LOW);
mcp8.digitalWrite(7, LOW);
mcp8.digitalWrite(14, LOW);
mcp8.digitalWrite(15, LOW);
}
}