Почему Arduino Uno не проверяет что в скобках if?

[Вставьте код правильно]

#include <Servo.h>

#define ML_Ctrl 4 // определите направляющий штифт двигателя B
#define ML_PWM 5 //определите вывод управления ШИМ двигателя B
#define MR_Ctrl 2 //определите направление управляющего штифта двигателя
#define MR_PWM 6 //определите вывод управления ШИМ двигателя

#define PIN_TRIG 12
#define PIN_ECHO 13
long duration, cm, inches;

int a180=0;
int a90=0;
int a0=0;

Servo s1;

void setup()
{

pinMode(ML_Ctrl, OUTPUT); //определите вывод управления направлением двигателя B в качестве выходного сигнала
pinMode(ML_PWM, OUTPUT);  //определите вывод управления ШИМ двигателя B в качестве выходного сигнала
pinMode(MR_Ctrl, OUTPUT); //определите контакт управления направлением вращения двигателя в качестве выходного сигнала.
pinMode(MR_PWM, OUTPUT); //определите вывод управления ШИМ двигателя в качестве выходного сигнала

s1.attach(10);

Serial.begin (9600);
//Определяем вводы и выводы
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
}

void front(int time)
{
digitalWrite(ML_Ctrl,1); //установи/те штифт управления направлением вращения двигателя B в положение HIGH
analogWrite(ML_PWM,150); //установите скорость ШИМ-управления двигателем B на 150
digitalWrite(MR_Ctrl,1); //установите штифт управления направлением вращения двигателя в положение HIGH
analogWrite(MR_PWM,150); //установите скорость ШИМ-управления двигателем на 150
delay(time/8);
}

void down(int time)
{
digitalWrite(ML_Ctrl,0); //установите штифт управления направлением вращения двигателя B в положение LOW
analogWrite(ML_PWM,150); //установите скорость ШИМ-управления двигателем B на 150
digitalWrite(MR_Ctrl,0); //установите штифт управления направлением вращения двигателя в положение LOW
analogWrite(MR_PWM,150); //установите скорость ШИМ-управления двигателем на 150
delay(time/8);
}

void left(int time)
{
digitalWrite(ML_Ctrl,1); //установите штифт управления направлением вращения двигателя B в положение LOW
analogWrite(ML_PWM,50); //установите скорость ШИМ-управления двигателем B на 50
digitalWrite(MR_Ctrl,0); //установите штифт управления направлением вращения двигателя в положение HIGH
analogWrite(MR_PWM,50); //установите скорость ШИМ-управления двигателем на 50
delay(time/8);
}

void right(int time)
{
digitalWrite(ML_Ctrl,0); //установите штифт управления направлением вращения двигателя B в положение HIGH
analogWrite(ML_PWM,50); //установите скорость ШИМ-управления двигателем B на 50
digitalWrite(MR_Ctrl,1); //установите штифт управления направлением вращения двигателя в положение LOW
analogWrite(MR_PWM,50); //установите скорость ШИМ-управления двигателем на 50
delay(time/8);
}

void stap(int time)
{
digitalWrite(ML_Ctrl,0);
analogWrite(ML_PWM,0);
digitalWrite(MR_Ctrl,0);
analogWrite(MR_PWM,0);
delay(time/8);
}

void dist180(int time)
{
// Сначала генерируем короткий импульс длительностью 2-5 микросекунд.

digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(5);
digitalWrite(PIN_TRIG, HIGH);

// Выставив высокий уровень сигнала, ждем около 10 микросекунд. В этот момент датчик будет посылать сигналы с частотой 40 КГц.
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);

// Время задержки акустического сигнала на эхолокаторе.
duration = pulseIn(PIN_ECHO, HIGH);

// Теперь осталось преобразовать время в расстояние
cm = (duration / 2) / 29.1;
a180==cm;
Serial.print(a180);
Serial.print(cm);
Serial.println(" см.");

// Задержка между измерениями для корректной работы скеча
delay(250);
}

void dist90(int time)
{
// Сначала генерируем короткий импульс длительностью 2-5 микросекунд.

digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(5);
digitalWrite(PIN_TRIG, HIGH);

// Выставив высокий уровень сигнала, ждем около 10 микросекунд. В этот момент датчик будет посылать сигналы с частотой 40 КГц.
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);

// Время задержки акустического сигнала на эхолокаторе.
duration = pulseIn(PIN_ECHO, HIGH);

// Теперь осталось преобразовать время в расстояние
cm = (duration / 2) / 29.1;
a90==cm;

Serial.print(a90);
Serial.print(cm);
Serial.println(" см.");

// Задержка между измерениями для корректной работы скеча
delay(250);
}

void dist0(int time)
{
// Сначала генерируем короткий импульс длительностью 2-5 микросекунд.

digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(5);
digitalWrite(PIN_TRIG, HIGH);

// Выставив высокий уровень сигнала, ждем около 10 микросекунд. В этот момент датчик будет посылать сигналы с частотой 40 КГц.
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);

// Время задержки акустического сигнала на эхолокаторе.
duration = pulseIn(PIN_ECHO, HIGH);

// Теперь осталось преобразовать время в расстояние
cm = (duration / 2) / 29.1;
a0==cm;

Serial.print(a0);
Serial.print(cm);
Serial.println(" см.");

// Задержка между измерениями для корректной работы скеча
delay(250);
}

void loop()
{
{
front(4000);
stap(2000);
delay(1000);

s1.write(180);
delay(1000);

dist180(200);

delay(1000);

s1.write(0);
delay(1000);

dist0(200);

delay(1000);

s1.write(90);
delay(1000);

dist90(200);

delay(1000);
}
{
{
if (a180 < 20){
digitalWrite(9, HIGH);
right(2000);
stap(2000);
delay(3000);
}
else {
stap(2000);
delay(2000);
}
}
}
{
if (a0 <= 20)
{
digitalWrite(9, HIGH);
left(2000);
stap(2000);
delay(3000);
}
else
{
stap(2000);
delay(2000);
}
}
{
if (a90 > 20)
{
digitalWrite(9, HIGH);
front(2000);
stap(2000);
delay(3000);
}
else if (a90 < 20)
{
digitalWrite(9, HIGH);
down(3000);
stap(2000);
delay(3000);
}
else
{
stap(2000);
delay(2000);
}
}
}

Теперь номера строк где ардуино не работает можно указывать.

1 лайк

спасибо :slight_smile:

@Katy вставить код у вас опять не вышло, скажите спасибо @lilik
Если бы не он, вас бы просто забанили на форуме.

Теперь по коду
Обьясните, что, по вашему, делает вторая строка в этом фрагменте:

присваивает значение cm

неправильно

Найдите книжку по С и прочитайте, для чего используется “==” и “=” и какая между ними разница.

Почему, кстати, вы сразу не приравняли результат в первой строке нужной переменной?

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

Сочувствую. Но ошибки все равно придется исправлять

а как правильно её написать

Ну наверное вместо == шмякнуть =. А вдруг прокатит?

1 лайк

спасибо всё работает

идиотизм… Не находите?

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

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

4 лайка

:slight_smile:
Скорее всего чтоб робот колёсный выполнял задание.

Дочь 21 год, она гуманитарий, а тут девочка и программирование…трудно ведь им.

Это называется по…фигизм. “Ну я же читаю”.

И ошибки исправляй :wink:

1 лайк

девочки все время топят за равноправие. Вот пусть и доказывают.
Почему мальчику лентяю мы отказываем, а девочке нет?

1 лайк

да ну, я знаю одну которую приняли в солидную контору программером на 1C-BITRIX )))
PS она конечно жаловалась…“Вы не понимаете …это очень очень очень…сложно”

Нет. Просто не отработан автоматизм…Человек искренне не понимает, что доставляет дискомфорт окружающим своими действиями.
Супруга так и говорит - невоспитанный.