Esp 32 sensor bmp280 + buzzer
Posted: Tue Nov 28, 2023 5:45 am
Good morning everyone, I'm writing code for a variometer, and I can't make it so that as the meters per second relative to the climb rate increases, the buzzer emits a sound with increasing frequency (the more the m/s increase, the more the beeps increase) I hope I explained myself.
Everything works in my breadboard, but I can't give the correct beep sequence, with Arduino it's much easier with the "tone" function
At the moment I don't know how to do it with the code I attach below.
Please can you help me.
Thank you
Everything works in my breadboard, but I can't give the correct beep sequence, with Arduino it's much easier with the "tone" function
At the moment I don't know how to do it with the code I attach below.
Please can you help me.
Thank you
Code: Select all
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#define BMP_SDA 21
#define BMP_SCL 22
#define BUZZER_PIN 19
Adafruit_BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!bmp.begin()) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1);
}
pinMode(BUZZER_PIN, OUTPUT);
}
void loop() {
static unsigned long lastMillis = 0;
static float lastAltitude = bmp.readAltitude();
unsigned long currentMillis = millis();
if (currentMillis - lastMillis >= 1000) { // Leggi la quota ogni secondo
float currentAltitude = bmp.readAltitude();
float verticalSpeed = (currentAltitude - lastAltitude) / ((currentMillis - lastMillis) / 1000.0);
{ if (verticalSpeed > 0.2) {
int newFrequency = map(verticalSpeed, 0, maxVerticalSpeed, 200, 500);
tone(BUZZER_PIN, NOTE_B4, 100, BUZZER_CHANNEL); // Suona il buzzer con la nuova frequenza
} else {
noTone(BUZZER_PIN); // Spegni il buzzer se la velocità è zero o negativa
}
lastAltitude = currentAltitude;
lastMillis = currentMillis;
}
}
}