• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
pomiar odległości
#1
Czy może ktoś mi powiedzieć dlaczego za pomocą tego programu nie mogę zmierzyć odległości powyżej 1m ?
Pokazuje 99cm a powyżej pokazuje w cm ale co 10cm , czyli jak mam np. 120cm odległość to pokaże 12cm. Gdzie jest błąd w programie ?
Kod:
#include <Wire.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int TRIG = 7;
int ECHO = 8;
int response = 0, distance = 0, level = 0;

void setup()
{
 lcd.begin(16, 2);
 pinMode(TRIG, OUTPUT);
 pinMode(ECHO, INPUT);
}

void loop()
{
 digitalWrite(TRIG, HIGH);
 delayMicroseconds(10);
 digitalWrite(TRIG, LOW);
 response = pulseIn(ECHO, HIGH);
 distance = response / 58;
 level = distance / 2;

 lcd.setCursor(0, 0);
 lcd.print("DISTANCE:   ");
 lcd.setCursor(10, 0);

 {
   lcd.print(distance);
   lcd.setCursor(12, 0);
   lcd.print(" cm ");
 }
 lcd.setCursor(0, 1);
 lcd.print("                ");

 delay(10 * distance);

}
 
Odpowiedź
#2
Zerknij na poniższe moje dwa spostrzeżenia...

Pierwsze spostrzeżenie:

delay(10 * distance);

Nie za bardzo rozumiem po co taki zapis w Twoim programie?
Nie ma co prawda bezpośredniego związku z Twoim problemem ale może być przyczyną innych problemów z... czasem opóźnienia.
Ustawiasz bowiem opóźnienie, które zależne jest od odczytanej wartości 'distance'.
Jeżeli tak ma być to OK Smile

Drugie spostrzeżenie:

lcd.setCursor(12, 0);
lcd.print(" cm ");


Ustawiasz w pierwszej linijce 'na sztywno' miejsce gdzie ma być wyświetlany napis 'cm'.
Sprawdzałeś czy przypadkiem nie zamazujesz sobie tej właśnie poszukiwanej przez Ciebie ostatniej cyfry z liczby którą wyświetlasz?

Pozdrawiam,
ANT
Jeżeli pomogłem, to poproszę o punkt reputacji Big Grin
 
Odpowiedź
#3
zamazuje na 10,0 ma wynik a na 12,0 ma cm więc ma 2 miejsca na wynik
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#4
teraz pokazuje dobrze z tym że jest nie dokładny przy małych odległościach. Kiedy do czujnika mam jakieś 10cm to on pokazuje 6 a kiedy mam do czujnika jakieś 4cm to on pokazuje 1cm . To opóźnienie usunąłem
 
Odpowiedź
#5
Na tym kodzie będzie tak działało użyj poniższej biblioteki i powinno być lepiej

http://playground.arduino.cc/Code/NewPing
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości