ola galera,

sou iniciante no arduino e peguei um projeto de um colega nosso de medir nivel de caixa d'agua, porem queria saber se alguém poderia me ajudar a inverter a logica.

ex.: ao aproximar o sensor mede 0%. teria como ao inves de medir 0% ele medir 100%.

para avisar que a caixa estar cheia.


// Projeto : Medidor de nivel com HC-SR04
//
// Criado Por Eduardo Pinheiro (edupinheiro.silva@gmail.com)

#include <LiquidCrystal.h> //Carrega a biblioteca LCD
LiquidCrystal lcd(9, 8, 5, 4, 3, 2); //Define os pinos que serão ligados ao LCD
/** Definindo nome e numero dos pinos **/
#define echoPin 7 // Pino 7 recebe o pulso do echo do Sensor 1
#define trigPin 6 // Pino 6 envia o pulso para gerar o echo do Sensor 1
int prfdde = 135; // profundidade da caixa (aqui vc coloca a pronfudidade
// da caixa em CM)
void setup()
{
/* Define os pinos como INPUT ou OUTPUT */
pinMode(echoPin, INPUT); // define o pino 7 como entrada (recebe)
pinMode(trigPin, OUTPUT); // define o pino 6 como saida (envia)
/* Inicializa LCD */
lcd.begin(16, 2); //inicia o lcd
Serial.begin(9600); //inicia a porta serial
}
void loop()
{
/* Rotina de funionamento para o Sensor Ultrasson 1 */
digitalWrite(trigPin, LOW); // seta o pino 6 com um pulso baixo "LOW"
delayMicroseconds(2); // delay de 2 microssegundos
digitalWrite(trigPin, HIGH); // seta o pino 6 com pulso de "HIGH"
delayMicroseconds(10); // delay de 10 microssegundos
digitalWrite(trigPin, LOW); // seta o pino 12 com pulso baixo novamente
long duration = pulseIn(echoPin,HIGH); // pulseIn lê o tempo entre a chamada e o pino entrar em high
long distancia = duration /58 / 2 ; // Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado// porque é o tempo de ida e volta do ultrassom
/* Calculo do percentual do nivel da caixa */
long nivel = distancia * 100 / prfdde; // variave nivel atribui o a valor da distancia e calcula
// o percentual de acordo com a prfdde
/* Motra na Serial monitor o nivel em % */
Serial.print("Nivel: ");
Serial.println(nivel);
/*** Interface do display ***/
lcd.clear();
lcd.print("Nivel: "); // Mostra a mensagem "Nivel:"
lcd.print(nivel); // Mostra o valor da variavel "distancia" em centímentros
lcd.print("%"); // Mostra o simbolo de porcentagem
delay(300); // Espera 0,3 segundo para fazer a leitura novamente
}

Exibições: 1457

Responder esta

Respostas a este tópico

Oi TC, boa noite.

Não é uma questão de inversão de lógica de um sensor, e sim simplesmente calculo matemático.

Você calcula o percentual nesta linha : long nivel = distancia * 100 / prfdde;  

Se medir 54 cm, terá  -->    54 * 100/ 135   =  40   40% de caixa vazia;

se medir 81 cm terá --->      81 * 100 / 135  =  60   60% de caixa vazia;

se medir 108 cm terá --->  108 * 100 / 135  =  80   80% de caixa vazia;

Agora faça a seguinte linha :   long nivel = 100-(distancia * 100 / prfdde); 

Se medir 54 cm, terá  -->  100-(54 * 100/ 135)     = 60   60% de caixa cheia;

se medir 81 cm terá --->    100-(81 * 100/ 135)     = 40  40% de caixa cheia;

se medir 108 cm terá --->  100-(108 * 100/ 135)   = 20   20% de caixa cheia;

Ok

Rui

ô tiago,

   Só pra avisar, até onde sei o sensor ultrasonico do arduino NÃO É A PROVA DÁGUA,   logo, mesmo que a água não tenha contato direto com ele,  dentro de uma caixa de água existem os vapores que podem mandar o sensor pra o espaço.

    Lembro que eu fiz um teste uma vez por pura brincadeira e ao que lembro funcionou,   eu passei uma pelicula de Teflon, daquelas que são usada pra roscas de canos,  sobre o sensor ultrasonico, e ele continuou respondendo.

   Como foi só uma brincadeira não levei muito a frente,  mas se você testar e der certo, pode ser sua salvação, pois o teflon isolaria o sensor.

    Testa ai e fala pra gente.

   Eu tentei trocenta coisas pra medir nível de caixa dágua,  acabei de rendendo aos sensores de nível comerciais,  eles funcionam, bem pacas e são baratinhos,  o problema é que ele é 0 ou 1.

Olá,

Talvez fique mais fácil usar a função map:

https://www.arduino.cc/en/Reference/Map

Boa sorte

galera muito obrigado! vocês são 1000!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço