Ir ao conteúdo
  • Cadastre-se

Leonardo C. Lima

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

Reputação

0
  1. Tranquilo Sérgio. Isso estava ocorrendo, pois a bomba estava ativando com nível LOW e desligando com nível HIGH, já fiz o reajuste nas demais pendências e deu tudo certo, obrigado!
  2. Está ativo na porta 3 do arduino, todas funções do código e que aparece no LCD estão funcionando, só a bomba que fica ligada, testei com outro código e sem fazer o loop e ela permanece ligada, o que pode ser?
  3. Boa tarde pessoal, Fiz o teste desse sistema no proteus e parece ter funcionado, mas ao montar, o relé permanece ligando a bomba, será problema no código ou nessa montagem de circuito? #include <LiquidCrystal.h> #include <SPI.h> int BOMBA = 3; int BUZZER = 4; int LedVerde = 5; int LedAmarelo = 6; int LedVermelho = 7; int SENSOR_CAIXA1 = A0; int SENSOR_CAIXA2 = A1; int SENSOR_RESERVATORIO1 = A2; int SENSOR_RESERVATORIO2 = A3; double cont = 0; LiquidCrystal lcd(8,9,10,11,12,13); void setup() { pinMode(LedVermelho,OUTPUT); pinMode(LedAmarelo,OUTPUT); pinMode(SENSOR_CAIXA1,INPUT); pinMode(SENSOR_CAIXA2,INPUT); pinMode(SENSOR_RESERVATORIO1,INPUT); pinMode(SENSOR_RESERVATORIO2,INPUT); pinMode(BOMBA,OUTPUT); pinMode(LedVerde,OUTPUT); pinMode(BUZZER,OUTPUT); lcd.begin(16, 2); delay(100); } void EscreverLCD() { // Escrever na primeira linha do LCD. lcd.clear(); lcd.setCursor(0,0); } void ModuloALOFF() { // Módulo de alerta desligado. digitalWrite(LedVerde,LOW); digitalWrite(LedAmarelo,LOW); digitalWrite(LedVermelho,LOW); digitalWrite(BUZZER,LOW); } void ModuloALVERDE(){ // Módulo de alerta com bomba com apenas o LED verde on. digitalWrite(LedVerde,HIGH); digitalWrite(LedAmarelo,LOW); digitalWrite(LedVermelho,LOW); digitalWrite(BUZZER,LOW); digitalWrite(BOMBA,LOW); } void ModuloALVER(){ // Módulo de alerta com bomba com apenas o LED vermelho on. digitalWrite(LedVerde,LOW); digitalWrite(LedAmarelo,LOW); digitalWrite(LedVermelho,HIGH); digitalWrite(BUZZER,LOW); digitalWrite(BOMBA,LOW); } void CaixaCheia() { // Caixa cheia. if (digitalRead(SENSOR_CAIXA2)==HIGH) { // Condição para ativamento do LED VERDE e caixa de texto no display LCD: "Caixa cheia". ModuloALVERDE(); EscreverLCD(); lcd.print("Caixa cheia"); delay(2000); } } void CaixaVazia(){ // Caixa vazia if( digitalRead(SENSOR_CAIXA2)==LOW && digitalRead(SENSOR_CAIXA1)==LOW ){ EscreverLCD(); lcd.print("Caixa vazia"); } } void TempoReabastecido(){ // Indica o tempo final de reabastecimento da caixa completa. for(;;) { delay(1000); cont = cont +1; if( digitalRead(SENSOR_CAIXA2)==HIGH && digitalRead(SENSOR_CAIXA1)==HIGH ){ // Condição que indica o tempo da caixa reabastecida completamente. ModuloALVERDE(); cont = cont/60; EscreverLCD(); lcd.print("C. Reabastecida"); lcd.setCursor(0,1); lcd.print("tempo: "); lcd.print(cont); lcd.print(" min"); delay(1000); break; } if( digitalRead(SENSOR_RESERVATORIO1)==LOW) { // Condição que para o reabastecimento. ModuloALVER(); EscreverLCD(); lcd.print("Reserva Vazia"); delay(1000); break; } } } void Reabastecer() { // Ativa a bomba para reabastecer EscreverLCD(); lcd.print("Reabastecendo..."); digitalWrite(LedAmarelo,HIGH); digitalWrite(BOMBA,HIGH); digitalWrite(BUZZER,HIGH); digitalWrite(LedVerde,LOW); digitalWrite(LedVermelho,LOW); } void AbastecerCaixa(){ // Liga a bomba para abastecer a caixa. cont = 0; if( digitalRead(SENSOR_RESERVATORIO2)==HIGH){ Reabastecer(); TempoReabastecido(); } } void VerificarNivel() { // Verifica o nivel do reservatorio e da caixa informando no display LCD. CaixaCheia(); CaixaVazia(); if (digitalRead(SENSOR_RESERVATORIO2)==HIGH) { // Condição para caixa de texto no display LCD: "Reservatorio Max". EscreverLCD(); lcd.print("Reservatorio Max"); } else if ((digitalRead(SENSOR_RESERVATORIO2)==LOW) && digitalRead(SENSOR_RESERVATORIO1)==HIGH) { // Condição para caixa de texto no display LCD: "Reservatorio Min". EscreverLCD(); lcd.print("Reservatorio Min"); } delay(1000); } void VerificaSensores() { // Verifica todos os sensores e se é necessário reabastecer. VerificarNivel(); if( digitalRead(SENSOR_RESERVATORIO1)==LOW){ // Condição que indica que a reserva está vazia. ModuloALVER(); EscreverLCD(); lcd.print("Reserva Vazia"); delay(2000); } else { if( digitalRead(SENSOR_CAIXA2)==LOW && digitalRead(SENSOR_CAIXA1)==LOW ){ // Condição que leva a outra função para o abastecimento caso a caixa esteja vazia. ModuloALOFF(); EscreverLCD(); lcd.print("Caixa vazia"); AbastecerCaixa(); } else if (digitalRead(SENSOR_CAIXA2)==HIGH && digitalRead(SENSOR_RESERVATORIO2)==HIGH) { // Condição que verifica os sensores máximos da caixa e do reservatório e se estiverem em nível alto, sistema estará estável ModuloALVERDE(); EscreverLCD(); lcd.print("Sistema Estavel"); } else if (digitalRead(SENSOR_CAIXA2)==LOW) { // Condição para verificar se a caixa está cheia e se é póssivel reabastecer. cont = 0; Reabastecer(); TempoReabastecido(); } delay(3000); } } void loop() { // Faz o loop do programa verificando sempre pela função verificaSensores. VerificaSensores(); delay(100); }
  4. Boa tarde pessoal, Fiz o teste desse sistema no proteus e parece ter funcionado, mas ao montar, o relé permanece ligando a bomba, será problema no código ou nessa montagem de circuito? #include <LiquidCrystal.h> #include <SPI.h> int BOMBA = 3; int BUZZER = 4; int LedVerde = 5; int LedAmarelo = 6; int LedVermelho = 7; int SENSOR_CAIXA1 = A0; int SENSOR_CAIXA2 = A1; int SENSOR_RESERVATORIO1 = A2; int SENSOR_RESERVATORIO2 = A3; double cont = 0; LiquidCrystal lcd(8,9,10,11,12,13); void setup() { pinMode(LedVermelho,OUTPUT); pinMode(LedAmarelo,OUTPUT); pinMode(SENSOR_CAIXA1,INPUT); pinMode(SENSOR_CAIXA2,INPUT); pinMode(SENSOR_RESERVATORIO1,INPUT); pinMode(SENSOR_RESERVATORIO2,INPUT); pinMode(BOMBA,OUTPUT); pinMode(LedVerde,OUTPUT); pinMode(BUZZER,OUTPUT); lcd.begin(16, 2); delay(100); } void EscreverLCD() { // Escrever na primeira linha do LCD. lcd.clear(); lcd.setCursor(0,0); } void ModuloALOFF() { // Módulo de alerta desligado. digitalWrite(LedVerde,LOW); digitalWrite(LedAmarelo,LOW); digitalWrite(LedVermelho,LOW); digitalWrite(BUZZER,LOW); } void ModuloALVERDE(){ // Módulo de alerta com bomba com apenas o LED verde on. digitalWrite(LedVerde,HIGH); digitalWrite(LedAmarelo,LOW); digitalWrite(LedVermelho,LOW); digitalWrite(BUZZER,LOW); digitalWrite(BOMBA,LOW); } void ModuloALVER(){ // Módulo de alerta com bomba com apenas o LED vermelho on. digitalWrite(LedVerde,LOW); digitalWrite(LedAmarelo,LOW); digitalWrite(LedVermelho,HIGH); digitalWrite(BUZZER,LOW); digitalWrite(BOMBA,LOW); } void CaixaCheia() { // Caixa cheia. if (digitalRead(SENSOR_CAIXA2)==HIGH) { // Condição para ativamento do LED VERDE e caixa de texto no display LCD: "Caixa cheia". ModuloALVERDE(); EscreverLCD(); lcd.print("Caixa cheia"); delay(2000); } } void CaixaVazia(){ // Caixa vazia if( digitalRead(SENSOR_CAIXA2)==LOW && digitalRead(SENSOR_CAIXA1)==LOW ){ EscreverLCD(); lcd.print("Caixa vazia"); } } void TempoReabastecido(){ // Indica o tempo final de reabastecimento da caixa completa. for(;;) { delay(1000); cont = cont +1; if( digitalRead(SENSOR_CAIXA2)==HIGH && digitalRead(SENSOR_CAIXA1)==HIGH ){ // Condição que indica o tempo da caixa reabastecida completamente. ModuloALVERDE(); cont = cont/60; EscreverLCD(); lcd.print("C. Reabastecida"); lcd.setCursor(0,1); lcd.print("tempo: "); lcd.print(cont); lcd.print(" min"); delay(1000); break; } if( digitalRead(SENSOR_RESERVATORIO1)==LOW) { // Condição que para o reabastecimento. ModuloALVER(); EscreverLCD(); lcd.print("Reserva Vazia"); delay(1000); break; } } } void Reabastecer() { // Ativa a bomba para reabastecer EscreverLCD(); lcd.print("Reabastecendo..."); digitalWrite(LedAmarelo,HIGH); digitalWrite(BOMBA,HIGH); digitalWrite(BUZZER,HIGH); digitalWrite(LedVerde,LOW); digitalWrite(LedVermelho,LOW); } void AbastecerCaixa(){ // Liga a bomba para abastecer a caixa. cont = 0; if( digitalRead(SENSOR_RESERVATORIO2)==HIGH){ Reabastecer(); TempoReabastecido(); } } void VerificarNivel() { // Verifica o nivel do reservatorio e da caixa informando no display LCD. CaixaCheia(); CaixaVazia(); if (digitalRead(SENSOR_RESERVATORIO2)==HIGH) { // Condição para caixa de texto no display LCD: "Reservatorio Max". EscreverLCD(); lcd.print("Reservatorio Max"); } else if ((digitalRead(SENSOR_RESERVATORIO2)==LOW) && digitalRead(SENSOR_RESERVATORIO1)==HIGH) { // Condição para caixa de texto no display LCD: "Reservatorio Min". EscreverLCD(); lcd.print("Reservatorio Min"); } delay(1000); } void VerificaSensores() { // Verifica todos os sensores e se é necessário reabastecer. VerificarNivel(); if( digitalRead(SENSOR_RESERVATORIO1)==LOW){ // Condição que indica que a reserva está vazia. ModuloALVER(); EscreverLCD(); lcd.print("Reserva Vazia"); delay(2000); } else { if( digitalRead(SENSOR_CAIXA2)==LOW && digitalRead(SENSOR_CAIXA1)==LOW ){ // Condição que leva a outra função para o abastecimento caso a caixa esteja vazia. ModuloALOFF(); EscreverLCD(); lcd.print("Caixa vazia"); AbastecerCaixa(); } else if (digitalRead(SENSOR_CAIXA2)==HIGH && digitalRead(SENSOR_RESERVATORIO2)==HIGH) { // Condição que verifica os sensores máximos da caixa e do reservatório e se estiverem em nível alto, sistema estará estável ModuloALVERDE(); EscreverLCD(); lcd.print("Sistema Estavel"); } else if (digitalRead(SENSOR_CAIXA2)==LOW) { // Condição para verificar se a caixa está cheia e se é póssivel reabastecer. cont = 0; Reabastecer(); TempoReabastecido(); } delay(3000); } } void loop() { // Faz o loop do programa verificando sempre pela função verificaSensores. VerificaSensores(); delay(100); }

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...