I have been writing this code, modified from here: https://create.arduino.cc/projecthub/mdraber/controlling-8x8-led-matrix-without-drivers-libraries-585371?ref=user&ref_id=1474727&offset=4, and I need to make it so that the image changes when I press a button. Here is the code:
Code:
[code]
#define R1 2
#define R2 3
#define R3 4
#define R4 5
#define R5 6
#define R6 7
#define R7 8
#define R8 9
//Columns
#define C1 10
#define C2 11
#define C3 12
#define C4 13
#define C5 A0
#define C6 A1
#define C7 A2
#define C8 A3
int mySwitch;
int displayEmoji;
const int switchPin = 14;
int switchState = 0;
int prevSwitchState = 0;
int pause=300;
int happyFace [8] [8] ={
{0,0,0,0,0,0,0,0},
{0,0,1,0,0,1,0,0},
{0,0,1,0,0,1,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,1,0,0,0,0,1,0},
{0,0,1,1,1,1,0,0},
{0,0,0,0,0,0,0,0},
};
int sadFace [8] [8] ={
{0,0,0,0,0,0,0,0},
{0,0,1,0,0,1,0,0},
{0,0,1,0,0,1,0,0},
{0,0,0,0,0,0,0,0},
{0,0,1,1,1,1,0,0},
{0,1,0,0,0,0,1,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
};
int amazedFace [8] [8] ={
{0,0,0,0,0,0,0,0},
{0,0,1,0,0,1,0,0},
{0,0,1,0,0,1,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,1,1,0,0,0},
{0,0,1,0,0,1,0,0},
{0,0,1,0,0,1,0,0},
{0,0,0,1,1,0,0,0},
};
int boredFace [8] [8] ={
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,1,1,0,1,1,0,0},
{0,0,0,0,0,0,0,0},
{0,0,1,1,1,1,0,0},
{0,0,0,0,0,1,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
};
int excitedFace [8] [8] ={
{0,0,0,0,0,0,0,0},
{0,1,1,0,0,1,1,0},
{0,1,1,0,0,1,1,0},
{0,0,0,0,0,0,0,0},
{0,0,1,1,1,1,0,0},
{0,0,1,0,0,1,0,0},
{0,0,0,1,1,0,0,0},
{0,0,0,0,0,0,0,0},
};
int confusedFace [8] [8] ={
{0,0,0,0,0,0,0,0},
{0,1,1,0,0,1,1,0},
{0,0,0,1,0,0,0,1},
{0,0,1,0,0,0,1,0},
{0,0,0,0,0,0,0,0},
{0,0,1,0,0,0,1,0},
{0,0,0,0,0,0,0,0},
{0,0,0,1,1,1,0,0},
};
int angryFace [8] [8] ={
{0,1,0,0,0,1,0,0},
{0,0,1,0,1,0,0,0},
{0,1,1,0,1,1,0,0},
{0,1,1,0,1,1,0,0},
{0,0,0,0,0,0,0,0},
{0,0,1,1,1,1,0,0},
{0,1,0,0,0,0,1,0},
{0,0,0,0,0,0,0,0},
};
void setup() {
pinMode(R1, OUTPUT);
pinMode(R2, OUTPUT);
pinMode(R3, OUTPUT);
pinMode(R4, OUTPUT);
pinMode(R5, OUTPUT);
pinMode(R6, OUTPUT);
pinMode(R7, OUTPUT);
pinMode(R8, OUTPUT);
pinMode(C1, OUTPUT);
pinMode(C2, OUTPUT);
pinMode(C3, OUTPUT);
pinMode(C4, OUTPUT);
pinMode(C5, OUTPUT);
pinMode(C6, OUTPUT);
pinMode(C7, OUTPUT);
pinMode(C8, OUTPUT);
pinMode(switchPin, INPUT);
digitalWrite(R1,HIGH);
digitalWrite(R2,HIGH);
digitalWrite(R3,HIGH);
digitalWrite(R4,HIGH);
digitalWrite(R5,HIGH);
digitalWrite(R6,HIGH);
digitalWrite(R7,HIGH);
digitalWrite(R8,HIGH);
digitalWrite(C1,LOW);
digitalWrite(C2,LOW);
digitalWrite(C3,LOW);
digitalWrite(C4,LOW);
digitalWrite(C5,LOW);
digitalWrite(C6,LOW);
digitalWrite(C7,LOW);
digitalWrite(C8,LOW);
}
void SelectRow(int row){
if (row==1) digitalWrite(R1,LOW); else digitalWrite(R1,HIGH);
if (row==2) digitalWrite(R2,LOW); else digitalWrite(R2,HIGH);
if (row==3) digitalWrite(R3,LOW); else digitalWrite(R3,HIGH);
if (row==4) digitalWrite(R4,LOW); else digitalWrite(R4,HIGH);
if (row==5) digitalWrite(R5,LOW); else digitalWrite(R5,HIGH);
if (row==6) digitalWrite(R6,LOW); else digitalWrite(R6,HIGH);
if (row==7) digitalWrite(R7,LOW); else digitalWrite(R7,HIGH);
if (row==8) digitalWrite(R8,LOW); else digitalWrite(R8,HIGH);
}
void Set_LED_in_Active_Row(int column, int state){
if (column==1) digitalWrite(C1,state);
if (column==2) digitalWrite(C2,state);
if (column==3) digitalWrite(C3,state);
if (column==4) digitalWrite(C4,state);
if (column==5) digitalWrite(C5,state);
if (column==6) digitalWrite(C6,state);
if (column==7) digitalWrite(C7,state);
if (column==8) digitalWrite(C8,state);
}
void loop(){
switchState = digitalRead(switchPin);
if (switchState != prevSwitchState){
if (switchState == LOW){
if (mySwitch==0) displayEmoji = happyFace;
if (mySwitch==1) displayEmoji = sadFace;
if (mySwitch==2) displayEmoji = amazedFace;
if (mySwitch==3) displayEmoji = boredFace;
if (mySwitch==4) displayEmoji = excitedFace;
if (mySwitch==5) displayEmoji = confusedFace;
if (mySwitch==6) displayEmoji = angryFace;
}
mySwitch = mySwitch + 1 %7;
}
prevSwitchState = switchState;
for (int j=0;j<8;j++){
SelectRow(j+1);
for (int i=0;i<8;i++){
Set_LED_in_Active_Row(i+1 ,displayEmoji[j][i]);
}
delay(2+pause);
}
if(pause!=0 and pause>100)pause=pause-100;
if(pause!=0 and pause<=100)pause=pause-10;
},
and I keep getting this error: invalid types 'int[int]' for array subscript
Set_LED_in_Active_Row(i+1 ,displayEmoji[j][i]);
invalid types 'int[int]' for array subscript for this line. how can I fix that