// C++ code
//declarando variáveis
int MOTOR_A = A4; // Declarando saida para acionar motor A
int MOTOR_B = A5; // Declarando saida para acionar motor B
int SENSOR_1 = D2; // Declarando entrada para os sensores de cisterna
int SENSOR_2 = A0; // Declarando entrada para os sensores de corrente
int LED_AZUL = D4; // Declara porta que ascende led Azul
int LED_VERDE = D5; // Declara porta que ascende led Verde
int LED_VERMELHO = D6; // Declara porta que ascende led Vermelho
// declarando contadores
float In; // Corrente do circuito
bool lig; // Marcador liga e desliga
bool cont1 = true; // Contador 1 indica qual motor vai ser ligado 0- motor 2, 1 - motor 1
int cont2 = 0; // Contador 2 indica se ha algum defeito no circuito
void acionar_led(int led)
{
// apaga todos os leds
digitalWrite(LED_AZUL, LOW);
digitalWrite(LED_VERDE, LOW);
digitalWrite(LED_VERMELHO, LOW);
// led indicando normalidade sem motor operando
digitalWrite(led, HIGH);
delay(500);
}
void setup()
{
pinMode(MOTOR_A, OUTPUT); // Declarando a saída do motor A
pinMode(MOTOR_B, OUTPUT); // Declarando a saida do motor B
pinMode(SENSOR_1, INPUT); // Declarando a entrada do sensor de sisterna
pinMode(SENSOR_2, INPUT); // Declarando a entrada do sensor de corrente
pinMode (LED_AZUL,OUTPUT); // Declarando saidas LED AZUL
pinMode (LED_VERDE,OUTPUT); // Declarando saidas LED VERDE
pinMode (LED_VERMELHO,OUTPUT); // Declarando saidas LED VERMELHO
// Configuração de controle
Serial.begin(9600);
}
void loop()
{
In = 0.066*analogRead(SENSOR_2);
// apaga os leds
delay(200);
if(In>35) // Identifica rotor bloqueado e troca o motor
{
cont1 = !cont1;
cont2 = cont2+1;
}
if(digitalRead(SENSOR_1)&&(cont2<3)) // identifica a operação do sen
{
acionar_led(LED_VERDE); // sinaliza a operação do motor
if(cont1) // muda para motor B
{
digitalWrite(MOTOR_B, HIGH);
digitalWrite(MOTOR_A, LOW);
}
else // muda para motor A
{
digitalWrite(MOTOR_A, HIGH);
digitalWrite(MOTOR_B, LOW);
}
}
if((!digitalRead(SENSOR_1))) // mecanismo desativa quando o sensor esta desativado
{
acionar_led(LED_AZUL); // Aciona o led azul indicando que o sistema esta ligado
// Desliga os motores
digitalWrite(MOTOR_A, LOW);
digitalWrite(MOTOR_B, LOW);
cont1= !cont1; // muda-se o motor a ser operado em cada acionamento
cont2 = 0; // Zera-se o contador de erro
}
if((cont2>2)) // mecanismo de desligamento em caso de falha
{
acionar_led(LED_VERMELHO); // Aciona o led vermelho indicando erro
digitalWrite(MOTOR_A, LOW);
digitalWrite(MOTOR_B, LOW);
cont1= !cont1; // muda-se o motor a ser operado em cada acionamento
}
// Acionamento do led
// exibe as variáveis
Serial.print("Sensor 1 =");
Serial.println(digitalRead(SENSOR_1));
Serial.print("Sensor 2 =");
Serial.println(In);
}
Loading
st-nucleo-l031k6
st-nucleo-l031k6