HC-SR04 и зумер

добрый день.изввините за делетанство.есть код необходимо только назначить пин для зумера.где это не знаю
буду рад любой помощиэ

/*
  driver for the HCSR04 ultrasonic sensor, including a buzzer that blips at increasing frequency as the distance decreases
  sensor is on D12 and D13
*/

#include <HCSR04.h>

#define NEAR_DISTANCE 0.2   // near point (cm) at which the sensor becomes unreliable  
#define FAR_DISTANCE 400.0  // far point (cm) at which the sensor becomes unreliable  
#define NEAR_PIP_DELAY 200  // inter-pip period (mS) at NEAR_DISTANCE  
#define FAR_PIP_DELAY 2000  // inter-pip period (mS) at FAR_DISTANCE  
#define PIP_TIME 20         // pip period (mS)  

#define LOOP_DELAY 250      // delay in the loop (mS)   
#define BUFFSIZE 10         // number of readings used to arrive at a moving average

float buffer[BUFFSIZE];
byte i = 0;                 // index of the next free element in buffer
float d, av, sum;


UltraSonicDistanceSensor distanceSensor(12, 13);  // Initialize sensor useing digital pins 12 and 13
unsigned long last_pip_time;
unsigned long inter_pip_delay;

void setup () {
    Serial.begin(9600);  // We initialize serial connection so that we could print values from sensor.
    for (byte j=0; j<BUFFSIZE; j++)
      buffer[j] = 0.0;
      
last_pip_time = millis();
}

void loop () {    
    buffer[i] = distanceSensor.measureDistanceCm(); // read the sensor and buffer the result (in cm)
    Serial.println(buffer[i]);
    i = (i++)%BUFFSIZE; 
    
    // get the average of the readings in the buffer
    sum = 0.0;
    for (byte j=0; j<BUFFSIZE; j++)
      sum += buffer[j];
  
    av = sum/BUFFSIZE;
    
    // work out a new inter-pip delay based on the distance measured
    if(av > FAR_DISTANCE) 
      inter_pip_delay = FAR_PIP_DELAY;
    else
      if(av < NEAR_DISTANCE) 
        inter_pip_delay = NEAR_PIP_DELAY;
      else
        inter_pip_delay = (int)(((FAR_DISTANCE - NEAR_DISTANCE)/av)/(FAR_PIP_DELAY - NEAR_PIP_DELAY));
    
    // see if it is time for a pip, bvased on the current distance
    if((millis() - last_pip_time) > (last_pip_time + inter_pip_delay))
    {
      // time for a pip
      // sound the pip for (PIP_TIME) mS
      last_pip_time = millis(); 
    }
    
    delay(LOOP_DELAY);
}

можете в строчку №13 дописать

#define BUZZER_PIN 10

не благодарите…

не, на 10 он пищать не будет, точно не будет, 100500 не будет

Что у вас двоих случилось? :smiley:
Как цыпленок за гусем по всем темам )))

Целиком и однозначно поддерживаю. Да и на других не уверен что будет пищать. Что то в сетапе не наблюдаю команды активации ноги для пищания.

это обычно в библиотеке пишут, но не в этом суть, меня это сильно смущает:

#include <HCSR04.h>
...
UltraSonicDistanceSensor distanceSensor(12, 13); 

Это как раз нормально, trig pin , echo pin. А вот пищалку куда? Не наблюдаю в библиотеке и программе функционала конкретно пищания.

а это?

UltraSonicDistanceSensor

вот библиотека стандарт де факто с ардуино.сс

и там:

class HCSR04
{
public:
	HCSR04(int out, int echo);			//initialisation class HCSR04 (trig pin , echo pin)
	HCSR04(int out, int echo[], int n); //initialisation class HCSR04 (trig pin , echo pin)
	~HCSR04();							//destructor
	float dist() const;					//return curent distance of element 0
	float dist(int n) const;			//return curent distance of element n

Ну кто же знает что там за библиотека? arduino-lib-hc-sr04/src/HCSR04.cpp at master · Martinsos/arduino-lib-hc-sr04 · GitHub в этой вполне валидное имя.

вы правы не пищит ни на 10 пине ни на 14 и15 тоже не работает .извините забыл указать,что работаю с esp8266 может это прояснит ситуацию.всем спасибо .

Нет. В программе совсем нет пищалки. Она какого типа? Нужно подать +5 вольт или нужно 1кГц?

а если так?

/*
  driver for the HCSR04 ultrasonic sensor, including a buzzer that blips at increasing frequency as the distance decreases
  sensor is on D12 and D13
*/

#include <HCSR04.h>

#define NEAR_DISTANCE 0.2   // near point (cm) at which the sensor becomes unreliable
#define FAR_DISTANCE 400.0  // far point (cm) at which the sensor becomes unreliable
#define NEAR_PIP_DELAY 200  // inter-pip period (mS) at NEAR_DISTANCE
#define FAR_PIP_DELAY 2000  // inter-pip period (mS) at FAR_DISTANCE
#define PIP_TIME 20         // pip period (mS)

#define LOOP_DELAY 250  // delay in the loop (mS)
#define BUFFSIZE 10     // number of readings used to arrive at a moving average
#define BUZZER_PIN D4

  float buffer[BUFFSIZE];
byte i = 0;  // index of the next free element in buffer
float d, av, sum;


/*HCSR04*/UltraSonicDistanceSensor distanceSensor(D1, D2);  // Initialize sensor useing digital pins 12 and 13
unsigned long last_pip_time;
unsigned long inter_pip_delay;

void setup() {
  Serial.begin(9600);  // We initialize serial connection so that we could print values from sensor.
  for (byte j = 0; j < BUFFSIZE; j++)
    buffer[j] = 0.0;

  last_pip_time = millis();
  pinMode(BUZZER_PIN, OUTPUT);
}

void loop() {
  buffer[i] = distanceSensor.measureDistanceCm();  // read the sensor and buffer the result (in cm)
  Serial.println(buffer[i]);
  i = (i++) % BUFFSIZE;

  // get the average of the readings in the buffer
  sum = 0.0;
  for (byte j = 0; j < BUFFSIZE; j++)
    sum += buffer[j];

  av = sum / BUFFSIZE;

  // work out a new inter-pip delay based on the distance measured
  if (av > FAR_DISTANCE)
    inter_pip_delay = FAR_PIP_DELAY;
  else if (av < NEAR_DISTANCE)
    inter_pip_delay = NEAR_PIP_DELAY;
  else
    inter_pip_delay = (int)(((FAR_DISTANCE - NEAR_DISTANCE) / av) / (FAR_PIP_DELAY - NEAR_PIP_DELAY));

  // see if it is time for a pip, bvased on the current distance
  if ((millis() - last_pip_time) > (last_pip_time + inter_pip_delay)) {
    // time for a pip
    // sound the pip for (PIP_TIME) mS
    tone( BUZZER_PIN,1000,inter_pip_delay);
    last_pip_time = millis();
  }

  delay(LOOP_DELAY);
}

смотрится прилично но к сожалению даёт ошибку комбиляции .да выход 5 v вполне подойдет

не может быть

D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\tools\\python3\\3.7.2-post1/python3" -I "D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/mkdir.py" -p "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116/ld_h/"
"D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\tools\\python3\\3.7.2-post1/python3" -I "D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/cp.py" "D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/sdk/ld/eagle.flash.4m2m.ld" "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116/ld_h/local.eagle.flash.ld.h"
"D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.1.0-gcc10.3-e5f9fec/bin/xtensa-lx106-elf-gcc" -CC -E -P -DVTABLES_IN_FLASH -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116/ld_h/local.eagle.flash.ld.h" -o "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116/local.eagle.flash.ld"
"D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.1.0-gcc10.3-e5f9fec/bin/xtensa-lx106-elf-gcc" -CC -E -P -DVTABLES_IN_FLASH -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 "D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/sdk/ld/eagle.app.v6.common.ld.h" -o "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116/local.eagle.app.v6.common.ld"
"D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.1.0-gcc10.3-e5f9fec/bin/xtensa-lx106-elf-gcc" -fno-exceptions -Wl,-Map "-Wl,C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116/sketch_mar29a.ino.map" -g "@D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/warnings/extra-cflags" -Os -nostdlib -Wl,--no-check-sections -u app_entry -u _printf_float -u _scanf_float -Wl,-static "-LD:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/sdk/lib" "-LD:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/sdk/lib/NONOSDK22x_190703" "-LC:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116" "-LD:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/sdk/libc/xtensa-lx106-elf/lib" -Tlocal.eagle.flash.ld -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read -o "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116/sketch_mar29a.ino.elf" -Wl,--start-group "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116\\sketch\\sketch_mar29a.ino.cpp.o" "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116\\libraries\\arduino-lib-hc-sr04-master\\HCSR04.cpp.o" "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116\\core\\core.a" -lhal -lphy -lpp -lnet80211 -llwip2-536-feat -lwpa -lcrypto -lmain -lwps -lbearssl -lespnow -lsmartconfig -lairkiss -lwpa2 -lstdc++ -lm -lc -lgcc -Wl,--end-group "-LC:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116"
"D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\tools\\python3\\3.7.2-post1/python3" -I "D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/elf2bin.py" --eboot "D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/bootloaders/eboot/eboot.elf" --app "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116/sketch_mar29a.ino.elf" --flash_mode dio --flash_freq 40 --flash_size 4M --path "D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.1.0-gcc10.3-e5f9fec/bin" --out "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116/sketch_mar29a.ino.bin"
Creating BIN file "C:\Users\User\AppData\Local\Temp\arduino_build_335116/sketch_mar29a.ino.bin" using "D:\ARDUINO\arduino-1.8.19\portable\packages\esp8266\hardware\esp8266\3.1.2/bootloaders/eboot/eboot.elf" and "C:\Users\User\AppData\Local\Temp\arduino_build_335116/sketch_mar29a.ino.elf"
"D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\tools\\python3\\3.7.2-post1/python3" -I "D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/signing.py" --mode sign --privatekey "D:\\ARDUINO\\arduino-1.8.19\\portable\\sketchbook\\sketch_mar29a/private.key" --bin "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116/sketch_mar29a.ino.bin" --out "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116/sketch_mar29a.ino.bin.signed" --legacy "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116/sketch_mar29a.ino.bin.legacy_sig"
"D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\tools\\python3\\3.7.2-post1/python3" -X utf8 -I "D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/sizes.py" --elf "C:\\Users\\User\\AppData\\Local\\Temp\\arduino_build_335116/sketch_mar29a.ino.elf" --path "D:\\ARDUINO\\arduino-1.8.19\\portable\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.1.0-gcc10.3-e5f9fec/bin" --mmu "-DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000"
. Variables and constants in RAM (global, static), used 28236 / 80192 bytes (35%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ DATA     1496     initialized variables
╠══ RODATA   924      constants       
╚══ BSS      25816    zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 61279 / 65536 bytes (93%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ ICACHE   32768    reserved space for flash instruction cache
╚══ IRAM     28511    code in IRAM    
. Code in flash (default, ICACHE_FLASH_ATTR), used 238868 / 1048576 bytes (22%)
║   SEGMENT  BYTES    DESCRIPTION
╚══ IROM     238868   code in flash   
Используем библиотеку arduino-lib-hc-sr04-master версии 2.0.0 из папки: D:\ARDUINO\arduino-1.8.19\portable\sketchbook\libraries\arduino-lib-hc-sr04-master 

C:\Users\chkanos\Documents\Arduino\HCSR04_driver\HCSR04_driver.ino:23:51: error: ‘D1’ was not declared in this scope; did you mean ‘y1’?
23 | /HCSR04/UltraSonicDistanceSensor distanceSensor(D1, D2); // Initialize sensor useing digital pins 12 and 13
| ^~
| y1
C:\Users\chkanos\Documents\Arduino\HCSR04_driver\HCSR04_driver.ino:23:55: error: ‘D2’ was not declared in this scope
23 | /HCSR04/UltraSonicDistanceSensor distanceSensor(D1, D2); // Initialize sensor useing digital pins 12 and 13
| ^~
C:\Users\chkanos\Documents\Arduino\HCSR04_driver\HCSR04_driver.ino: In function ‘void setup()’:
C:\Users\chkanos\Documents\Arduino\HCSR04_driver\HCSR04_driver.ino:16:20: error: ‘D14’ was not declared in this scope
16 | #define BUZZER_PIN D14
| ^~~
C:\Users\chkanos\Documents\Arduino\HCSR04_driver\HCSR04_driver.ino:33:11: note: in expansion of macro ‘BUZZER_PIN’
33 | pinMode(BUZZER_PIN, OUTPUT);
| ^~~~~~~~~~
C:\Users\chkanos\Documents\Arduino\HCSR04_driver\HCSR04_driver.ino: In function ‘void loop()’:
C:\Users\chkanos\Documents\Arduino\HCSR04_driver\HCSR04_driver.ino:16:20: error: ‘D14’ was not declared in this scope
16 | #define BUZZER_PIN D14
| ^~~
C:\Users\chkanos\Documents\Arduino\HCSR04_driver\HCSR04_driver.ino:60:11: note: in expansion of macro ‘BUZZER_PIN’
60 | tone( BUZZER_PIN,1000,inter_pip_delay);
| ^~~~~~~~~~
Несколько библиотек найдено для “HCSR04.h”
Используется: C:\Users\chkanos\Documents\Arduino\libraries\HCSR04
Не используется: C:\Users\chkanos\Documents\Arduino\libraries\HCSR04_ultrasonic_sensor
Не используется: C:\Users\chkanos\Documents\Arduino\libraries\Simple_HC-SR04_Control
Не используется: C:\Users\chkanos\Documents\Arduino\libraries\HC-SR04
exit status 1

Compilation error: ‘D1’ was not declared in this scope; did you mean ‘y1’?

Это важно. Заказчик было истерику устроил - подключил активный вместо пьезо (по условию) и говорит что хрипит. А затем включил дурку, типа, я не копенгаген. Повнимательнее.

спасибо важное замечание.я связался с автором и он переделал код зумеры есть и активные и пассивные.обновленный так же не работает издает несколько коротких сигналов и все при этом в маниторе порта растояние показывает правильнбуду признателен сообществу высказать свое компитентное мнение и конкретные ошибки указать.

#include <HCSR04.h>

/*
driver for the HCSR04 ultrasonic sensor, including a buzzer that blips at increasing frequency as the distance decreases
sensor is on D12 and D13
*/

#include <HCSR04.h>

#define NEAR_DISTANCE 1.0 // near point (cm) at which the sensor becomes unreliable
#define FAR_DISTANCE 400.0 // far point (cm) at which the sensor becomes unreliable
#define NEAR_PIP_DELAY 500 // inter-pip period (mS) at NEAR_DISTANCE
#define FAR_PIP_DELAY 2000 // inter-pip period (mS) at FAR_DISTANCE
#define PIP_TIME 50 // pip period (mS)
#define PIEZO_PIN 14
#define TONE_HZ 700

#define LOOP_DELAY 250 // delay in the loop (mS)
#define BUFFSIZE 10 // number of readings used to arrive at a moving average

float buffer[BUFFSIZE];
byte i = 0; // index of the next free element in buffer
float d, av, sum;

UltraSonicDistanceSensor distanceSensor(12, 13); // Initialize sensor useing digital pins 13 and 12
unsigned long last_pip_time;
unsigned long inter_pip_delay;

void setup () {
Serial.begin(9600); // We initialize serial connection so that we could print values from sensor.
for (byte j=0; j<BUFFSIZE; j++)
buffer[j] = 0.0;

last_pip_time = millis();

}

void loop () {
buffer[i] = distanceSensor.measureDistanceCm(); // read the sensor and buffer the result (in cm)
i = (i++)%BUFFSIZE;

// get the average of the readings in the buffer
sum = 0.0;
for (byte j=0; j<BUFFSIZE; j++)
  sum += buffer[j];

av = sum/BUFFSIZE;
Serial.println(av);

// work out a new inter-pip delay based on the distance measured
if(av > FAR_DISTANCE)
  inter_pip_delay = FAR_PIP_DELAY;
else
  if(av < NEAR_DISTANCE)
    inter_pip_delay = NEAR_PIP_DELAY;
  else
    inter_pip_delay = (int)(((((FAR_DISTANCE - NEAR_DISTANCE)*1000)/av)/(FAR_PIP_DELAY - NEAR_PIP_DELAY))*100);

// see if it is time for a pip, based on the current distance
if((millis() - last_pip_time) > (last_pip_time + inter_pip_delay))
{
   Serial.print("inter pip delay "); Serial.println((int)inter_pip_delay);

  // time for a pip
  // sound the pip for (PIP_TIME) mS
  tone(PIEZO_PIN, TONE_HZ, PIP_TIME);
  last_pip_time = millis();
}

delay(LOOP_DELAY);

}

Моё “компитентное” мнение: судя по первому посту, код Вы вставлять умеете, а значит, мы имеем дело не с ошибкой а с осознанным, циничным издевательством над сообществом.

Нет, не умеет. Первый пост дед откорректировал. Видимо, зря - ничему это ТС не научило.