#define CR1 (2) #define CR2 (1) #define CG1 (5) #define CG2 (4) #define R1 (6) #define R2 (7) #define COLUMNS (2) #define ROWS (2) int redColumns[COLUMNS] = {CR1, CR2}; int greenColumns[COLUMNS] = {CG1, CG2}; int rows[ROWS] = {R1, R2}; void setup() { pinMode(CR1, OUTPUT); pinMode(CR2, OUTPUT); pinMode(CG1, OUTPUT); pinMode(CG2, OUTPUT); pinMode(R1, OUTPUT); pinMode(R2, OUTPUT); } void setRedColumnState(int column, bool on){ if(on){ digitalWrite(redColumns[column], HIGH); } else { //off digitalWrite(redColumns[column], LOW); } } void setGreenColumnState(int column, bool on){ if(on){ digitalWrite(greenColumns[column], HIGH); } else { //off digitalWrite(greenColumns[column], LOW); } } void setRowState(int row, bool on){ if(on){ digitalWrite(rows[row], LOW); } else { //off digitalWrite(rows[row], HIGH); } } void turnOffColumns(){ for(int c=0; c < COLUMNS; c++){ setGreenColumnState(c, false); setRedColumnState(c, false); } } void turnOffRows(){ for(int r=0; r < ROWS; r++){ setRowState(r, false); } } void turnOffAllLights(){ turnOffRows(); turnOffColumns(); } void turnRedLightOn(int row, int column){ turnOffAllLights(); setRowState(row, true); setRedColumnState(column, true); } void turnGreenLightOn(int row, int column){ turnOffAllLights(); setRowState(row, true); setGreenColumnState(column, true); } void loop() { turnGreenLightOn(0,0); delay(400); turnGreenLightOn(0,1); delay(400); turnGreenLightOn(1,1); delay(400); turnGreenLightOn(1,0); delay(400); turnRedLightOn(0,0); delay(400); turnRedLightOn(0,1); delay(400); turnRedLightOn(1,1); delay(400); turnRedLightOn(1,0); delay(400); turnOffAllLights(); delay(400); }