#define LEFT 0 #define RIGHT 1 #define STOP 2 int RELAY[4][10] = { { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4 }, { 3, 2, 14, 15, 16, 17, 18, 19, 20, 21 }, { 47, 49, 51, 53, A15, A14, A13, A12, A11, A10 }, { A9, A8, A7, A6, A5, A4, A3, A2, A1, A0 } }; void setup() { for (int i=0; i<10; i++) for (int j=0; j<4; j++) pinMode(RELAY[j][i], OUTPUT); for (int i=0; i<10; i++) for (int j=0; j<4; j++) digitalWrite(RELAY[j][i], LOW); for (int i=0; i<20; i++) motor(i, STOP); } // the loop function runs over and over again forever void loop() { for (int i=0; i<20; i++) motor(i, LEFT); delay(5000); for (int i=0; i<20; i++) motor(i, STOP); delay(1000); for (int i=0; i<20; i++) motor(i, RIGHT); delay(5000); for (int i=0; i<20; i++) motor(i, STOP); delay(1000); } void test_relay() { for (int i=0; i<10; i++) { for (int j=0; j<4; j++) digitalWrite(RELAY[j][i], HIGH); // turn the LED on (HIGH is the voltage level) delay(500); // wait for a second for (int j=0; j<4; j++) digitalWrite(RELAY[j][i], LOW); // turn the LED off by making the voltage LOW } } #define time_stop 10 void motor(int num, int state) { switch (num) { case 0: if (state!=STOP) { digitalWrite(RELAY[0][0], state); delay(time_stop); digitalWrite(RELAY[0][1], !state); delay(time_stop); } else { digitalWrite(RELAY[0][0], LOW); digitalWrite(RELAY[0][1], LOW); } break; case 1: if (state!=STOP) { digitalWrite(RELAY[0][2], state); delay(time_stop); digitalWrite(RELAY[0][3], !state); delay(time_stop); } else { digitalWrite(RELAY[0][2], LOW); digitalWrite(RELAY[0][3], LOW); } break; case 2: if (state!=STOP) { digitalWrite(RELAY[0][4], state); delay(time_stop); digitalWrite(RELAY[0][5], !state); delay(time_stop); } else { digitalWrite(RELAY[0][4], LOW); digitalWrite(RELAY[0][5], LOW); } break; case 3: if (state!=STOP) { digitalWrite(RELAY[0][6], state); delay(time_stop); digitalWrite(RELAY[0][7], !state); delay(time_stop); } else { digitalWrite(RELAY[0][6], LOW); digitalWrite(RELAY[0][7], LOW); } break; case 4: if (state!=STOP) { digitalWrite(RELAY[0][8], state); delay(time_stop); digitalWrite(RELAY[0][9], !state); delay(time_stop); } else { digitalWrite(RELAY[0][8], LOW); digitalWrite(RELAY[0][9], LOW); } break; case 5: if (state!=STOP) { digitalWrite(RELAY[1][0], state); delay(time_stop); digitalWrite(RELAY[1][1], !state); delay(time_stop); } else { digitalWrite(RELAY[1][0], LOW); digitalWrite(RELAY[1][1], LOW); } break; case 6: if (state!=STOP) { digitalWrite(RELAY[1][2], state); delay(time_stop); digitalWrite(RELAY[1][3], !state); delay(time_stop); } else { digitalWrite(RELAY[1][2], LOW); digitalWrite(RELAY[1][3], LOW); } break; case 7: if (state!=STOP) { digitalWrite(RELAY[1][4], state); delay(time_stop); digitalWrite(RELAY[1][5], !state); delay(time_stop); } else { digitalWrite(RELAY[1][4], LOW); digitalWrite(RELAY[1][5], LOW); } break; case 8: if (state!=STOP) { digitalWrite(RELAY[1][6], state); delay(time_stop); digitalWrite(RELAY[1][7], !state); delay(time_stop); } else { digitalWrite(RELAY[1][6], LOW); digitalWrite(RELAY[1][7], LOW); } break; case 9: if (state!=STOP) { digitalWrite(RELAY[1][8], state); delay(time_stop); digitalWrite(RELAY[1][9], !state); delay(time_stop); } else { digitalWrite(RELAY[1][8], LOW); digitalWrite(RELAY[1][9], LOW); } break; case 10: if (state!=STOP) { digitalWrite(RELAY[2][0], state); delay(time_stop); digitalWrite(RELAY[2][1], !state); delay(time_stop); } else { digitalWrite(RELAY[2][0], LOW); digitalWrite(RELAY[2][1], LOW); } break; case 11: if (state!=STOP) { digitalWrite(RELAY[2][2], state); delay(time_stop); digitalWrite(RELAY[2][3], !state); delay(time_stop); } else { digitalWrite(RELAY[2][2], LOW); digitalWrite(RELAY[2][3], LOW); } break; case 12: if (state!=STOP) { digitalWrite(RELAY[2][4], state); delay(time_stop); digitalWrite(RELAY[2][5], !state); delay(time_stop); } else { digitalWrite(RELAY[2][4], LOW); digitalWrite(RELAY[2][5], LOW); } break; case 13: if (state!=STOP) { digitalWrite(RELAY[2][6], state); delay(time_stop); digitalWrite(RELAY[2][7], !state); delay(time_stop); } else { digitalWrite(RELAY[2][6], LOW); digitalWrite(RELAY[2][7], LOW); } break; case 14: if (state!=STOP) { digitalWrite(RELAY[2][8], state); delay(time_stop); digitalWrite(RELAY[2][9], !state); delay(time_stop); } else { digitalWrite(RELAY[2][8], LOW); digitalWrite(RELAY[2][9], LOW); } break; case 15: if (state!=STOP) { digitalWrite(RELAY[3][0], state); delay(time_stop); digitalWrite(RELAY[3][1], !state); delay(time_stop); } else { digitalWrite(RELAY[3][0], LOW); digitalWrite(RELAY[3][1], LOW); } break; case 16: if (state!=STOP) { digitalWrite(RELAY[3][2], state); delay(time_stop); digitalWrite(RELAY[3][3], !state); delay(time_stop); } else { digitalWrite(RELAY[3][2], LOW); digitalWrite(RELAY[3][3], LOW); } break; case 17: if (state!=STOP) { digitalWrite(RELAY[3][4], state); delay(time_stop); digitalWrite(RELAY[3][5], !state); delay(time_stop); } else { digitalWrite(RELAY[3][4], LOW); digitalWrite(RELAY[3][5], LOW); } break; case 18: if (state!=STOP) { digitalWrite(RELAY[3][6], state); delay(time_stop); digitalWrite(RELAY[3][7], !state); delay(time_stop); } else { digitalWrite(RELAY[3][6], LOW); digitalWrite(RELAY[3][7], LOW); } break; case 19: if (state!=STOP) { digitalWrite(RELAY[3][8], state); delay(time_stop); digitalWrite(RELAY[3][9], !state); delay(time_stop); } else { digitalWrite(RELAY[3][8], LOW); digitalWrite(RELAY[3][9], LOW); } break; } }