Fala galera, 

Estou criando um projeto com este sensor e esta ocorrendo o seguinte: Utilizo o sensor para medir a distancia e com ela, efetuar uma rotina. Eu fiz as ligações com jumpers na protoboard e funcionou normalmente, só que eu preciso que o sensor fique a uma distancia de uns 5m do Arduino, então eu usei um cabo de rede, utilizei 4 fios do cabo, porem não funciona corretamente, penso que pode ser por conta do comprimento do cabo. Ai fiz uns testes e cheguei a conclusão que é no pino GND que esta ocorrendo o problema, porque eu testei um por um, usei o Vcc, Trig e Echo no cabo de rede e o GND no protoboard com um jumper e funcionou! Mas quando eu tiro o jumper e ligo no GND do cabo de rede não funciona. Da a entender que somente o pino GND não suporte um fio longo. Alguem pode me ajudar com esse fato?

Segue o código:


#include <LiquidCrystal.h>


//--> CONTROLE DE NÍVEL DE CAIXA D´AGUA <--//
//-------------------------------------------------//

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //=> DEFINE OS PINOS DO DISPLAY.

int led1 = A0; //-> LED VERDE ACESO IGUAL E ACIMA DE 50% DE ÁGUA. -----> NÍVEL ALTO.
int led2 = A1; //-> LED AMARELO ACESO DE 30% ATÉ 50% DE ÁGUA. -----> NÍVEL ACEITÁVEL.
//-> LED AMARELO PISCANDO DE 20% E 30% DE ÁGUA. -----> NÍVEL MÉDIO.
int led3 = A2; //-> LED VERMELHO ACESO DE 10% E 20% DE ÁGUA. -----> NÍVEL BAIXO.
//-> LED VERMELHO PISCANDO IGUAL OU ABAIXO DE 10% DE ÁGUA. -----> NÍVEL CRÍTICO.

int trig = 6; //-> DEFINE O PINO 6 COMO TRIGGER.
int echo = 7; //-> DEFINE OPINO 7 COMO ECHO.

int tempoDelay = 2000; //-> TEMPO DE INTERVALO.


void setup() {
lcd.begin(16, 2);
Serial.begin(9600);

pinMode(trig, OUTPUT);
pinMode(echo, INPUT);

pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}


void loop() {

digitalWrite(trig, 0);
delayMicroseconds(2);
digitalWrite(trig, 1);
delayMicroseconds(10);
digitalWrite(trig, 0);

long duration = pulseIn(echo, 1);
long distancia = duration / 29 / 2;



long CONVcmMsec = map(distancia,0,63,99,0);
long CONVlitros = map(distancia,0,63,2300,0);
long CONValtura = map(distancia,0,63,63,0);

//-> INFORMAÇÕES NA SERIAL - ANÁLISE DOS DADOS <-//

Serial.print(" Nivel: ");
Serial.print(CONVcmMsec);
Serial.print(" % de agua");
Serial.println();
Serial.print(" Quanti ");
Serial.print(CONVlitros);
Serial.print(" Litros ");
Serial.println();
Serial.print(" Altura: ");
Serial.print(CONValtura);
Serial.print(" CM ");
Serial.println();
Serial.print(" ------------------------------------------------ ");
Serial.println();

if(CONVcmMsec <= 0){
lcd.clear(); 
}

else{

//-> EXIBIÇÃO DO NÍVEL NO DISPLAY <-//

lcd.setCursor(3,0);
lcd.print("Nivel:");
lcd.setCursor(10,0);
lcd.print(CONVcmMsec);
lcd.setCursor(12,0);
lcd.print("%");

//-> EXIBIÇÃO DO VOLUME NO DISPLAY <-//

lcd.setCursor(2,1);
lcd.print("Litros:");
lcd.setCursor(10,1);
lcd.print(CONVlitros); 
}

//-> ÁGUA EM NÍVEL ALTO <-//

if(CONVcmMsec > 50){
digitalWrite(led1, 1);
digitalWrite(led2, 0);
digitalWrite(led3, 0);
delay(tempoDelay);
}

//-> ÁGUA EM NÍVEL ACEITÁVEL <-//

if(CONVcmMsec > 30 && CONVcmMsec <= 50){
digitalWrite(led1, 0);
digitalWrite(led2, 1);
digitalWrite(led3, 0);
delay(tempoDelay);
}

//-> ÁGUA EM NÍVEL MÉDIO <-//

if(CONVcmMsec > 20 && CONVcmMsec <= 30){
digitalWrite(led1, 0);
digitalWrite(led3, 0);
digitalWrite(led2, 1);
delay(tempoDelay);
digitalWrite(led2, 0);
delay(tempoDelay);
}

//-> ÁGUA EM NÍVEL BAIXO <-//

if(CONVcmMsec > 10 && CONVcmMsec <= 20){
digitalWrite(led1, 0);
digitalWrite(led2, 0);
digitalWrite(led3, 1);
delay(tempoDelay);
}

//-> ÁGUA EM NÍVEL CRÍTICO <-//

if(CONVcmMsec <= 10){
digitalWrite(led1, 0);
digitalWrite(led2, 0);
digitalWrite(led3, 1);
delay(tempoDelay);
digitalWrite(led3, 0);
delay(tempoDelay);
}


}

Exibições: 485

Responder esta

Respostas a este tópico

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço