Ir ao conteúdo
  • Cadastre-se

Leonardo Denega

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

1
  1. Bom Dia, recentemente comecei um projeto de envasamento para um cliente, no caso ele queria encher 4 garrafas ao mesmo tempo com determinada quantia do líquido, usando 4 sensores de fluxo de 3/4 (programa exemplo usado: https://www.usinainfo.com.br/blog/sensor-de-fluxo-de-agua-para-arduino-1-30-lmin/ ). No caso, fiz todo o programa funcional, mas como pude testar somente um sensor de cada vez em casa por conta da minha capacidade e espaço, não tinha certeza do resultado final. O meu problema foi que ao botar todos os sensores no lugar desejado, mesmo testando somente um por vez, estava dando conflito na contagem, gerando rotações até nos sensores que nao tinham líquido passando. #include "Buttonreset.h" #include "segmento.h" double vazaoSensor1; double vazaoSensor2; double vazaoSensor3; double vazaoSensor4; volatile int contador1; volatile int contador2; volatile int contador3; volatile int contador4; float acumuladoSensor1 = 0; float acumuladoSensor2 = 0; float acumuladoSensor3 = 0; float acumuladoSensor4 = 0; int fluxo1 = 18; int fluxo2 = 19; int fluxo3 = 20; int fluxo4 = 21; int rele1 = 8; int rele2 = 9; int rele3 = 10; int rele4 = 11; int rele5 = 12; int LED = 12; int PIN_BUTTONRESET = 6; int PIN_RELE1 = 8; int PIN_RELE2 = 9; int PIN_RELE3 = 10; int PIN_RELE4 = 11; #define SensorA 3 #define SensorB 2 int sensorA = 1, sensorB = 1; int nivelinicial = 0; void Sensor1 (); void Sensor2 (); void Sensor3 (); void Sensor4 (); void incpulso1 (); void incpulso2 (); void incpulso3 (); void incpulso4 (); float state = 0; float state2 = 0; float stateS1 = 0; float stateS2 = 0; float stateS3 = 0; float stateS4 = 0; int botao1 = 5; int botao5 = 7; int pressed1 = 0; int pressed5 = 0; Buttonreset buttonreset(PIN_BUTTONRESET); segmento Segmento(PIN_RELE1, PIN_RELE2, PIN_RELE3, PIN_RELE4); void setup () { pinMode(botao1, INPUT_PULLUP); pinMode(botao5, INPUT_PULLUP); pinMode(SensorA, INPUT); pinMode(SensorB, INPUT); pinMode(rele5, OUTPUT); pinMode(LED, OUTPUT); Serial.println("Nivel do Reservatorio"); Serial.println(); } void loop(){ pressed1 = digitalRead(botao1); pressed5 = digitalRead(botao5); Sensor1(); Sensor2(); Sensor3(); Sensor4(); contador1 = 0; contador2 = 0; contador3 = 0; contador4 = 0; sei(); delay(1000); cli(); Serial.begin(9600); int sensorA = digitalRead(SensorA); int sensorB = digitalRead(SensorB); Serial.println(acumuladoSensor1); Serial.println(acumuladoSensor2); Serial.println(acumuladoSensor3); Serial.println(acumuladoSensor4); Serial.println(state); Serial.println(state2); if ((sensorA == 1) && (sensorB == 1)) { Serial.println("Reservatorio Cheio"); digitalWrite(rele5, HIGH); } if ((sensorA == 0) && (sensorB == 1)) { Serial.println("Esvaziando"); digitalWrite(rele5, HIGH); } if ((sensorA == 0) && (sensorB == 0)) { Serial.println("Hora de Encher"); digitalWrite(rele5, LOW); } if ((sensorA == 1) && (sensorB == 0)) { Serial.println("ops, algo errado"); digitalWrite(rele5, HIGH); } if(state == 0){ digitalWrite (LED, LOW); }if((state == 1) || (state == 5)){ digitalWrite (LED, HIGH); } if (buttonreset.isPressed()){ acumuladoSensor1 = (acumuladoSensor1 * 0); acumuladoSensor2 = (acumuladoSensor2 * 0); acumuladoSensor3 = (acumuladoSensor3 * 0); acumuladoSensor4 = (acumuladoSensor4 * 0); Serial.println("Serial Reiniciado"); state = 0; Segmento.close(); } if ((pressed1 == LOW) && (state == 0)) { state = 1; Serial.println("1L iniciado"); Segmento.open(); } if ((pressed5 == LOW) && (state == 0)) { state = 5; Serial.println("5L iniciado"); Segmento.open(); } if (state == 1){ if (acumuladoSensor1 >= 0.95){ Serial.println("Garrafa 1 Cheia 1L"); digitalWrite(PIN_RELE1, LOW); stateS1 = 1; } if (acumuladoSensor2 >= 0.95){ Serial.println("Garrafa 2 Cheia 1L"); digitalWrite(PIN_RELE2, LOW); stateS2 = 1; } if (acumuladoSensor3 >= 0.95){ Serial.println("Garrafa 3 Cheia 1L"); digitalWrite(PIN_RELE3, LOW); stateS3 = 1; } if (acumuladoSensor2 >= 0.95){ Serial.println("Garrafa 4 Cheia 1L"); digitalWrite(PIN_RELE4, LOW); stateS4 = 1; } delay(1000); } if (state == 5){ if (acumuladoSensor1 >=2.0){ Serial.println("Garrafa 1 Cheia 5L"); digitalWrite(PIN_RELE1, HIGH); stateS1 = 1; } if (acumuladoSensor2 >=2.0){ Serial.println("Garrafa 2 Cheia 5L"); digitalWrite(PIN_RELE2, HIGH); stateS2 = 1; } if (acumuladoSensor3 >=2.0){ Serial.println("Garrafa 3 Cheia 5L"); digitalWrite(PIN_RELE3, HIGH); stateS3 = 1; } if (acumuladoSensor4 >=2.0){ Serial.println("Garrafa 4 Cheia 5L"); digitalWrite(PIN_RELE4, HIGH); stateS4 = 1; } delay(1000); } if((stateS1 == 1) && (stateS2 == 1) && (stateS3 == 1) && (stateS4 == 1)){ state = 0; Serial.println("Serial Reiniciado"); acumuladoSensor1 = (acumuladoSensor1 * 0); acumuladoSensor2 = (acumuladoSensor2 * 0); acumuladoSensor3 = (acumuladoSensor3 * 0); acumuladoSensor4 = (acumuladoSensor4 * 0); } } void Sensor1 (){ pinMode(fluxo1, INPUT); pinMode(rele1, OUTPUT); attachInterrupt(digitalPinToInterrupt(18), incpulso1, RISING); vazaoSensor1 = contador1 / 5.5; acumuladoSensor1 = acumuladoSensor1 + (vazaoSensor1 / 60); } void Sensor2 (){ pinMode(fluxo2, INPUT); pinMode(rele2, OUTPUT); attachInterrupt(digitalPinToInterrupt(19), incpulso2, RISING); vazaoSensor2 = contador2 / 5.5; acumuladoSensor2 = acumuladoSensor2 + (vazaoSensor2 / 60); } void Sensor3 (){ pinMode(fluxo3, INPUT); pinMode(rele3, OUTPUT); attachInterrupt(digitalPinToInterrupt(20), incpulso3, RISING); vazaoSensor3 = contador3 / 5.5; acumuladoSensor3 = acumuladoSensor3 + (vazaoSensor3 / 60); } void Sensor4 (){ pinMode(fluxo4, INPUT); pinMode(rele4, OUTPUT); attachInterrupt(digitalPinToInterrupt(21), incpulso4, RISING); vazaoSensor4 = contador4 / 5.5; acumuladoSensor4 = acumuladoSensor4 + (vazaoSensor4 / 60); } void incpulso1 () { contador1++; } void incpulso2 () { contador2++; } void incpulso3 () { contador3++; } void incpulso4 () { contador4++; } Essa é a programação principal do meu projeto, como sou iniciante no assunto programação peço que ignorem a minha desorganização (não consegui fazer o upload das ramificações de programa, mas o "segmento.h" se trata de um programa para abrir e fechar as valvulas e o "Buttonreset.h" seria somente o bot;ao para resetar valores). De antemão, agradeço a todos que disponibilizarem seu tempo para me ajudar.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!