Lab_interaccio/2017/BETETA/BETETA.ino

328 lines
7.7 KiB
Arduino
Raw Permalink Normal View History

2025-02-25 21:29:42 +01:00
#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;
}
}