Как я могу заставить мотор вибрировать с помощью arduino в зависимости от расстояния ультразвука?

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

Как я могу заставить мотор вибрировать, используя arduino в зависимости от расстояния? Можете ли вы объяснить мне, как я могу использовать задержку в коде вибрации? Я нашел этот код в Интернете для вибрации:

digitalWrite(y, HIGH);
delay(50);
digitalWrite(y, LOW);
delay(50); 

Я знаю, что могу изменить задержку, но как мы можем это сделать в зависимости от нашей цели? Пожалуйста, помогите мне .. Я не знаю, как использовать задержку: (

2 голоса | спросил zozo 31 PM00000010000002331 2015, 13:02:23

3 ответа


1
  

Я знаю, что могу изменить задержку, но как мы можем это сделать в зависимости от нашей цели?

Вы спрашиваете, как использовать переменную ? Пример:

 const int LED = 13;

void setup() 
  {
  pinMode (LED, OUTPUT);
  }

void loop() 
  {
  int amount = analogRead (A0);   // get a reading
  digitalWrite(LED, HIGH);
  delay(amount);
  digitalWrite(LED, LOW);
  delay(amount);
  }

Этот код считывает некоторое аналоговое устройство и настраивает задержку на основе показанного ею числа.

ответил Nick Gammon 31 PM000000110000005731 2015, 23:53:57
1

Вы можете просто заменить «50» в первой задержке на переменную расстояния ультразвука, я объясню немного ниже.

Предположим, что ваш ультразвуковой датчик выдает аналоговое значение от 0 В до 5 В. Выход подключается к аналоговому выходу A0. Затем вы просто устанавливаете pinMode (A0, INPUT) и analogRead значение из булавки и храните его в переменной X или что угодно. Затем вы просто используете переменную X как задержку, и она будет делать то, что вы хотите. Чем выше значение, тем дольше он будет вибрировать. Что-то вроде этого:

[...]
val = analogRead(A0);
digitalWrite(5, HIGH);
delay(val);
digitalWrite(5, LOW);
[...]

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

Например:

if(variable > 50){
  // if the variable named variable is over 50 this code is going to be executed
} else {
  // If the variable is below 50 this is executed
}

Если вы незнакомы с условиями, то я предлагаю читать это тоже .

ответил Avamander 31 PM00000020000005931 2015, 14:03:59
0

Я хочу показать вам свои мысли и сказать, пожалуйста, если это правильно или неправильно:

Я устанавливаю связь между расстоянием и скоростью.

Я знаю, что (скорость = расстояние /время), и если препятствие слишком близко к ультразвуковому датчику, скорость двигателя должна быть максимальной, поэтому я уменьшаю время, которое является задержкой, верно?

Я делаю код в соответствии с тем, что я сказал выше, и он показан ниже:

    if(distance <= 60 && distance >= 45)// the distance is too large
    {
    digitalWrite(motorPin, HIGH);

    delay(200);// I increase the delay to make the motor vibrate slowly

    digitalWrite(motorPin, LOW);

    delay(200);

    } 

    else if(distance < 45 && distance >= 30)
    {
    digitalWrite(motorPin, HIGH);

    delay(100);

    digitalWrite(motorPin, LOW);

    delay(100);

   }
    else if(distance < 30){

    digitalWrite(motorPin, HIGH);

    delay(50);

    digitalWrite(motorPin, LOW);

    delay(50); 

  } 
  else 
  {
    digitalWrite(motorPin, LOW);// If the distance is too large the motor will be off
  }
ответил zooz 31 PM00000080000000931 2015, 20:52:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132