Можете ли вы помочь мне понять, почему мой код 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);
}

, 👍-3

Обсуждение

и отправить ... отправить что куда?, @jsotola

к светодиоду и/или зуммеру, извините, я все сделал правильно, но по какой-то причине он был отключен, @Charles William King


1 ответ


Лучший ответ:

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