Робот должен ехать туда обратно и при появлении препятствия перед дальномеро останавливаться

в чем тут причина? просто надо что бы при наличии препятствия робот остановился

как контролировать двигатели в зависимости от расстояния препятствия перед датчиком?

по отдельности и то и то работает

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

ну подскажите где именно. вроде все в коде логично

вот, если все подключено правильно должно работать

int trigPin = 13; // назначаем имя для pin9
int echoPin = 12; // назначаем имя для pin8
int In2 = 2;
int In4 = 4;
int duration, cm;

void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT); // назначаем trigPin, как выход
  pinMode(echoPin, INPUT);  // назначаем echoPin, как вход

  //Переведем данные пины/порты в режим вывода.
  pinMode(In2, OUTPUT);
  pinMode(In4, OUTPUT);

}

void loop() {

  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);

  cm = duration / 58; // вычисляем расстояние в сантиметрах
  Serial.print(cm);
  Serial.println(" cm");

  if (cm  > 30) {
    digitalWrite(In2, HIGH);
    digitalWrite(In4, HIGH);
  } else {
    digitalWrite(In2, LOW);
    digitalWrite(In4, LOW);
  }
  delay(1000);
}

и тя умоляю, иди учи уроки, а то всю жизнь так и будешь код на форумах клянчить.

Скобка не там стояла.

int trigPin = 13; // назначаем имя для pin9
int echoPin = 12; // назначаем имя для pin8
int In2, In4;

void setup() { 
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT); // назначаем trigPin, как выход
  pinMode(echoPin, INPUT);  // назначаем echoPin, как вход
  {
   
   In2 = 2;
   In4 = 4;

  //Переведем данные пины/порты в режим вывода.
  pinMode(In2, OUTPUT);
  pinMode(In4, OUTPUT);
}

 int duration, cm;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);

  cm = duration / 58; // вычисляем расстояние в сантиметрах
  Serial.print(cm);
  Serial.println(" cm");

  delay(1000);
 if   (duration, cm  > 30) {
  digitalWrite(In2, HIGH); 
  digitalWrite(In4, HIGH);
    }
 if (duration, cm < 30); {
  digitalWrite(In2, LOW); 
  digitalWrite(In4, LOW);
   }
}
void loop() 
 
{
  digitalWrite(In2, LOW); //Правые двигатели на роботе.
  digitalWrite(In4, LOW);
  delay(1000); // Ждем 1 сек.
  digitalWrite(In2, HIGH); //Включили один правый двигатель на роботе.
  digitalWrite(In4, HIGH); //Включили другой правый двигатель на роботе.
  delay(2000); // Ждем 1 сек.
  digitalWrite(In2, LOW); //Выключили
  digitalWrite(In4, LOW); //Выключили
  delay(1000); // Ждем 1 сек.
  digitalWrite(In2, HIGH); //Включили один правый двигатель на роботе.
  delay(500); // Ждем 1 сек.
  digitalWrite(In2, LOW); //Правые двигатели на роботе.
  digitalWrite(In4, LOW);
  delay(1000); // Ждем 1 сек.
  digitalWrite(In2, HIGH); //Включили один правый двигатель на роботе.
  digitalWrite(In4, HIGH); //Включили другой правый двигатель на роботе.
  delay(2000); // Ждем 1 сек.
  digitalWrite(In2, LOW); //Правые двигатели на роботе.
  digitalWrite(In4, LOW);
  delay(1000); // Ждем 1 сек.
  digitalWrite(In2, HIGH); //Включили один правый двигатель на роботе.
  delay(500);
 }

и ещё есть сомнительные места.
неясно почему дальномер только один раз мерит дистанцию.
…проблема в голове у вас, нет логики.

а то есть это нормально


и что кусок кода между сетапом и лупом тоже)))

1 лайк

Нет конечно. Но тут логика нарушена, а не столько орфография.
…про структуру простеньких скетчей почитать надо и их логическую работу.

Отлично. Все работает. Спасибо.

Спасибо.

Давай дальше выдумывай скетчи не работающие и тилибунькай форумчан :slight_smile:
Чёрт с ней, с логикой, раз и без неё всё работает.

1 лайк

а дальше теперь я подключу к нему светодиод и зумер и они эти электронные модули должны будут активироваться в зависимости от расстояния до препятствия)

давай, мы ждем :sweat_smile:
уроки сделал?

))уроки еще сделаем

А сами-то Вы проверяли? И каковы результаты? Или Вы считаете, что Вам тут кто-то должен попу подтирать?

Боюсь, Вы неправильно понимаете это слово. Загляните в словарь.

пищать и мигать, минимум.

Светодиод уже добавил. Работает.

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