Проблема со звуком при объединении скетчей

Явообще чайник. Для себя решил поковыряться с ардуинкой. Занимаюсь парапланеризмом. Решил сделать вариометр. и блютус датчик давления для проги на андроиде.
Собрал на и про мини приборчик.Пищалка-вариометр и блютус датчик давления в одном флаконе. Залил скетч на пищалку-вариометр. Работает отлично и на подъем и на опускание . Пьезозуммер пищит как положено .
Залил скетч на блютус датчик. Все отлично андроид видит блютус.считывает данные давления и программа для полетов видит и работает с данными как и положено.
Решил объединить скетчи. Все залилось и работает.Блютус так же выдает. Все работает.
А вот звук на пищалке(пьезо) стал дребезжащий, как подыхающий. Что это, нехватка сигнала или что. Я вообще не соображаю. Если кто в курсе, подскажите куда копать
Код пищалки

#include <Adafruit_BMP280.h>
#include <Wire.h>
#include <Adafruit_LiquidCrystal.h>
Adafruit_BMP280 sensor;


float vario_down = -1.8;  // Установка СНИЖЕНИЯ
float vario_up = 0.2;
float alt[51];
float tim[51];
float beep;
float Beep_period;
float mux;
float Altitude;
const float p0 = 101325;

long Pressure = 101325;
unsigned long bounseInput4P = 0UL;

int samples = 40;
int maxsamples = 50;
int countPressVal = 0;

bool tmp1 = 0;
bool countPress = 0;
bool bounseInput4S = 0;
bool bounseInput4O = 0;
boolean thermalling = false;
int p = 9;

void setup() {
  pinMode(p, OUTPUT);



  if (!sensor.begin()) {
    Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
    while (1)
      ;
  }
  sensor.setSampling(Adafruit_BMP280::MODE_NORMAL,    /* Operating Mode. */
                     Adafruit_BMP280::SAMPLING_X2,    /* Temp. oversampling */
                     Adafruit_BMP280::SAMPLING_X8,    /* Pressure oversampling */
                     Adafruit_BMP280::FILTER_X8,      /* Filtering. */
                     Adafruit_BMP280::STANDBY_MS_63); /* Standby time. */
}


void loop() {
  sensor.readTemperature();
  sensor.readPressure();
  sensor.readAltitude();


  float tempo = millis();
  float vario = 0;
  float N1 = 0;
  float N2 = 0;
  float N3 = 0;
  float D1 = 0;
  float D2 = 0;

  for (int cc = 1; cc <= maxsamples; cc++) {  // усреднитель
    alt[(cc - 1)] = alt[cc];
    tim[(cc - 1)] = tim[cc];
  };
  alt[maxsamples] = sensor.readAltitude();
  tim[maxsamples] = tempo;
  float stime = tim[maxsamples - samples];
  for (int cc = (maxsamples - samples); cc < maxsamples; cc++) {
    N1 += (tim[cc] - stime) * alt[cc];
    N2 += (tim[cc] - stime);
    N3 += (alt[cc]);
    D1 += (tim[cc] - stime) * (tim[cc] - stime);
    D2 += (tim[cc] - stime);
  };

  vario = 1000 * ((samples * N1) - N2 * N3) / (samples * D1 - D2 * D2);  // рачёт звука
  if ((tempo - beep) > Beep_period) {
    beep = tempo;
    if (vario > vario_up && vario < 15) {
      Beep_period = 350 - (vario * 5);
      tone(p, (1000 + (100 * vario)), 300 - (vario * 5));  // звук на подъёме
      tone(p, (1003 + (100 * vario)), 300 - (vario * 5));
      thermalling = true;
    } else if ((vario < 0) && (thermalling == true)) {
      thermalling = false;
      // tone(200, 800); // звук предпоток (по-желанию )

    } else if (vario < vario_down) {  // звук на сливе
      Beep_period = 200;
      tone(p, (300 - (vario)), 340);
      tone(p, (303 - (vario)), 340);
      thermalling = false;
    }
  }
}

Код блютус

#include <Wire.h>
#include <Adafruit_BMP280.h>
#include <SoftwareSerial.h>


SoftwareSerial BTSerial(2, 3);  // RX | TX      // Указываем пины rx tx на который будет подключен Bluetooth модуль

// Переменная для вывода давления
Adafruit_BMP280 bmp;  // I2C


void setup() {
  Serial.begin(9600);
  BTSerial.begin(9600);  //38400

  if (!bmp.begin()) {
    Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
    while (1)
      ;
  }
  /* Default settings from datasheet. */
  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,    /* Operating Mode. */
                  Adafruit_BMP280::SAMPLING_X2,    /* Temp. oversampling */
                  Adafruit_BMP280::SAMPLING_X8,    /* Pressure oversampling */
                  Adafruit_BMP280::FILTER_X8,      /* Filtering. */
                  Adafruit_BMP280::STANDBY_MS_63); /* Standby time. */
}


void loop() {
  //Serial.println(F("BMP280 test2"));
  // Показания давления зависят от температуры, поэтому узнаем сначала температуру
  bmp.readTemperature();  // Считывание показания температуры
  bmp.readPressure();



  BTSerial.print(F("PRS "));                       // Передаем в монитор порта
  BTSerial.print(round(bmp.readPressure()), HEX);  // Для проверки
  BTSerial.print(F("\n"));

  Serial.print(F("PRS "));                       // Передаем в монитор порта
  Serial.print(round(bmp.readPressure()), HEX);  // Для проверки
  Serial.print(F("\n"));                         // Например: "PRS 1817F\n"
}

общий

#include <Adafruit_BMP280.h>
#include <Wire.h>
#include <Adafruit_LiquidCrystal.h>
#include <SoftwareSerial.h>
Adafruit_BMP280 sensor;
SoftwareSerial BTSerial(2, 3);


float vario_down = -1.8;  // Установка СНИЖЕНИЯ
float vario_up = 0.2;
float alt[51];
float tim[51];
float beep;
float Beep_period;
float mux;
float Altitude;
const float p0 = 101325;

long Pressure = 101325;
unsigned long bounseInput4P = 0UL;

int samples = 40;
int maxsamples = 50;
int countPressVal = 0;

bool tmp1 = 0;
bool countPress = 0;
bool bounseInput4S = 0;
bool bounseInput4O = 0;
boolean thermalling = false;
int p = 9;

void setup() {
  pinMode(p, OUTPUT);

  BTSerial.begin(9600);  //38400


  if (!sensor.begin()) {
    Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
    while (1)
      ;
  }
  sensor.setSampling(Adafruit_BMP280::MODE_NORMAL,    /* Operating Mode. */
                     Adafruit_BMP280::SAMPLING_X2,    /* Temp. oversampling */
                     Adafruit_BMP280::SAMPLING_X8,    /* Pressure oversampling */
                     Adafruit_BMP280::FILTER_X8,      /* Filtering. */
                     Adafruit_BMP280::STANDBY_MS_63); /* Standby time. */
}


void loop() {
  sensor.readTemperature();
  sensor.readPressure();
  sensor.readAltitude();
  BTSerial.print(F("PRS "));                          // Передаем в монитор порта
  BTSerial.print(round(sensor.readPressure()), HEX);  // Для проверки
  BTSerial.print(F("\n"));




  float tempo = millis();
  float vario = 0;
  float N1 = 0;
  float N2 = 0;
  float N3 = 0;
  float D1 = 0;
  float D2 = 0;

  for (int cc = 1; cc <= maxsamples; cc++) {  // усреднитель
    alt[(cc - 1)] = alt[cc];
    tim[(cc - 1)] = tim[cc];
  };
  alt[maxsamples] = sensor.readAltitude();
  tim[maxsamples] = tempo;
  float stime = tim[maxsamples - samples];
  for (int cc = (maxsamples - samples); cc < maxsamples; cc++) {
    N1 += (tim[cc] - stime) * alt[cc];
    N2 += (tim[cc] - stime);
    N3 += (alt[cc]);
    D1 += (tim[cc] - stime) * (tim[cc] - stime);
    D2 += (tim[cc] - stime);
  };

  vario = 1000 * ((samples * N1) - N2 * N3) / (samples * D1 - D2 * D2);  // рачёт звука
  if ((tempo - beep) > Beep_period) {
    beep = tempo;
    if (vario > vario_up && vario < 15) {
      Beep_period = 350 - (vario * 5);
      tone(p, (1000 + (100 * vario)), 300 - (vario * 5));  // звук на подъёме
      tone(p, (1003 + (100 * vario)), 300 - (vario * 5));
      thermalling = true;
    } else if ((vario < 0) && (thermalling == true)) {
      thermalling = false;
      // tone(200, 800); // звук предпоток (по-желанию )

    } else if (vario < vario_down) {  // звук на сливе
      Beep_period = 200;
      tone(p, (300 - (vario)), 340);
      tone(p, (303 - (vario)), 340);
      thermalling = false;
    }
  }
}

Возможно tone() и SoftwareSerial не дружат. Для проверки можно попробовать блютуз на аппаратный сериал повесить. Кончено любое другое использование Serial исключить, и на время прошивки модуль блютуз физически от ардуинки отключать. Могут быть нюансы с дальнейшей прошивкой.

Спасиб. Зуммер отключается обычным отключателем блютус на постоянку. Хотя есть возможность снять питание

Отключил блютус физически. Звук не изменилчя такой же хреновый. Все таки где то конфликт.

Ну а в коде от этого действа ничего не поменялось….)))

Вы не поняли, что Вам сказали. Перечитайте сообщение №2 и делайте то, что там сказано, а не занимайтесь самодеятельностью!

попробовать блютуз на аппаратный сериал повесить
Ну естественно ничего такого я делать не буду. Потому что не знаю как это делать и даже что это вообще такое не знаю.
В принципе у меня прибор то есть. А здесь у меня главное блютус. Так чтоспс что откликнулись.

Красиво ушел, чо )))

А чего приходили-то? Потрындеть? И как? Удачно?

Это потому, что Вы пользуетесь функцией tone().
Научитесь извлекать звуки при помощи таймера и, надеюсь, что эта проблема от Вас уйдет.

Да не. Просто думал буковку поменять какую и все.
Лан , сорян тогда. Просто тупой вопрос. Где то вычитал( учитель пацанов ) где то пишет. Мол блютус где то конфликтует и с библиотекой серво, и рекомендует посадить его не на 2-3 пин. А на 0 и 1. Тут получится? Сорян заранее если чушь несу

Об этом уже писали во втором сообщении.

Вам именно это и советовали сделать, только не софтсериал как у Вас, а аппаратный.

Все, сделал. Всем спасибо.Янастолько чайник что сразу не понял что такое аппаратный сериал.Перепрошил перепаялся.
Пищщит , блютусит :+1:
KALAPANGA оттдельное спасибо