328 lines
7.7 KiB
C++
328 lines
7.7 KiB
C++
#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;
|
|
}
|
|
}
|
|
|