Re-posting this just so it stays permanent.
Main Chip Version 2 (current):
Code:
#include <EEPROM.h>
//pin assigments
const int Preset1_LED_Pin = 0;
const int Preset2_LED_Pin = 1;
const int Preset3_LED_Pin = 2;
const int Preset4_LED_Pin = 3;
const int Preset5_LED_Pin = 4;
const int Preset8_LED_Pin = 9;
const int Preset1_Button_Pin = A5;
const int Preset2_Button_Pin = A4;
const int Preset3_Button_Pin = A3;
const int Preset4_Button_Pin = A2;
const int Preset5_Button_Pin = A1;
const int Preset6_Button_Pin = A0;
const int Preset7_Button_Pin = 13;
const int Preset8_Button_Pin = 12;
const int Mode_ButtonA_Pin = 11;
const int Mode_ButtonB_Pin = 10;
const int Shift_Enable_Pin = 6;
const int Shift_Slide_Pin = 7;
const int Shift_Bit_Pin = 8;
int buttonState1 = HIGH; // variable for reading the pushbutton status
int buttonState2 = HIGH;
int buttonState3 = HIGH;
int buttonState4 = HIGH;
int buttonState5 = HIGH;
int buttonState6 = HIGH;
int buttonState7 = HIGH;
int buttonState8 = HIGH;
int buttonStateA = HIGH;
int buttonStateB = HIGH;
int current_bank = 1;
int current_patch = 1;
//int array[15] = {P6, P7, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, B1, B2, B3};
int array[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0};
int temparray[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0};
void setup() {
pinMode(Preset1_LED_Pin, OUTPUT);
pinMode(Preset2_LED_Pin, OUTPUT);
pinMode(Preset3_LED_Pin, OUTPUT);
pinMode(Preset4_LED_Pin, OUTPUT);
pinMode(Preset5_LED_Pin, OUTPUT);
pinMode(Preset8_LED_Pin, OUTPUT);
pinMode(Preset1_Button_Pin, INPUT_PULLUP);
pinMode(Preset2_Button_Pin, INPUT_PULLUP);
pinMode(Preset3_Button_Pin, INPUT_PULLUP);
pinMode(Preset4_Button_Pin, INPUT_PULLUP);
pinMode(Preset5_Button_Pin, INPUT_PULLUP);
pinMode(Preset6_Button_Pin, INPUT_PULLUP);
pinMode(Preset7_Button_Pin, INPUT_PULLUP);
pinMode(Preset8_Button_Pin, INPUT_PULLUP);
pinMode(Mode_ButtonA_Pin, INPUT_PULLUP);
pinMode(Mode_ButtonB_Pin, INPUT_PULLUP);
pinMode(Shift_Enable_Pin, OUTPUT);
pinMode(Shift_Slide_Pin, OUTPUT);
pinMode(Shift_Bit_Pin, OUTPUT);
}
void loop(){
start:
int changed = 0;
buttonState1 =digitalRead(Preset1_Button_Pin);
buttonState2 =digitalRead(Preset2_Button_Pin);
buttonState3 =digitalRead(Preset3_Button_Pin);
buttonState4 =digitalRead(Preset4_Button_Pin);
buttonState5 =digitalRead(Preset5_Button_Pin);
buttonState6 =digitalRead(Preset6_Button_Pin);
buttonState7 =digitalRead(Preset7_Button_Pin);
buttonState8 =digitalRead(Preset8_Button_Pin);
buttonStateA =digitalRead(Mode_ButtonA_Pin);
buttonStateB =digitalRead(Mode_ButtonB_Pin);
if(buttonState1 == LOW || buttonState2 == LOW || buttonState3 == LOW || buttonState4 == LOW || buttonState5 == LOW || buttonState6 == LOW || buttonState7 == LOW || buttonState8 == LOW){
delay(100);
buttonState1 =digitalRead(Preset1_Button_Pin);
buttonState2 =digitalRead(Preset2_Button_Pin);
buttonState3 =digitalRead(Preset3_Button_Pin);
buttonState4 =digitalRead(Preset4_Button_Pin);
buttonState5 =digitalRead(Preset5_Button_Pin);
buttonState6 =digitalRead(Preset6_Button_Pin);
buttonState7 =digitalRead(Preset7_Button_Pin);
buttonState8 =digitalRead(Preset8_Button_Pin);
}
if(buttonState1==LOW && buttonState8==LOW){goto programmer;}
if(buttonState7==LOW && buttonState8==LOW){goto bankup;}
if(buttonState1==LOW && buttonState2==LOW){goto bankdown;}
if(buttonState1==LOW){current_patch = 1;changed=1;};
if(buttonState2==LOW){current_patch = 2;changed=1;};
if(buttonState3==LOW){current_patch = 3;changed=1;};
if(buttonState4==LOW){current_patch = 4;changed=1;};
if(buttonState5==LOW){current_patch = 5;changed=1;};
if(buttonState6==LOW){current_patch = 6;changed=1;};
if(buttonState7==LOW){current_patch = 7;changed=1;};
if(buttonState8==LOW){current_patch = 8;changed=1;};
if(changed==1){
//LED STATUS============================================================
//bank up
restart:
//Normal Mode -----------------------------------------------------------------------
if (buttonStateA==HIGH && buttonStateB==HIGH){
if(current_patch==1){digitalWrite(Preset1_LED_Pin, HIGH); }
else {digitalWrite(Preset1_LED_Pin, LOW);}
if(current_patch==2){digitalWrite(Preset2_LED_Pin, HIGH);}
else {digitalWrite(Preset2_LED_Pin, LOW);}
if(current_patch==3){digitalWrite(Preset3_LED_Pin, HIGH);}
else {digitalWrite(Preset3_LED_Pin, LOW);}
if(current_patch==4){digitalWrite(Preset4_LED_Pin, HIGH);}
else {digitalWrite(Preset4_LED_Pin, LOW);}
if(current_patch==5){digitalWrite(Preset5_LED_Pin, HIGH);}
else {digitalWrite(Preset5_LED_Pin, LOW);}
if(current_patch==6){array[1] = 1;}
else {array[1] = 0;}
if(current_patch==7){array[2] = 1;}
else {array[2] = 0;}
if(current_patch==8){digitalWrite(Preset8_LED_Pin, HIGH);}
else {digitalWrite(Preset8_LED_Pin, LOW);}
//recall from memory
array[3]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+0));
array[4]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+1));
array[5]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+2));
array[6]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+3));
array[7]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+4));
array[8]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+5));
array[9]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+6));
array[10]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+7));
array[11]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+8));
array[12]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+9));
}
//Pedal Mode -----------------------------------------------------------------------
if (buttonStateA==LOW && buttonStateB==HIGH){
if(current_patch==1){
if(array[3]==1){array[3]=0; digitalWrite(Preset1_LED_Pin, LOW); }
else {array[3]=1; digitalWrite(Preset1_LED_Pin, HIGH);}}
if(current_patch==2){
if(array[4]==1){array[4]=0; digitalWrite(Preset2_LED_Pin, LOW); }
else {array[4]=1; digitalWrite(Preset2_LED_Pin, HIGH);}}
if(current_patch==3){
if(array[5]==1){array[5]=0; digitalWrite(Preset3_LED_Pin, LOW); }
else {array[5]=1; digitalWrite(Preset3_LED_Pin, HIGH);}}
if(current_patch==4){
if(array[6]==1){array[6]=0; digitalWrite(Preset4_LED_Pin, LOW); }
else {array[6]=1; digitalWrite(Preset4_LED_Pin, HIGH);}}
if(current_patch==5){
if(array[7]==1){array[7]=0; digitalWrite(Preset5_LED_Pin, LOW); }
else {array[7]=1; digitalWrite(Preset5_LED_Pin, HIGH);}}
if(current_patch==6){
if(array[8]==1){array[8]=0; array[1] = 0; }
else {array[8]=1; array[1] = 1;}}
if(current_patch==7){
if(array[9]==1){array[9]=0; array[2] = 0; }
else {array[9]=1; array[2] = 1;}}
if(current_patch==8){
if(array[10]==1){array[10]=0; digitalWrite(Preset8_LED_Pin, LOW); }
else {array[10]=1; digitalWrite(Preset8_LED_Pin, HIGH);}}
array[11]=0;
array[12]=0;
}
//Override Mode -----------------------------------------------------------------------
if (buttonStateA==HIGH && buttonStateB==LOW){
if(current_patch==1){digitalWrite(Preset1_LED_Pin, HIGH); }
else {digitalWrite(Preset1_LED_Pin, LOW);}
if(current_patch==2){digitalWrite(Preset2_LED_Pin, HIGH);}
else {digitalWrite(Preset2_LED_Pin, LOW);}
if(current_patch==3){digitalWrite(Preset3_LED_Pin, HIGH);}
else {digitalWrite(Preset3_LED_Pin, LOW);}
if(current_patch==4){digitalWrite(Preset4_LED_Pin, HIGH);}
else {digitalWrite(Preset4_LED_Pin, LOW);}
if(current_patch==5){digitalWrite(Preset5_LED_Pin, HIGH);}
else {digitalWrite(Preset5_LED_Pin, LOW);}
if(current_patch==6){array[1] = 1;}
else {array[1] = 0;}
if(current_patch==7){array[2] = 1;}
else {array[2] = 0;}
if(current_patch==8){digitalWrite(Preset8_LED_Pin, HIGH);}
else {digitalWrite(Preset8_LED_Pin, LOW);}
//recall from memory
temparray[3]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+0));
temparray[4]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+1));
temparray[5]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+2));
temparray[6]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+3));
temparray[7]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+4));
temparray[8]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+5));
temparray[9]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+6));
temparray[10]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+7));
temparray[11]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+8));
temparray[12]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+9));
if(temparray[3]==1 && array[3]==1){array[3]=0;}
else {
if(temparray[3]==1 || array[3]==1){array[3]=1;}
else{array[3]=0;}}
if(temparray[4]==1 && array[4]==1){array[4]=0;}
else {
if(temparray[4]==1 || array[4]==1){array[4]=1;}
else{array[4]=0;}}
if(temparray[5]==1 && array[5]==1){array[5]=0;}
else {
if(temparray[5]==1 || array[5]==1){array[5]=1;}
else{array[5]=0;}}
if(temparray[6]==1 && array[6]==1){array[6]=0;}
else {
if(temparray[6]==1 || array[6]==1){array[6]=1;}
else{array[6]=0;}}
if(temparray[7]==1 && array[7]==1){array[7]=0;}
else {
if(temparray[7]==1 || array[7]==1){array[7]=1;}
else{array[7]=0;}}
if(temparray[8]==1 && array[8]==1){array[8]=0;}
else {
if(temparray[8]==1 || array[8]==1){array[8]=1;}
else{array[8]=0;}}
if(temparray[9]==1 && array[9]==1){array[9]=0;}
else {
if(temparray[9]==1 || array[9]==1){array[9]=1;}
else{array[9]=0;}}
if(temparray[10]==1 && array[10]==1){array[10]=0;}
else {
if(temparray[10]==1 || array[10]==1){array[10]=1;}
else{array[10]=0;}}
if(temparray[11]==1 && array[11]==1){array[11]=0;}
else {
if(temparray[11]==1 || array[11]==1){array[11]=1;}
else{array[11]=0;}}
if(temparray[12]==1 && array[12]==1){array[12]=0;}
else {
if(temparray[12]==1 || array[12]==1){array[12]=1;}
else{array[12]=0;}}
}
transmit:
if(current_bank==1) {array[13]=1; array[14]=0; array[15]=0;}
if(current_bank==2) {array[13]=0; array[14]=1; array[15]=0;}
if(current_bank==3) {array[13]=0; array[14]=0; array[15]=1;}
if(current_bank==4) {array[13]=1; array[14]=1; array[15]=0;}
//bitbang out
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(50);
}//end of changed
goto start;
bankup:
current_bank=current_bank+1;
if(current_bank>=5){current_bank=1;};
//delay(200);
goto transmit;
bankdown:
current_bank=current_bank-1;
if(current_bank<=0){current_bank=4;};
//delay(200);
goto transmit;
programmer: //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//displayprogram mode
digitalWrite(Preset1_LED_Pin, HIGH);
digitalWrite(Preset2_LED_Pin, HIGH);
digitalWrite(Preset3_LED_Pin, HIGH);
digitalWrite(Preset4_LED_Pin, HIGH);
digitalWrite(Preset5_LED_Pin, HIGH);
array[1] = 1;
array[2] = 1;
digitalWrite(Preset8_LED_Pin, HIGH);
array[3]= 0;
array[4]= 0;
array[5]= 0;
array[6]= 0;
array[7]= 0;
array[8]= 0;
array[9]= 0;
array[10]= 0;
array[11]= 0;
array[12]= 0;
//shift out status
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(1000);
int z=0;
while(z<=1){
buttonState1 =digitalRead(Preset1_Button_Pin);
buttonState2 =digitalRead(Preset2_Button_Pin);
buttonState3 =digitalRead(Preset3_Button_Pin);
buttonState4 =digitalRead(Preset4_Button_Pin);
buttonState5 =digitalRead(Preset5_Button_Pin);
buttonState6 =digitalRead(Preset6_Button_Pin);
buttonState7 =digitalRead(Preset7_Button_Pin);
buttonState8 =digitalRead(Preset8_Button_Pin);
if(buttonState1==LOW){current_patch = 1;z=5;};
if(buttonState2==LOW){current_patch = 2;z=5;};
if(buttonState3==LOW){current_patch = 3;z=5;};
if(buttonState4==LOW){current_patch = 4;z=5;};
if(buttonState5==LOW){current_patch = 5;z=5;};
if(buttonState6==LOW){current_patch = 6;z=5;};
if(buttonState7==LOW){current_patch = 7;z=5;};
if(buttonState8==LOW){current_patch = 8;z=5;};
}
array[13]= 1;
array[14]= 1;
array[15]= 1;
if(current_patch==1){digitalWrite(Preset1_LED_Pin, HIGH); }
else {digitalWrite(Preset1_LED_Pin, LOW);}
if(current_patch==2){digitalWrite(Preset2_LED_Pin, HIGH);}
else {digitalWrite(Preset2_LED_Pin, LOW);}
if(current_patch==3){digitalWrite(Preset3_LED_Pin, HIGH);}
else {digitalWrite(Preset3_LED_Pin, LOW);}
if(current_patch==4){digitalWrite(Preset4_LED_Pin, HIGH);}
else {digitalWrite(Preset4_LED_Pin, LOW);}
if(current_patch==5){digitalWrite(Preset5_LED_Pin, HIGH);}
else {digitalWrite(Preset5_LED_Pin, LOW);}
if(current_patch==6){array[1] = 1;}
else {array[1] = 0;}
if(current_patch==7){array[2] = 1;}
else {array[2] = 0;}
if(current_patch==8){digitalWrite(Preset8_LED_Pin, HIGH);}
else {digitalWrite(Preset8_LED_Pin, LOW);}
array[3]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+0));
array[4]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+1));
array[5]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+2));
array[6]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+3));
array[7]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+4));
array[8]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+5));
array[9]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+6));
array[10]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+7));
array[11]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+8));
array[12]= EEPROM.read((((current_patch-1)*10)+(current_bank*100)+9));
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(300);
int y=0;
int half=1;
digitalWrite(Preset1_LED_Pin, HIGH);
digitalWrite(Preset2_LED_Pin, HIGH);
digitalWrite(Preset3_LED_Pin, HIGH);
digitalWrite(Preset4_LED_Pin, HIGH);
while(y<=1){
buttonState1 =digitalRead(Preset1_Button_Pin);
buttonState2 =digitalRead(Preset2_Button_Pin);
buttonState3 =digitalRead(Preset3_Button_Pin);
buttonState4 =digitalRead(Preset4_Button_Pin);
buttonState5 =digitalRead(Preset5_Button_Pin);
buttonState6 =digitalRead(Preset6_Button_Pin);
buttonState7 =digitalRead(Preset7_Button_Pin);
buttonState8 =digitalRead(Preset8_Button_Pin);
if(buttonState1==LOW && half==1){
if(array[3]==1){array[3]=0;}
else{array[3]=1;}
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(300);
}
if(buttonState1==LOW && half==2){
if(array[8]==1){array[8]=0;}
else{array[8]=1;}
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(300);
}
if(buttonState2==LOW && half==1){
if(array[4]==1){array[4]=0;}
else{array[4]=1;}
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(300);
}
if(buttonState2==LOW && half==2){
if(array[9]==1){array[9]=0;}
else{array[9]=1;}
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(300);
}
if(buttonState3==LOW && half==1){
if(array[5]==1){array[5]=0;}
else{array[5]=1;}
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(300);
}
if(buttonState3==LOW && half==2){
if(array[10]==1){array[10]=0;}
else{array[10]=1;}
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(300);
}
if(buttonState4==LOW && half==1){
if(array[6]==1){array[6]=0;}
else{array[6]=1;}
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(300);
}
if(buttonState4==LOW && half==2){
if(array[11]==1){array[11]=0;}
else{array[11]=1;}
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(300);
}
if(buttonState5==LOW && half==1){
if(array[7]==1){array[7]=0;}
else{array[7]=1;}
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(300);
}
if(buttonState5==LOW && half==2){
if(array[12]==1){array[12]=0;}
else{array[12]=1;}
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(300);
}
if(buttonState8==LOW){
EEPROM.write((((current_patch-1)*10)+(current_bank*100)+0),array[3]);
EEPROM.write((((current_patch-1)*10)+(current_bank*100)+1),array[4]);
EEPROM.write((((current_patch-1)*10)+(current_bank*100)+2),array[5]);
EEPROM.write((((current_patch-1)*10)+(current_bank*100)+3),array[6]);
EEPROM.write((((current_patch-1)*10)+(current_bank*100)+4),array[7]);
EEPROM.write((((current_patch-1)*10)+(current_bank*100)+5),array[8]);
EEPROM.write((((current_patch-1)*10)+(current_bank*100)+6),array[9]);
EEPROM.write((((current_patch-1)*10)+(current_bank*100)+7),array[10]);
EEPROM.write((((current_patch-1)*10)+(current_bank*100)+8),array[11]);
EEPROM.write((((current_patch-1)*10)+(current_bank*100)+9),array[12]);
y=5;
digitalWrite(Preset1_LED_Pin, HIGH);
digitalWrite(Preset2_LED_Pin, HIGH);
digitalWrite(Preset3_LED_Pin, HIGH);
digitalWrite(Preset4_LED_Pin, HIGH);
digitalWrite(Preset5_LED_Pin, HIGH);
array[1] = 1;
array[2] = 1;
digitalWrite(Preset8_LED_Pin, HIGH);
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(1000);
goto restart;
}
if(buttonState6==LOW){
if(half==1){
half=2;
digitalWrite(Preset1_LED_Pin, LOW);
digitalWrite(Preset2_LED_Pin, LOW);
digitalWrite(Preset3_LED_Pin, LOW);
digitalWrite(Preset4_LED_Pin, LOW);
digitalWrite(Preset5_LED_Pin, HIGH);
array[1] = 1;
array[2] = 1;
digitalWrite(Preset8_LED_Pin, HIGH);
//shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
}
else{half=1;
digitalWrite(Preset1_LED_Pin, HIGH);
digitalWrite(Preset2_LED_Pin, HIGH);
digitalWrite(Preset3_LED_Pin, HIGH);
digitalWrite(Preset4_LED_Pin, HIGH);
digitalWrite(Preset5_LED_Pin, LOW);
array[1] = 0;
array[2] = 0;
digitalWrite(Preset8_LED_Pin, LOW);
//shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
}
shiftout(array[1],array[2],array[3],array[4],array[5],array[6],array[7],array[8],array[9],array[10],array[11],array[12],array[13],array[14],array[15] );
delay(300);
}
}
delay(1000);
goto start;
}
//end main loop-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void shiftout(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, int n, int o){
int shiftoutarray[16]={0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o};
for(int i=1; i<17; i++){
if(shiftoutarray[i]==1){
digitalWrite(Shift_Bit_Pin, HIGH);
}
else {
digitalWrite(Shift_Bit_Pin, LOW);
}
digitalWrite(Shift_Slide_Pin, HIGH);
delay(1);
digitalWrite(Shift_Slide_Pin, LOW);
delay(1);
}
}
Slave Chip:
Code:
const int Preset6_LED_Pin = 3;
const int Preset7_LED_Pin = 4;
const int Work_LED_Pin = 5;
const int BankA_LED_Pin = 6;
const int BankB_LED_Pin = 7;
const int BankC_LED_Pin = 8;
const int Loop1_Pin = A5;
const int Loop2_Pin = A4;
const int Loop3_Pin = A3;
const int Loop4_Pin = A2;
const int Loop5_Pin = A1;
const int Loop6_Pin = A0;
const int Loop7_Pin = 13;
const int Loop8_Pin = 12;
const int Loop9_Pin = 11;
const int Loop10_Pin = 10;
const int Shift_Enable_Pin = 2;
const int Shift_Slide_Pin = 1;
const int Shift_Bit_Pin = 0;
//int array[15] = {P6, P7, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, B1, B2, B3};
int array[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int Shift_Enable_Pin_state = LOW;
int Shift_Slide_Pin_state = LOW;
int Shift_Bit_Pin_state = LOW;
int count = 1;
void setup() {
pinMode(Loop1_Pin, OUTPUT);
pinMode(Loop2_Pin, OUTPUT);
pinMode(Loop3_Pin, OUTPUT);
pinMode(Loop4_Pin, OUTPUT);
pinMode(Loop5_Pin, OUTPUT);
pinMode(Loop6_Pin, OUTPUT);
pinMode(Loop7_Pin, OUTPUT);
pinMode(Loop8_Pin, OUTPUT);
pinMode(Loop9_Pin, OUTPUT);
pinMode(Loop10_Pin, OUTPUT);
pinMode(Preset6_LED_Pin, OUTPUT);
pinMode(Preset7_LED_Pin, OUTPUT);
pinMode(Work_LED_Pin, OUTPUT);
pinMode(BankA_LED_Pin, OUTPUT);
pinMode(BankB_LED_Pin, OUTPUT);
pinMode(BankC_LED_Pin, OUTPUT);
pinMode(Shift_Enable_Pin, INPUT);
pinMode(Shift_Slide_Pin, INPUT);
pinMode(Shift_Bit_Pin, INPUT);
}
// the loop routine runs over and over again forever:
void loop() {
Shift_Slide_Pin_state = digitalRead(Shift_Slide_Pin);
if(Shift_Slide_Pin_state==HIGH){
Shift_Bit_Pin_state = digitalRead(Shift_Bit_Pin);
if(Shift_Bit_Pin_state==HIGH){
array[count]=1;
}
else {
array[count]=0;
}
count=count + 1 ;
if(count==17){
count=1;
}
delay(1.5);
}
if(array[1]==1){digitalWrite(Preset6_LED_Pin, HIGH);} else{digitalWrite(Preset6_LED_Pin, LOW);}
if(array[2]==1){digitalWrite(Preset7_LED_Pin, HIGH);} else{digitalWrite(Preset7_LED_Pin, LOW);}
if(array[3]==1){digitalWrite(Loop1_Pin, HIGH);} else{digitalWrite(Loop1_Pin, LOW);}
if(array[4]==1){digitalWrite(Loop2_Pin, HIGH);} else{digitalWrite(Loop2_Pin, LOW);}
if(array[5]==1){digitalWrite(Loop3_Pin, HIGH);} else{digitalWrite(Loop3_Pin, LOW);}
if(array[6]==1){digitalWrite(Loop4_Pin, HIGH);} else{digitalWrite(Loop4_Pin, LOW);}
if(array[7]==1){digitalWrite(Loop5_Pin, HIGH);} else{digitalWrite(Loop5_Pin, LOW);}
if(array[8]==1){digitalWrite(Loop6_Pin, HIGH);} else{digitalWrite(Loop6_Pin, LOW);}
if(array[9]==1){digitalWrite(Loop7_Pin, HIGH);} else{digitalWrite(Loop7_Pin, LOW);}
if(array[10]==1){digitalWrite(Loop8_Pin, HIGH);} else{digitalWrite(Loop8_Pin, LOW);}
if(array[11]==1){digitalWrite(Loop9_Pin, HIGH);} else{digitalWrite(Loop9_Pin, LOW);}
if(array[12]==1){digitalWrite(Loop10_Pin, HIGH);} else{digitalWrite(Loop10_Pin, LOW);}
if(array[13]==1){digitalWrite(BankA_LED_Pin, HIGH);} else{digitalWrite(BankA_LED_Pin, LOW);}
if(array[14]==1){digitalWrite(BankB_LED_Pin, HIGH);} else{digitalWrite(BankB_LED_Pin, LOW);}
if(array[15]==1){digitalWrite(BankC_LED_Pin, HIGH);} else{digitalWrite(BankC_LED_Pin, LOW);}
}