Почему эта переменная всегда возвращает мне значение 0?
Я работаю над проектом, и вот код, который я использую, но я не знаю, почему значения продолжительности и софии всегда равны 0, поэтому значения расстояния и монроя также равны 0
const int trigPin = 9;
const int echoPin = 10;
const int t = 8;
const int e = 7;
long duration, sofia;
int distance, monroy;
void setup() {
pinMode(trigPin, OUTPUT); // Устанавливает trigPin как выход
pinMode(echoPin, INPUT); // Устанавливает echoPin как вход
pinMode(t, OUTPUT);
pinMode (e, INPUT);
Serial.begin(9600); // Запускает последовательную связь
}
void loop() {
// Очищает тригПин
digitalWrite(trigPin, LOW);
digitalWrite (t, LOW);
delayMicroseconds(2);
// Устанавливает trigPin в состояние HIGH на 10 микросекунд
digitalWrite(trigPin, HIGH);
digitalWrite (t, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
digitalWrite (t, LOW);
// Считывает echoPin, возвращает время прохождения звуковой волны в микросекундах
duration = pulseIn(echoPin, HIGH);
sofia = pulseIn(e, HIGH);
// Расчет расстояния
distance = duration * 0.034 / 2;
monroy = sofia * 0.034 / 2;
Serial.print(duration);
if (distance = 15);
{
digitalWrite (3, HIGH);
delay (5000);
digitalWrite (3, LOW);
}
if ((monroy >= 0) && (monroy <= 5));
{
digitalWrite (4, HIGH);
digitalWrite (5, LOW);
digitalWrite (6, LOW);
}
if ((monroy >= 5.1) && (monroy <= 9));
{
digitalWrite (5, HIGH);
digitalWrite (6, LOW);
}
if (monroy >= 9.1);
{
digitalWrite (5, LOW);
digitalWrite (6, HIGH);
}
}
@mmiguell, 👍0
Обсуждение1 ответ
Когда я отформатировал ваш код для удобства чтения, а затем скомпилировал его, я получил следующие предупреждения:
/tmp/arduino_modified_sketch_71221/sketch_may02a.ino: In function 'void loop()':
/tmp/arduino_modified_sketch_71221/sketch_may02a.ino:34:20: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
if (distance = 15);
^
/tmp/arduino_modified_sketch_71221/sketch_may02a.ino:34:21: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
if (distance = 15);
^
/tmp/arduino_modified_sketch_71221/sketch_may02a.ino:41:38: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
if ((monroy >= 0) && (monroy <= 5));
^
/tmp/arduino_modified_sketch_71221/sketch_may02a.ino:47:40: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
if ((monroy >= 5.1) && (monroy <= 9));
^
/tmp/arduino_modified_sketch_71221/sketch_may02a.ino:53:21: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
if (monroy >= 9.1);
Это важно — на это стоит обратить внимание. Например, вот здесь:
if (distance = 15); // <-- ТОЧКА С ЗАПЯТОЙ ЗДЕСЬ НЕ НУЖНА!
{
digitalWrite (3, HIGH);
delay (5000);
digitalWrite (3, LOW);
}
Установка точки с запятой здесь означает, что содержимое под if всегда выполняется — точка с запятой завершает область действия if.
Чтобы просмотреть предупреждения, откройте диалоговое окно «Настройки» в графическом интерфейсе IDE и измените «Предупреждения компилятора» на «Все».
Также:
if (distance = 15);
Это присваивает расстоянию значение 15, поэтому расстояние всегда будет равно 15. Вы имеете в виду:
if (distance == 15)
- Использование YS-IRTM с Arduino Uno
- Онлайн-проблема подключения Arduino к базе данных MySQL
- код для автоматической двери
- Как устранить сообщение об ошибке "assignment of function 'void digitalWrite (uint8_t, uint_8)"?
- Как преобразовать значения RGB в интенсивность
- Как считать показания датчика звука и включить датчик с датчиком воды, если показания выше порогового значения и при обнаружении воды в течение 2 минут?
- Почему жк-дисплей не показывает никакого выхода?
- Как запрограммировать 2 ультразвуковых датчика, один на серводвигателе и один прикрепленный на передней стороне автомобиля?
подключен ли у вас Arduino к чему-либо?, @jsotola
Мой Arduino подключен к моему ноутбуку., @mmiguell
Что у вас подключено к контактам 9 и 10 вашего Arduino? Возможно, вам будет полезна эта статья на нашем метасайте: [Как задать хороший вопрос для Arduino Stack Exchange](https://arduino.meta.stackexchange.com/questions/2523/how-to-ask-a-good-question-for-arduino-stack-exchange), @sempaiscuba
К 9-му и 10-му контактам у меня подключены контакты эха и триггера. Спасибо!, @mmiguell
Пожалуйста, сделайте последовательную печать
sofia, чтобы мы могли увидеть, какое значение используется для последующего расчета., @Nick Gammonкогда я пишу Serial.print(sofia), он всегда печатает 0, @mmiguell
Похоже, в этом случае время ожидания истекает через секунду. См.: https://www.arduino.cc/reference/en/language/functions/advanced-io/pulsein/, @Nick Gammon
Что подключено к контакту 7?, @Nick Gammon