Проблемы с #define

orcsin
Offline
Зарегистрирован: 12.06.2015

Есть такой код (выборка из сотни строк, но подписи строк не обращайте внимание):

Line 10: #define pinDigitalBuzzer	2
void setup() {
	Line 138: 	pinMode(pinDigitalBuzzer, OUTPUT);
	Line 139: 	digitalWrite(pinDigitalBuzzer, HIGH);
}
void loop() {
	Line 204: 				digitalWrite(pinDigitalBuzzer, LOW);
	Line 206: 				//Serial.println(pinDigitalBuzzer);
	Line 207: 				digitalWrite(pinDigitalBuzzer, HIGH);
}

В таком виде бузер не издаёт щелчки, а если разкоментить 206 строку, бузер  издаёт звук!

И еслии заменить pinDigitalBuzzer на "2" тоже издаёт звук!

Проверка Serial.println(pinDigitalBuzzer); показывает что pinDigitalBuzzer возвращает правильно значение, но почему не срабатывает digitalWrite не пойму.

В чём может быть проблема?

T.Rook
Offline
Зарегистрирован: 05.03.2016

orcsin пишет:

но почему не срабатывает digitalWrite не пойму

1. Вы уверены? Видели осциллографом несработку?

orcsin пишет:

В чём может быть проблема?

2. Какая пищалка: активная/пассивная? Может всё дело в задержке  на исполнение "Line 206:  //Serial.println(pinDigitalBuzzer);" кoторая и дает время сформироваться импульсу (ну или если активная пищалка , то дает время на пикнуть)

arduinec
Offline
Зарегистрирован: 01.09.2015

orcsin пишет:

В чём может быть проблема?

У вас в loop() нет никакой задержки, поэтому бузер работает на ультразвуке (который человек не слышит). Когда делается вывод в сериал, то появляется задержка, которая переводит бузер в звуковой диапазон.

orcsin
Offline
Зарегистрирован: 12.06.2015

Cпасибо за ответы!

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