// CLP Arduino Mega - 16 reles
// Rogerio @ IFCE.edu.br 2024
// MEGA
#define RELE1 26
#define RELE2 27
#define RELE3 28
#define RELE4 29
#define RELE5 30
#define RELE6 31
#define RELE7 32
#define RELE8 33
#define RELE9 34
#define RELE10 35
#define RELE11 36
#define RELE12 37
#define RELE13 38
#define RELE14 39
#define RELE15 40
#define RELE16 41
int Saida_Rele[] = { RELE1, RELE2, RELE3, RELE4, RELE5, RELE6, RELE7, RELE8, RELE9, RELE10, RELE11, RELE12, RELE13, RELE14, RELE15, RELE16};
#define MAX_RELE (sizeof(Saida_Rele) / sizeof(Saida_Rele[1]))
#define RELE_DESLIGADO 1
#define RELE_LIGADO 0
//===============================================================
void Saida_Aciona_Sequencialmente()
// Aciona sequencialmente todos reles sequencialente para teste
{ int i;
Serial.println("Acionando sequencialmente os reles");
for (i= 0; i < MAX_RELE ; i++)
{ digitalWrite( Saida_Rele[i], RELE_LIGADO);
delay(200);
digitalWrite( Saida_Rele[i], RELE_DESLIGADO);
};
}
void Menu()
{
Serial.println("Menu");
Serial.println("S - Aciona sequencialmente todas saídas");
Serial.println("A-P Liga saída");
Serial.println("a-p Desiga saída");
Serial.println("Z Desiga todos");
Serial.println("1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16");
Serial.println("A B C D E F G H I J K L M N O P ");
}
//===============================================================
//===============================================================
//===============================================================
void setup()
{ int i;
pinMode(13, OUTPUT);
digitalWrite(13,1);
delay(1000);
digitalWrite(13,0);
Serial.begin(9600);
Serial.println("=======================\nCLP_Mega_v1.01");
Serial.print(MAX_RELE);
Serial.println(" Reles de saida");
for (i= 0; i < MAX_RELE ; i++) // Inicializa pinos de saída
{ digitalWrite( Saida_Rele[i], RELE_DESLIGADO); // Inicializa desligado
pinMode( Saida_Rele[i], OUTPUT);
};
Menu();
Saida_Aciona_Sequencialmente();
}
//===============================================================
//===============================================================
//===============================================================
void loop()
{ char Letra, k;
if (Serial.available())
{
Letra = Serial.read();
switch (Letra)
{
case 'm':
case 'M': Menu();
break;
case 's':
case 'S': Saida_Aciona_Sequencialmente();
break;
case 'z':
case 'Z': for (k= 0; k < MAX_RELE ; k++)
digitalWrite( Saida_Rele[k], RELE_DESLIGADO);
break;
};
if( Letra >= 'A' && Letra <= 'P')
{ digitalWrite( Saida_Rele[Letra - 'A'], RELE_LIGADO);
Serial.print("Liga saida ");
Serial.println( Letra - 'A' + 1);
};
if( Letra >= 'a' && Letra <= 'p')
{ digitalWrite( Saida_Rele[Letra - 'a'], RELE_DESLIGADO);
Serial.print("Desliga saida ");
Serial.println( Letra - 'a' + 1);
};
}
delay(100);
}