Можете ли вы помочь мне понять, почему мой код Arduino не работает?
Код распознает местонахождение объекта и отправляет его
int const trigPin = 10;
int const echoPin = 9;
int const buzzPin = 1;
int const LED1 = 2;
int const LED2 = 3;
int const LED3 = 4;
void setup()
{
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzPin, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop()
{
int duration, distance;
digitalWrite(trigPin, HIGH);
delay(1);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// Идти
distance = (duration/2) / 29.1;
if (distance <= 1000 && distance >=0) {
digitalWrite(LED1, HIGH);
} else {
digitalWrite(buzzPin, LOW);
digitalWrite(LED1, LOW);
}
delay(60);
}
// МЕДЛЕННЫЙ
if (distance <= 50 && distance >=0) {
digitalWrite(LED2, HIGH);
} else {
digitalWrite(buzzPin, LOW);
digitalWrite(LED2, LOW);
}
delay(60);
}
// ОСТАНАВЛИВАТЬСЯ
if (distance <= 50 && distance >=0) {
digitalWrite(buzzPin, HIGH);
digitalWrite(LED3, HIGH);
} else {
digitalWrite(buzzPin, LOW);
digitalWrite(LED3, LOW);
}
delay(60);
}
1 ответ
Лучший ответ:
Попробуйте добавить последовательный вывод в важные части кода. Если вы видите, что они печатаются, вы можете быть уверены, что код выполняется до этого момента. Если он не выполняется, это также может быть проблемой с проводкой, поэтому обязательно проверьте, все ли настроено правильно.
В этой части:
... пустой цикл () { инт продолжительность, расстояние; digitalWrite(trigPin, ВЫСОКИЙ); задержка (1); digitalWrite(trigPin, LOW); продолжительность = pulseIn(echoPin, HIGH); // Идти расстояние = (длительность/2)/29,1; ...
Вы пытаетесь разделить целое число (которое может содержать только целые числа) на действительное число. Обязательно используйте тип данных, который может содержать более подробные результаты, такие как double или float.
Чтобы настроить последовательный интерфейс, вы должны добавить Serial.begin(9600) в свой код в функции setup(). Затем, когда вы пишете Serial.println("Ваше отладочное сообщение здесь"), он должен отображаться в последовательном мониторе после компиляции. (Arduino IDE->Инструменты->Последовательный монитор)
Не так просто отлаживать код, если вы вообще не умеете его компилировать. Возможно, в какой-то момент он узнает, почему все используют отступы в коде (а иногда даже [Основные рекомендации C++](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md)), @KIIV
Я просто хочу знать, каким будет или будет выглядеть отладочное сообщение, потому что я новичок в Arduino и сейчас не слишком много делаю., @Charles William King
Вы просто пишете как сообщение, что вам поможет. Например, вы можете написать как сообщение: Последовательный порт запущен; Сработал датчик; Вход в цикл while. Это действительно зависит только от вас. Все, что поможет вам выяснить, где ваш arduino движется в вашем коде прямо сейчас, @Cowboy_Patrick
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
и отправить
... отправить что куда?, @jsotolaк светодиоду и/или зуммеру, извините, я все сделал правильно, но по какой-то причине он был отключен, @Charles William King