/*
Projeto: Contador de peças
Primeiro Estágio - Princípio de Funcionamento do Sensor
Sensor de Proximidade trabalhando na Lógica Inversa
Cliente: SENAI - Timbó
Programador: Andersdon Wilvert
Data: 09/12/2023 - Versão: 1.0
*/
// Declaração das Constantes
#define Sensor 8 // Define a localização da porta do Sensor
#define Led1 6 // Define a localização da porta do Led indicador de peças
#define L_Cx1 2 // Define a localização do Led da caixa 1
#define L_Cx2 3 // Define a localização do Led da caixa 2
#define L_Cx3 4 // Define a localização do Led da caixa 3
#define Tempo 50 // Define o tempo de equalização do sinal
#define Quant_Maxima 12 // Define a quantidade máxima de peças a serem contadas
#define Led_aceso 5000 // Define o tempo que o led indicador ficará aceso
// Declaração das Variáveis
int Contador = 0; // Variável que irá armazenar a quantidade de peças
bool Valor_Sensor = LOW; // Variável que irá armazenar o valor lido do Sensor
bool Seta_Sensor = LOW; // Variável que identifica a passagem da peça
int Caixa = 1; // Variável que identifica a caixa
void setup() // Inicializo o Sistema
{
pinMode(Sensor, INPUT); // Defino o Sensor como entrada
pinMode(Led1, OUTPUT); // Defino o Led de indicação de peça com Saída
pinMode(L_Cx1, OUTPUT); // Defino o Led de indicação da Caixa 1
pinMode(L_Cx2, OUTPUT); // Defino o Led de indicação da Caixa 2
pinMode(L_Cx3, OUTPUT); // Defino o Led de indicação da Caixa 3
Serial.begin(9600); // Inicializa o monitor serial com 9600 bps
}
void loop() // Programação em loop
{
Valor_Sensor = digitalRead(Sensor); // Carrega o valor lido do Sensor
delay(Tempo); // Espera equalizar o sinal
digitalWrite(Led1,!Valor_Sensor); // Inverte o sinal do Sensor e envia para o Led
if(Valor_Sensor == LOW) // Testa se tem alguma peça no Sensor
{
Seta_Sensor = HIGH; // Sim, então identifica a peça
}
if(Valor_Sensor == HIGH && Seta_Sensor == HIGH)
{
Contador = Contador + 1; // Ativa acréscimo do contador
Seta_Sensor = LOW; // Identifica que a peça saiu
Serial.print(" Quantidade de Produtos = "); // Escreve o texto
Serial.println(Contador); // Escreve o valor contido em Contador
}
// --------------------------------- Enchendo a Caixa 1 ---------------------------------
if(Contador >= Quant_Maxima && Caixa == 1)
{
digitalWrite(L_Cx1, HIGH); // Acende led indicador caixa 1
Contador = 0; // Inicializa Contador
Serial.print(" Número da Caixa = "); // Escreve o texto
Serial.println(Caixa); // Escreve o valor contido em Contador
Serial.println(" CAIXA 1 COMPLETA "); // Escreve o texto
Caixa = 2; // Defino caixa 2
}
// --------------------------------- Enchendo a Caixa 2 ---------------------------------
if(Contador >= Quant_Maxima && Caixa == 2)
{
digitalWrite(L_Cx2, HIGH); // Acende led indicador caixa 1
Contador = 0; // Inicializa Contador
Serial.print(" Número da Caixa = "); // Escreve o texto
Serial.println(Caixa); // Escreve o valor contido em Contador
Serial.println(" CAIXA 2 COMPLETA "); // Escreve o texto
Caixa = 3; // Defino caixa 2
}
// --------------------------------- Enchendo a Caixa 3 ---------------------------------
if(Contador >= Quant_Maxima && Caixa == 3)
{
digitalWrite(L_Cx3, HIGH); // Acende led indicador caixa 1
Contador = 0; // Inicializa Contador
Serial.print(" Número da Caixa = "); // Escreve o texto
Serial.println(Caixa); // Escreve o valor contido em Contador
Serial.println(" CAIXA 3 COMPLETA "); // Escreve o texto
Caixa = 4; // Defino caixa 2
}
// --------------------------------- Inicializando o sistema ---------------------------------
if(Caixa == 4)
{
digitalWrite(L_Cx1, LOW); // Apagar led indicador caixa 1
digitalWrite(L_Cx2, LOW); // Apagar led indicador caixa 1
digitalWrite(L_Cx3, LOW); // Apagar led indicador caixa 1
Contador = 0; // Inicializa Contador
Serial.println(" RESETA O SISTEMA "); // Escreve o texto
Caixa = 1; // Defino caixa 1
delay(Led_aceso); // Tempo de Reset
}
}
// FIM DA PROGRAMAÇÃO