Почему мой код обрабатывает звуковой датчик так, как будто он всегда ВЫСОКИЙ?
У меня есть звуковой датчик, который работал отлично, так как я использовал его как датчик хлопка, чтобы включать и выключать свет. Однако я попытался изменить код, чтобы он работал немного плавнее, и по какой-то причине он перестал работать. Затем я попытался написать очень простой скрипт, позволяющий включать и выключать его с помощью всего одного хлопка, но теперь он обрабатывает звуковой датчик так, как будто он всегда вводит HIGH. Есть идеи, почему это может происходить?
Примечание: я увеличил чувствительность и вижу, что датчик звука не всегда ВЫСОКАЯ. Даже когда звук слишком высок, чтобы услышать, как я хлопаю в ладоши, он все равно включает и выключает светодиод, как если бы приведенное ниже выражение if всегда было истинным.
int SENSOR = 2;
int LED = 13;
void setup() {
// put your setup code here, to run once:
pinMode(LED, OUTPUT);
pinMode(SENSOR, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if(digitalRead(SENSOR) == HIGH){
digitalWrite(LED, (digitalRead(LED) == HIGH ? LOW : HIGH));
delay(100);
}
}
Это модуль датчика звука, который я использую: Модуль микрофона обнаружения звука Robojax
@JeffBrin, 👍0
Обсуждение1 ответ
Переключатель микрофона robojax, который я использовал, выдает НИЗКИЙ уровень, когда воспринимает звук, а не ВЫСОКИЙ, как я предполагал. Решение состояло в том, чтобы просто заменить все операторы if, проверяющие вход HIGH, на LOW.
примечание: извините, что не посмотрели в микрофон раньше.
- Как запитать Arduino и 1 цветную светодиодную ленту от одного источника питания
- Питание Arduino и светодиодной ленты
- Почему мои четыре батареи (6 В) не могут питать эту схему, а USB 5 В от Arduino может?
- Как сохранить регулятор прохладным, пока батарея питает Arduino и аксессуары?
- Как написать программу, которая включает оба встроенных светодиода ТОЛЬКО при включении ОБОИХ выключателей
- Питание светодиодной ленты - Сколько ампер?
- Несколько условий оператора if
- Светодиоды: разница между общим анодом и общим катодом
датчики не выводят ВЫСОКИЙ или НИЗКИЙ, их выход - числа..., @ElectronSurf
верните свой код туда, где он работал, и снова начните переписывать код, @jsotola
Проблема в том, что я не могу вернуться к своему старому коду, поэтому мне нужно его переписать., @JeffBrin
Кроме того, даже если я использую 1 или 0, у меня такая же проблема., @JeffBrin
Какой у вас "датчик звука"?, @Majenko
Прошу прощения за всю путаницу, я только что прочитал о том, как это работает, и, по-видимому, он выдает низкий уровень, когда чувствует звук, странно, потому что он работал раньше, когда я проверял вход HIGH. В любом случае, моя проблема решена, спасибо за предложения., @JeffBrin
одна вещь, которая может помочь вам в написании кода в будущем... `относитесь к моему звуковому датчику так, как будто он всегда ВЫСОКИЙ'.... это абсолютно неправда ..... просто ваш код ничего не делает, когда датчик НИЗКИЙ, @jsotola
@jsotola Не совсем. Он переключает светодиод, когда датчик показывает HIGH, с задержкой 100 мс между каждым переключением. Когда датчик не показывает HIGH, он не переключает светодиод. Таким образом, он делает что-то другое, когда датчик ВЫСОКИЙ по сравнению с НИЗКИМ., @Nick Gammon