у меня такой код когда то работал, я его переделал под свои нужды.
вот он:
Код:
#include <Servo.h>
#define coef 10 //(коэффициент соответствия 10 градусов на 1см)
#define dead_zone 20
#define max_value 100
#define servoPin 10
#define Trig 9
#define Echo 8
#define ledPin 13
Servo myservo;
void setup()
{
pinMode(Trig, OUTPUT); //инициируем как выход
pinMode(Echo, INPUT); //инициируем как вход
pinMode(ledPin, OUTPUT);
myservo.attach(servoPin);
myservo.write(0);
Serial.begin(9600);
/* задаем скорость общения. В нашем случае с компьютером */
}
unsigned int impulseTime=0;
unsigned int distance_sm=0;
void loop()
{
digitalWrite(Trig, HIGH); /* Подаем импульс на вход
trig дальномера */
delayMicroseconds(10); // равный 10 микросекундам
digitalWrite(Trig, LOW); // Отключаем
impulseTime = pulseIn(Echo, HIGH); // Замеряем длину импульса
distance_sm = impulseTime/58; // Пересчитываем в сантиметры
Serial.println(distance_sm); // Выводим на порт
if (distance_sm >= dead_zone && distance_sm <= max_value)
{
myservo.write(50);
delay(2000);
}
else
{
myservo.write(160);
}
delay(200); /* ждем 0,1 секунды,
Следующий импульс может быть излучён, только после исчезновения эха от предыдущего. Это время называется периодом цикла (cycle period). Рекомендованный период между импульсами должен быть не менее 50 мс.
*/
}
попробуйте поменять мои пины под свои и залить... насколько я помню, мой код еще в сириал порт выводит инфу о расстоянии до объекта. это вам поможет понять работает ли эхолот.
проверьте еще раз все ли контакты подсоединены правильно.
проверьте серву исправна ли?
иногда нужно все разобрать и собрать заново. казалось бы все правильно, а н нет где то...