• 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
Problem z programem Radar
#1
Cześć,

Chce zrobić radar 3D na podstawie który został zamieszczony na stronie http://howtomechatronics.com.
Kod:
// Includes the Servo library
#include <Servo.h>
// Defines Tirg and Echo pins of the Ultrasonic Sensor
const int trigPin = 10;
const int echoPin = 11;
// Variables for the duration and the distance
long duration;
int distance;
Servo myServo; // Creates a servo object for controlling the servo motor
void setup() {
 pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
 pinMode(echoPin, INPUT); // Sets the echoPin as an Input
 Serial.begin(9600);
 myServo.attach(12); // Defines on which pin is the servo motor attached
}
void loop() {
 // rotates the servo motor from 15 to 165 degrees
 for(int i=15;i<=165;i++){  
 myServo.write(i);
 delay(30);
 distance = calculateDistance();// Calls a function for calculating the distance measured by the Ultrasonic sensor for each degree
 
 Serial.print(i); // Sends the current degree into the Serial Port
 Serial.print(","); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing
 Serial.print(distance); // Sends the distance value into the Serial Port
 Serial.print("."); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing
 }
 // Repeats the previous lines from 165 to 15 degrees
 for(int i=165;i>15;i--){  
 myServo.write(i);
 delay(30);
 distance = calculateDistance();
 Serial.print(i);
 Serial.print(",");
 Serial.print(distance);
 Serial.print(".");
 }
}
// Function for calculating the distance measured by the Ultrasonic sensor
int calculateDistance(){
 
 digitalWrite(trigPin, LOW);
 delayMicroseconds(2);
 // Sets the trigPin on HIGH state for 10 micro seconds
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH); // Reads the echoPin, returns the sound wave travel time in microseconds
 distance= duration*0.034/2;
 return distance;
}


Mój problem polega na tym że, wszystko działa poprawnie do momentu gdy jest wyłączona część kodu odpowiadająca za przeliczenie odległości, gdy chce dodać tą część kodu servo strasznie zwalnia i nie działa poprawnie.

Dodam że próbowałem zmieniać opóźnienie niestety nie przyniosło mi to pożądanych efektów.

Ma ktoś jakiś pomysł jak to rozwiązać?
 
Odpowiedź
#2
Jeżeli odczyt z hc04 jest poza zakresem jego pomiaru około 200 cm to dostaje czkawki i tu masz opóźnienie . Znajdź bibliotekę "newping" ona ten problem rozwiązuje i będzie ci to płynnie działało .
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#3
(01-10-2016, 19:55)JasQ napisał(a): Jeżeli odczyt z hc04 jest poza zakresem jego pomiaru około 200 cm to dostaje czkawki i tu masz opóźnienie . Znajdź bibliotekę "newping" ona ten problem rozwiązuje i będzie ci to płynnie działało .

Dziękuje bardzo zadziałało  Smile
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości