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