Pessoal boa tarde!

Estou precisando de uma ajuda, preciso mudar o código para leitura de distancia com ultrassom HC 2R04 passando ele do retorno da leitura em polegada e centímetro que é o que vem no código para milímetro. Preciso ler uma distancia de até 150 mm ( distancia do sensor ao objeto da leitura) e a resposta apresentada seja 1500 mm.  Podem me ajudar?

//Programa : Medidor de distancia com HC-SR04

 #include <Ultrasonic.h>     //Carrega a biblioteca Ultrasonic
#include <LiquidCrystal.h>  //Carrega a biblioteca LCD

#define PINO_TRIGGER  13 //Define o pino do Arduino a ser utilizado com o pino Trigger do sensor
#define PINO_ECHO     10 //Define o pino do Arduino a ser utilizado com o pino Echo do sensor

Ultrasonic ultrasonic(PINO_TRIGGER, PINO_ECHO); //Inicializa o sensor ultrasonico
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Define os pinos que serão ligados ao LCD

void setup()
  {
  Serial.begin(9600); //Inicializa a serial
  lcd.begin(16,2); //Inicializa LCD
  lcd.clear();     //Limpa o LCD
  }

void loop()
  {
  float cmMsec, inMsec;

  long microsec = ultrasonic.timing();  //Le os dados do sensor, com o tempo de retorno do sinal

  cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM); //Calcula a distancia em centimetros
  inMsec = ultrasonic.convert(microsec, Ultrasonic::IN); //Calcula a distancia em polegadas
  
  //Apresenta os dados, em centimetros, no LCD e na Serial
  lcd.setCursor(0,0);
  lcd.print("Cent.: ");
  lcd.print("        ");
  lcd.setCursor(7,0);
  lcd.print(cmMsec);
  Serial.print("Cent: ");
  Serial.print(cmMsec);

  //Apresenta os dados, em polegadas, no LCD e na Serial  
  lcd.setCursor(0,1);
  lcd.print("Pol. : ");
  lcd.print("        ");
  lcd.setCursor(7,1);
  lcd.print(inMsec);
  Serial.print(", Pol. : ");
  Serial.println(inMsec);
  delay(1000);
}

Exibições: 5055

Responder esta

Respostas a este tópico

Eu usei esse:

/*
 HC-SR04 Ping distance sensor]
 VCC to arduino 5v GND to arduino GND
 Echo to Arduino pin 13 Trig to Arduino pin 12
 More info at: http://goo.gl/kJ8Gl
 */

#define trigPin 12
#define echoPin 13

void setup() {
  Serial.begin (9600); //inicia a porta serial
  pinMode(trigPin, OUTPUT); // define o pino 12 como saida (envia)
  pinMode(echoPin, INPUT); // define o pino 13 como entrada (recebe)
}

void loop()
{
  int duration, distance;
  digitalWrite(trigPin, HIGH); //seta o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
  delayMicroseconds(1000); // delay de 1 milissegundos
  digitalWrite(trigPin, LOW); //seta o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  if (distance >= 200 || distance <= 0){
    Serial.println("Fora de Alcance do sensor");
  }
  else {
    Serial.print(distance);
    Serial.println(" cm");
  }
  delay(500);
}

Valeu meu irmão mas ok está pegando realmente é como disse antes introduzir no código essa comparação ou seja ele vai ler um valor de 0 a 150mmm e apresentar na tela 0 a 1500 seria uma medição indireta. Mas valeu pela ajuda vou continuar tendo aqui. se encontrar algo me fale.

Obrigado!

 

//Programa : Medidor de distancia com HC-SR04

 #include <Ultrasonic.h>     //Carrega a biblioteca Ultrasonic
#include <LiquidCrystal.h>  //Carrega a biblioteca LCD

#define PINO_TRIGGER  13 //Define o pino do Arduino a ser utilizado com o pino Trigger do sensor
#define PINO_ECHO     10 //Define o pino do Arduino a ser utilizado com o pino Echo do sensor

Ultrasonic ultrasonic(PINO_TRIGGER, PINO_ECHO); //Inicializa o sensor ultrasonico
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Define os pinos que serão ligados ao LCD

void setup()
  {
  Serial.begin(9600); //Inicializa a serial
  lcd.begin(16,2); //Inicializa LCD
  lcd.clear();     //Limpa o LCD
  }

void loop()
  {
  float cmMsec, inMsec, MMsec;

  long microsec = ultrasonic.timing();  //Le os dados do sensor, com o tempo de retorno do sinal

  cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM); //Calcula a distancia em centimetros

  MMsec = cmMsec * 10; //multiplica o valro de centrimetros por 10, neste caso voce tem milimetros
  inMsec = ultrasonic.convert(microsec, Ultrasonic::IN); //Calcula a distancia em polegadas
  
  //Apresenta os dados, em Milimetros, no LCD e na Serial
  lcd.setCursor(0,0);
  lcd.print("Milim.: ");
  lcd.print("        ");
  lcd.setCursor(7,0);
  lcd.print(MMsec);
  Serial.print("Milim: ");
  Serial.print(MMsec);

  //Apresenta os dados, em polegadas, no LCD e na Serial  
  lcd.setCursor(0,1);
  lcd.print("Pol. : ");
  lcd.print("        ");
  lcd.setCursor(7,1);
  lcd.print(inMsec);
  Serial.print(", Pol. : ");
  Serial.println(inMsec);
  delay(1000);
}

Valeu meu irmão, vou testar o código que você fez, assim que testar te dou um retorno. Se precisar de algo e estiver ao meu alcance é só falar.

Obrigado!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço