помогите пожалуйста объединить два скетча в один. такая ситуация, что уже день не могу собрать из двух скетчей один, понимаю что для профи это дело пяти минут, но у меня почему-то не получается всё сделать правильно, видимо потому что я нуб. нужно чтобы в приложении Blynk на телефоне отображались датчики ds18b20 4 штуки и датчик bme280, вот коды:
код на BME280
и код на датчики
Заранее спасибо <3
код на BME280
Код:
// BME 280
#include <Wire.h>
//#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
// Подключается BME 280 по I2C:
// Плата ESP-12E подключаем SCL - D1(GPIO5) // SDA - D2(GPIO4)
// Плата Arduino UNO (NANO) SCL - А5 // SDA - А4
// Если по SPI то вот для Ардуины
//#define BME_SCK 13
//#define BME_MISO 12
//#define BME_MOSI 11
//#define BME_CS 10
// Это стандартное давление для вашей местности в гектопаскаль
// Гуглим стандартное давление для своего города
// и переводим в гектопаскаль
// https://www.unitjuggler.com/перевод-pressure-из-mmHg-в-hPa.html?val=740
#define SEALEVELPRESSURE_HPA (1013.25) //1013.25 (760мм.рт.ст. = 1013.25 гПа (hPa))
Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI
//*************************************************************************
// Blynk
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "";
char pass[] = "";
BlynkTimer timer;
unsigned long delayTime = 1000; // Частота вывода в виджет
//*************************************************************************
// Код программы
// Функция для вывода данных в пять виджетов Lable Vaule
void sendSensor()
{
// Температура
Blynk.virtualWrite(V0, bme.readTemperature(), " *С");
// Давление в милиметрах ртутного столба
Blynk.virtualWrite(V1, (bme.readPressure() / 133.3F), " мм.рт.ст.");
// Влажность
Blynk.virtualWrite(V2, bme.readHumidity(), " %");
// Высота (Расчетная и не очень точная) это не высотомер
Blynk.virtualWrite(V3, bme.readAltitude(SEALEVELPRESSURE_HPA), " м");
}//sendSensor
void setup() {
Serial.begin(9600);
// Запускаем датчик BME 280
Serial.println(F("BME280 test"));
bool status;
// Здесь вводим адрес устройства
// По умолчанию адрес i2c равен 0x77.
// Если вы добавите перемычку из SDO в V3.3, адрес изменится на 0x77.
// Если вы добавите перемычку из SDO в GND, адрес изменится на 0x76.
status = bme.begin(0x76);
if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
bme.setSampling();
Serial.println("-- Default Test --");
Serial.println();
//*******************************************************
// Запускаем Blynk
Blynk.begin(auth, ssid, pass);
// Настраиваем таймеры
timer.setInterval(delayTime, sendSensor);
// Настраиваем виджеты
Blynk.setProperty(V0, "label", "Температура");
Blynk.setProperty(V1, "label", "Давление");
Blynk.setProperty(V2, "label", "Влажность");
Blynk.setProperty(V3, "label", "Высота");
}//setup
void loop() {
Blynk.run();
timer.run();
}//loop
Код:
/* ESP & Blynk */
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define BLYNK_PRINT Serial
/* Blynk credentials */
char auth[] = "";
/* WiFi credentials */
char ssid[] = "";
char pass[] = "";
/* TIMER */
#include <SimpleTimer.h>
SimpleTimer timer;
/* DS18B20 Temperature Sensor */
#include <OneWire.h>
#include<DallasTemperature.h>
#define ONE_WIRE_BUS 2 // DS18B20 подключаем на D4 на плате
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
int temp_0;
int temp_1;
int temp_2;
int temp_3;
void setup()
{
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
DS18B20.begin();
timer.setInterval(1000L, getSendData);
Serial.println(" ");
Serial.println("Testing Dual Sensor data");
}
void loop()
{
timer.run(); // Initiates SimpleTimer
Blynk.run();
}
/***************************************************
* Send Sensor data to Blynk
**************************************************/
void getSendData()
{
DS18B20.requestTemperatures();
temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 показания для датчика 1 в цельсиях
temp_1 = DS18B20.getTempCByIndex(1); // Sensor 0 показания для датчика 2 в цельсиях
temp_2 = DS18B20.getTempCByIndex(2);// Sensor 0 показания для датчика 3 в цельсиях
temp_3 = DS18B20.getTempCByIndex(3);// Sensor 0 показания для датчика 4 в цельсиях
Serial.print("Temp_0: ");
Serial.print(temp_0);
Serial.print(" oC . Temp_1: ");
Serial.print(temp_1);
Serial.println(" oC");
Serial.print("Temp_2: ");
Serial.print(temp_0);
Serial.print(" oC . Temp_3: ");
Serial.print(temp_1);
Serial.println(" oC");
Blynk.virtualWrite(10, temp_0); //выврд данных на виртуальный пин V10
Blynk.virtualWrite(11, temp_1); //вывод данных навиртуальный пин V11
Blynk.virtualWrite(12, temp_2);
Blynk.virtualWrite(13, temp_3);
}