Witam,
Mam mały problem, otóż podłączając serwonapęd ( TowerPro MG 966R ) do arduino oraz czujnik ( HC -SR04 ) chciałem żeby serwo
odpalało sie wtedy kiedy coś wykryje, teoretycznie w kodzie ograniczyłem go do 20 cm, ale pomimo tego po podłączeniu do zasilania i wgraniu programu serwo odpala sie praktycznie od razu a czujnik sobie nic z tego nie robi, sprawdzałem i zczytuje odległości poprawnie. Nie wiem co zrobić stanąłem w miejscu. Dlatego potrzebuje pomocy
Taki schemat znalazłem na pewnej stronie i według tego podłączałem układ
A tu kod który stosuje:
/*
echo = 3
trig = 4
servo = 5
*/
#include <Servo.h>
Servo myservo;
int first_angle = 100;
int second_angle = 50;
int detection_distance = 20;
int sw = 12;
int echoPin = 3;
int trigPin = 4;
void setup() {
myservo.attach(5);
myservo.write(first_angle);
pinMode(sw, INPUT_PULLUP);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop(){
digitalWrite(trigPin, LOW);
digitalWrite(echoPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
unsigned long duration = pulseIn(echoPin, HIGH);
float distance = duration / 29.0 / 2.0;
if (digitalRead(sw) == LOW){
if (distance <= detection_distance){
myservo.write(second_angle);
delay(400);
myservo.write(first_angle);
delay(800);
}
}
else{
myservo.write(first_angle);
}
}
Mam mały problem, otóż podłączając serwonapęd ( TowerPro MG 966R ) do arduino oraz czujnik ( HC -SR04 ) chciałem żeby serwo
odpalało sie wtedy kiedy coś wykryje, teoretycznie w kodzie ograniczyłem go do 20 cm, ale pomimo tego po podłączeniu do zasilania i wgraniu programu serwo odpala sie praktycznie od razu a czujnik sobie nic z tego nie robi, sprawdzałem i zczytuje odległości poprawnie. Nie wiem co zrobić stanąłem w miejscu. Dlatego potrzebuje pomocy

Taki schemat znalazłem na pewnej stronie i według tego podłączałem układ
A tu kod który stosuje:
/*
echo = 3
trig = 4
servo = 5
*/
#include <Servo.h>
Servo myservo;
int first_angle = 100;
int second_angle = 50;
int detection_distance = 20;
int sw = 12;
int echoPin = 3;
int trigPin = 4;
void setup() {
myservo.attach(5);
myservo.write(first_angle);
pinMode(sw, INPUT_PULLUP);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop(){
digitalWrite(trigPin, LOW);
digitalWrite(echoPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
unsigned long duration = pulseIn(echoPin, HIGH);
float distance = duration / 29.0 / 2.0;
if (digitalRead(sw) == LOW){
if (distance <= detection_distance){
myservo.write(second_angle);
delay(400);
myservo.write(first_angle);
delay(800);
}
}
else{
myservo.write(first_angle);
}
}