Как использовать два ультразвуковых датчика для управления двигателем 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);
}
}
0
Смотрите также:
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
- Получение BPM из данного кода
- Как подключить более 10 датчиков к Arduino uno r3
- Чтение датчика давления от 4 до 20 мА с использованием uno
- Что выбрать между датчиками температуры и влажности: AM230x или DHT22?
- SRF04 Ультразвуковой датчик - неточные показания
- Arduino: считывание значений PPM с датчика озона MQ-131
"100" — это половина скорость?, @Anonymous Penguin
хм, максимум 225, так что я предполагаю, что половинная скорость должна быть около 112. но да, в моей концепции это половинная скорость, @Master Ivin ChickenSheep
Что вы хотите, чтобы произошло, если оба объекта одновременно находились спереди и сзади робота? Эту проблему можно решить, если вы запишете все возможные комбинации, то есть, насколько я понимаю, 4 комбинации., @Adel Bibi
Что ж, чего я хочу, когда два объекта сохранялись одновременно, так это того, чтобы скорость становилась нормальной (по умолчанию), как в 100., @Master Ivin ChickenSheep
Есть ли то же самое, но с Raspberry Pi и HAT-расширением/драйвером PWM от adafruit? Тот же ультразвуковой датчик и один мотор. Я пытаюсь увеличить скорость двигателя, когда что-то близко к двигателю (также в обратном направлении), и поддерживать работу двигателя вперед, как обычно, если объект находится далеко., @user1642131