Как использовать два ультразвуковых датчика для управления двигателем 5 Вольт?

Я подключил к макетной плате два ультразвуковых датчика, а также установил двигатель на 5 В. Я также установил диод и установил обычную настройку. Я легко могу управлять мотором с помощью одного датчика.

Я хочу, чтобы двигатель работал, скажем, со скоростью 100, как только я его запущу:

  • Первый датчик следует использовать для медленного замедления двигателя, когда перед ним находится объект.
  • Второй датчик следует использовать для медленного ускорения двигателя, когда перед ним находится объект.

Я не хочу, чтобы скорость возвращалась к 100 после удаления объекта. Скорость должна оставаться той же, в зависимости от того, какой датчик использовался.

Если мне нужно что-то уточнить, сообщите мне в комментариях.

Код

int motorPin = 9;
int trigPin = 13;
int echoPin = 12;
int trigPin2 = 5;
int echoPin2 = 4;

void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(trigPin2, OUTPUT);
  pinMode(echoPin2, INPUT);
  pinMode(motorPin, OUTPUT);
}

void loop() {
  int duration, distance;
  digitalWrite (trigPin, HIGH);
  delayMicroseconds (1000);
  digitalWrite (trigPin, LOW);
  duration = pulseIn (echoPin, HIGH);
  distance = (duration/2) / 29.1;
  if (distance < 20) {  // Расстояние от датчика
    analogWrite (motorPin, 50);
  } else {
    int duration, distance;
    digitalWrite (trigPin2, HIGH);
    delayMicroseconds (1000);
    digitalWrite (trigPin2, LOW);
    duration = pulseIn (echoPin2, HIGH);
    distance = (duration/2) / 29.1;
    if (distance > 20) {  // Расстояние от датчика
      analogWrite (motorPin, 150);
    }
    if  (distance > 20) {  // Расстояние от датчика
      Serial.println("Out of range");
    } else {
      Serial.print(distance);
     Serial.println(" cm");
    }
    delay(500);
  }
}

, 👍5

Обсуждение

"100" — это половина скорость?, @Anonymous Penguin

хм, максимум 225, так что я предполагаю, что половинная скорость должна быть около 112. но да, в моей концепции это половинная скорость, @Master Ivin ChickenSheep

Что вы хотите, чтобы произошло, если оба объекта одновременно находились спереди и сзади робота? Эту проблему можно решить, если вы запишете все возможные комбинации, то есть, насколько я понимаю, 4 комбинации., @Adel Bibi

Что ж, чего я хочу, когда два объекта сохранялись одновременно, так это того, чтобы скорость становилась нормальной (по умолчанию), как в 100., @Master Ivin ChickenSheep

Есть ли то же самое, но с Raspberry Pi и HAT-расширением/драйвером PWM от adafruit? Тот же ультразвуковой датчик и один мотор. Я пытаюсь увеличить скорость двигателя, когда что-то близко к двигателю (также в обратном направлении), и поддерживать работу двигателя вперед, как обычно, если объект находится далеко., @user1642131