Arduino Uno + серводвигатель (SG-90) + ультразвуковой датчик (HC-S04) обнаруживает препятствие

Я новичок в Arduino. Цель состоит в том, чтобы написать программу, которая может останавливать гипотетическую конвейерную ленту (считывать серводвигатель), если на ленте уложено слишком много объектов, что обнаруживается датчиком HC-S04. Если расстояние превышает минимальное пороговое значение (1000), то двигатель может свободно вращаться. Если нет, это следует прекратить. С помощью приведенного ниже кода я заставляю серводвигатель вращаться независимо от того, находится ли объект перед ним или нет. Пробовал вынимать и менять delay. Он просто вращался быстрее или медленнее, но все еще игнорировал расстояние до препятствия. Пытался комментировать sensorValue = map(sensorValue, 0, 255, 0, 4000);, но на результат это не повлияло.

#include <Servo.h>
#include <Wire.h>

Servo servo;
const int trigPin= 9;
const int echoPin= 10;
const int threshold = 1000;

void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin,INPUT);
Serial.begin(9600);
servo.attach(8);

}

void loop() {
  int sensorValue = digitalRead(echoPin);
  sensorValue = map(sensorValue, 0, 255, 0, 4000);
  if (sensorValue >= threshold) {
    digitalWrite(8,HIGH);
    delay(10);
   }

  else {
    digitalWrite(8,LOW);
   delay(10);
  }
}

person Andrejs Zavaruhins    schedule 05.01.2018    source источник
comment
игровая площадка.arduino.cc/Main/UltrasonicSensor   -  person gre_gor    schedule 05.01.2018
comment
игровая площадка.arduino.cc/ComponentLib/Servo   -  person gre_gor    schedule 05.01.2018


Ответы (1)


Отладка путем вывода вашего sensorValue содержимого - это позволит вам проверить, какая ветвь запущена.

(не могу публиковать комментарии, потому что моя репутация недостаточно высока).

Вы можете использовать значения отладки для проверки, настройки и калибровки вашего датчика.

person AJD    schedule 06.01.2018