Segue abaixo toda a transcrição da linha de programação utilizada no projeto:
/*
Todo programa esta na ordem:
1° presença
2º Corrente 5A
3º Corrente 20A
4° Vidro
*/
// presença
int led_presenca = 3; //Declara Led que indica presenca no pino 3
int pinopir = 2; // Declara entrada sensor de presenca no pino 1
int acionamento; // Declara variavel auxiliar do sensor de presenca
// Corrente 5A
int sensorPin =A0;
int alimentacao = 11;
int led=12;
int sensorValue_aux = 0;
float sensorValue = 0;
float currentValue = 0;
float voltsporUnidade = 0.004887586;// 5%1023
// Corrente 20A
int sensorPin_1 =A1;
int alimentacao_1 = 10;
int led_1=13;
int sensorValue_1_aux_1 = 4;
float sensorValue_1 = 4;
float currentValue_1 = 4;
float voltsporUnidade_1 = 0.004887586;// 5%1023
//Vidro
int vidro=5;
int motor=6;
void setup() {
//presença
pinMode(led_presenca, OUTPUT); //Define led_presenca como saida
pinMode(pinopir, INPUT); // Defini pinopir como entrada
digitalWrite(led_presenca, LOW);
digitalWrite(pinopir,LOW);
digitalWrite(acionamento,LOW);
//Corrente 5A
Serial.begin(9600);
pinMode(sensorPin, INPUT);
pinMode(led,OUTPUT);
pinMode(alimentacao,OUTPUT);
digitalWrite(led,HIGH);
digitalWrite(alimentacao,HIGH);
//Corrente 20A
pinMode(sensorPin_1, INPUT);
pinMode(led_1,OUTPUT);
pinMode(alimentacao_1,OUTPUT);
digitalWrite(led_1,HIGH);
digitalWrite(alimentacao_1,HIGH);
//Vidro
pinMode(vidro,OUTPUT);
pinMode(motor,OUTPUT);
digitalWrite(vidro,HIGH);
digitalWrite(motor,LOW);
}
void loop() {
// put your main code here, to run repeatedly:
acionamento=digitalRead(pinopir); // Define acionamento como leitura do sensor de presenca
if (acionamento==HIGH) // Se sensor nao indica presenca, executa a sequencia abaixo
{
digitalWrite(vidro,HIGH);
digitalWrite(motor,LOW);
digitalWrite(led_1,HIGH);
digitalWrite(led,HIGH);
digitalWrite(led_presenca, HIGH);
delay(5000);
}
else{
acs();
acs_1();
reset();
vidros();
digitalWrite(led_presenca, LOW);
}
}
/*
Ligar o Acs712 Sempre no final do circuito (delisgar o terra e colocar o ACS)
*/
void acs()
{
for(int i=100; i>0; i--){
sensorValue_aux = (analogRead(sensorPin) -511); // le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é (1023)vcc/2 para corrente =0
sensorValue += pow(sensorValue_aux,2); // somam os quadrados das leituras.
}
sensorValue = (sqrt(sensorValue/ 100)) * voltsporUnidade; // finaliza o calculo da méida quadratica e ajusta o valor lido para volts
currentValue = (sensorValue/.5); // calcula a corrente considerando a sensibilidade do sernsor (185 mV por amper)
// mostra o resultado no terminal
Serial.print(currentValue,3);
Serial.print(" A \n" );
sensorValue =0;
delay(1000); // Delay necessario para leitura da corrente (não se pode tirar este delay)
if (currentValue > .26 )
{
digitalWrite(led,LOW);
delay(100);
}
else
{
digitalWrite(led,LOW);
delay(100);
}
}
void acs_1()
{
for(int i=100; i>0; i--){
sensorValue_1_aux_1 = (analogRead(sensorPin_1) -511); // le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é (1023)vcc/2 para corrente =0
sensorValue_1 += pow(sensorValue_1_aux_1,2); // somam os quadrados das leituras.
}
sensorValue_1 = (sqrt(sensorValue_1/ 100)) * voltsporUnidade_1; // finaliza o calculo da méida quadratica e ajusta o valor lido para volts
currentValue_1 = (sensorValue_1/.125);
// mostra o resultado no terminal
Serial.print(currentValue_1,3);
Serial.print(" A \n" );
sensorValue_1 =4;
delay(1000); // Delay necessario para leitura da corrente (não se pode tirar este delay)
if (currentValue_1 > 1 )
{
digitalWrite(led_1,LOW);
delay(100);
}
else
{
digitalWrite(led_1,LOW);
delay(100);
}
}
void vidros()
{
if(digitalRead(vidro)==HIGH && digitalRead(motor) == LOW)
{
digitalWrite(vidro,LOW);
digitalWrite(motor,HIGH);
delay(3000);
digitalWrite(motor,LOW);
}
}
void reset()
{
digitalWrite(acionamento,LOW);
digitalWrite(led_presenca,LOW);
digitalWrite(led,LOW);
digitalWrite(led_1,LOW);
}
Nenhum comentário:
Postar um comentário