#arduino-uno #arduino-c
#arduino-uno #arduino-c
Вопрос:
Нужна помощь с этим кодом. В нем говорится об ошибке компиляции для платы. Я знаю, что проблема в инструкции if.
Я пытаюсь запрограммировать, если расстояние от ультразвука составляет от 1 до 150 см, отправьте звуковой сигнал на пьезо, иначе я хочу, чтобы он продолжался с основным циклом.
// Include the library:
#include <NewPing.h>
// Define Trig, Echo pin and Piezo pin:
#define trigPin 3
#define echoPin 5
#define piezoPin 9
// Define maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-600 cm:
#define MAX_DISTANCE 400
// NewPing setup of pins and maximum distance.
NewPing sonar = NewPing(trigPin, echoPin, MAX_DISTANCE);
void setup() {
// Open the Serial Monitor at 9600 baudrate to see ping results:
Serial.begin(9600);
}
void loop() {
// Wait 1s between pings. 29ms should be the shortest delay between pings:
delay(1000);
// Measure distance and print to the Serial Monitor:
Serial.print("Distance = ");
// Send ping, get distance in cm and print result (0 = outside set distance range):
Serial.print(sonar.ping_cm());
Serial.println(" cm");
if ((sonar.ping_cm() >= 1) amp;amp; (sonar.ping_cm() <= 150)) {
tone(piezoPin, 1000, 500);
} else {
}
}
Спасибо
Комментарии:
1. NewPing и tone () хотят использовать один и тот же таймер
Ответ №1:
Как упоминал @Juraj, возможно tone
, и NewPing.h
использовать те же ресурсы из AVR.
В частности, NewPing.h
библиотека использует прерывания по таймеру.
Я бы предложил попробовать использовать короткий импульс PWM для управления пьезо вместо использования tone
.
Попробуйте использовать другие контакты с поддержкой PWM. Здесь у вас есть один пример того, как это сделать. Вы можете адаптировать его к своим потребностям.