Последовательный монитор не работает с пьезозуммером
Поэтому я больше не вижу расстояния до датчика приближения, как только набираю код пьезозуммера. Я пробовал много вещей, но это не работает. Может кто-нибудь помочь мне это исправить?
int trigPin = D7;
int echoPin = D8;
int BLUE = D3; //D3 в синем цвете
int GREEN = D4;
int RED = D5;
int piezoPin = D10;
void setup() {// код кода gaat maar 1 keer
Serial.begin (115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
pinMode(RED, OUTPUT);
}
void loop() { //кодовое слово
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // триггер отправляет сигнал
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // проверяет, сколько времени потребуется сигналу, чтобы пройти туда и обратно
distance = (duration/2) / 29.1;
// поскольку сигнал отправляется, его необходимо разделить на два
// скорость звука в воздухе составляет примерно 29 микросекунд на см, поэтому разделите 29.
Serial.print(distance);
Serial.println(" cm");
//расстояние отображается в см на последовательном мониторе
delay(500);
if ((distance > 100) && (distance <= 150)){ //это происходит, если расстояние от датчика находится в диапазоне от более 100 см до равного или меньше 150 см.
analogWrite(BLUE, 0);
analogWrite(GREEN, 255);
analogWrite(RED, 0);
tone(piezoPin, 1000, 1000); //тон длится 1 секунду
delay(2000); // 2 секунды нет звука
tone(piezoPin, 1000, 1000);
delay(2000);
}
else if ((distance > 50) && (distance <= 100)){ //это происходит, если расстояние от датчика находится в диапазоне от более 50 см до равного или меньше 100 см.
Serial.println("Ga weg!");
analogWrite(BLUE, 0);
analogWrite(GREEN, 102);
analogWrite(RED, 252);
tone(piezoPin, 1000, 700); // звуковой сигнал длится 0,7 секунды
delay(1000); // 1 секунда без звука
tone(piezoPin, 1000, 700);
delay(1000);
}
else if ((distance >= 0) && (distance <= 50)){ //это происходит, если расстояние от датчика находится между большим или равным 0 см и равным или меньшим 50 см. .
analogWrite(BLUE, 0);
analogWrite(GREEN, 0);
analogWrite(RED, 255);
tone(piezoPin, 1000, 200); // звуковой сигнал длится 0,2 секунды
delay(100); // 0,1 секунды нет звука
tone(piezoPin, 1000, 200);
delay(100);
}
else {
analogWrite(BLUE, 0);
analogWrite(GREEN, 0);
analogWrite(RED, 0);
}
}
@Teddy Smit, 👍0
Обсуждение1 ответ
Пин D10 NodeMcu — это io 1, который является контактом RX последовательного интерфейса esp8266. Последовательный порт находится на NodeMCU, подключенном к USB. Вывод на плате имеет маркировку RX.
D8 — это контакт 15 конфигурации загрузки. На плате должен быть предусмотрен раскрывающийся список. Выпадающее меню может нарушить входной сигнал на этом выводе. Используйте D6 (io 12) в качестве echoPin.
Я поменял штифт, и он вроде как работает, но не очень хорошо, потому что не дает нужного расстояния: он перемещается от 160 см до 0 см, ничего не перемещая..., @Teddy Smit
но это другая проблема, @Juraj
D8 — это IO 15. На его плате есть схема понижения напряжения. Я не знаю, может ли это помешать измерению., @Juraj
Извините, но я не знаю, что означает io. Я впервые программирую с помощью этой программы., @Teddy Smit
попробуйте D6 (io 12) вместо D8, @Juraj
@TeddySmit, прими ответ, чтобы отметить вопрос решенным, @Juraj
- Пассивный зуммер работает с AnalogWrite(), но не с DigitalWrite(). Он также имеет постоянный статический шум.
- Как исправить подключение светодиодной ленты RGB 12 В к NodeMCU?
- Подключение NodeMCU для Serial1
- Не удается подключиться к последовательному порту
- NodeMCU второй HARDWARE последовательный TX в качестве порта отладки
- Отправка данных из Arduino Mega в nodeMCU с использованием последовательного порта (данные нескольких датчиков) и загрузка в firebase
- Отправка данных из одного узла NodeMCU в другой узел NodeMCU с использованием последовательной связи
- Акцептант векселей ИКТ
Я использую NodeMCU, @Teddy Smit
но на NodeMCU нет контакта с надписью D10, @Juraj
Можете ли вы объяснить, что вы пробовали?, @MichaelT
Я удалил часть кода и проверил, не было ли что-то сломано в коде моего друга, и повторно загрузил Arduino., @Teddy Smit