Проблема с BMP-280?

Xer0x_king
Offline
Зарегистрирован: 22.06.2017

Благодарю за пояснения. Завтра займусь на свежую голову.

 

Xer0x_king
Offline
Зарегистрирован: 22.06.2017

Уважаемый автор, подскажите, что подправить в скетче, в строке коррекции автояркости, чтобы она постоянно горела? Вроде все собрал, завелось с полпинка, но подсветка дисплея горит пару секунд и тухнет...

 

_zerabot_
Offline
Зарегистрирован: 26.05.2017





	        SetBrightness(analogRead(1));

	        readSensors(now, false, true);

	        lcd.setCursor(0, 3);

	        lcd.print("               ");

	        lcd.setCursor(0, 3);

начиная со строки 456

каждые 10 секунд вызывается функция SetBrightness

которая выставляет яркость в зависимости от показаний на пине А1.

Подключение должно быть таким: Только у меня пин А1, второй резистор у меня 10кОм.

Если не помогло попробуйте заменить

void SetBrightness(int brightness)
    {
      analogWrite(3, constrain( map(brightness / 4, 0, 255, 70, 255), 70, 255));
    }

 

на

void SetBrightness(int brightness)
    {
      analogWrite(3, brightness / 4);
    }

Или добавьте где нибудь вывод значений А1  (например в консоль) и посмотрите какие занчения он у вас принемает в зависимости от яркости. У меня принимало примерно от ~120 до ~600

Для регулировки яркости сегментного экрана можно написать

void SetBrightness(int brightness)
    {
analogWrite(3, brightness / 4);

tm1637.set(brightness /128);
    }

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

Как вариант - просто вернуть перемычку на i2c переходник =) Будет всевремя гореть на максимум.

 
Solo1991
Offline
Зарегистрирован: 23.11.2017

Всем привет!Столкнулся с такой проблемой:

Датчик BMP280 подключен по SPI, в Serial выдает данные исправно, а на экран выводит 0.000 

Помогите профиксить. Я прям зеленый, не особо шарю.

Скетч компилируется. Нужные строчки выделил жирным.

А еще, DHT11 периодически выдает отрицательные значения влажности (например: Hum = -4.00%)

Вот скетч:

#include <Wire.h> 
#include <iarduino_RTC.h>
#include <Adafruit_BMP280.h>
#include <idDHT11.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
 
#define BMP_SCK 8
#define BMP_MISO 11
#define BMP_MOSI 9
#define BMP_CS 10
 
Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK); 
LiquidCrystal_I2C lcd(0x3F, 16, 2);
 
int idDHT11pin = 2; //Digital pin for comunications
int idDHT11intNumber = 0; //interrupt number (must be the one that use the previus defined pin (see table above)
 
 
void dht11_wrapper(); // must be declared before the lib initialization
idDHT11 DHT11(idDHT11pin,idDHT11intNumber,dht11_wrapper);
 
byte degree[8] = // кодируем символ градуса
{
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
};
 
void dht11_wrapper() {
DHT11.isrCallback();
}
 
void setup()
{
 
 
lcd.begin();
lcd.backlight(); // Включаем подсветку
lcd.createChar(1, degree); // Создаем символ под номером 1
}
void loop()
{
  // Добавляем паузы в несколько секунд между измерениями
delay(2000);
DHT11.acquire();
// Выводим показания влажности и температуры
lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки
lcd.print("Pr = ");
lcd.print(bme.readPressure()/133,3);
lcd.print(" mm");
delay(3000);
lcd.clear();
lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки
lcd.print("Hum = "); // Выводим текст
lcd.print(DHT11.getHumidity()); 
lcd.print("%");// Выводим на экран значение влажности
lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки
lcd.print("t\1 = "); // Выводим текст, \1 - значок градуса
lcd.print(bme.readTemperature());
lcd.print("\1C");// Выводим значение температуры
 
 
    
}
АндрейT
Offline
Зарегистрирован: 08.02.2019

besteugen

Привет.
И этот скетч у тебя рабочий?
Строка 071???

Genri5
Offline
Зарегистрирован: 31.05.2016

Выложи скетч нормально, с нумерацией.

anarch
Offline
Зарегистрирован: 10.09.2017

Компилятор предупреждения не выкидывает?

Что то  типами не то наверное, попробуйте явно привести возращаемый тип bme.readTemperature()

АндрейT
Offline
Зарегистрирован: 08.02.2019

#include <Wire.h>
#include <iarduino_RTC.h>
#include <Adafruit_BMP280.h>
#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#include <SPI.h>

//#define BMP_SCK 8
//#define BMP_MISO 11
//#define BMP_MOSI 9
//#define BMP_CS 10
Adafruit_BMP280 bme; // I2C
//Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK);
LiquidCrystal_I2C lcd(0x27, 16, 2);

#define DHTPIN 2
//#define DHTTYPE DHT22 // использован датчик DHT12
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);


byte degree[8] = // кодируем символ градуса
{
  B00111,
  B00101,
  B00111,
  B00000,
  B00000,
  B00000,
  B00000,
};



void setup()
{
  Serial.begin(9600);
  lcd.init();
  //lcd.begin();
  lcd.backlight(); // Включаем подсветку
  lcd.createChar(1, degree); // Создаем символ под номером 1
  Wire.begin();
  bme.begin();

}
void loop()
{
  // Добавляем паузы в несколько секунд между измерениями
  delay(2000);

  // Выводим показания влажности и температуры
  lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки
  lcd.print("Pr = ");
  lcd.print(bme.readPressure() / 133, 3);
  lcd.print(" mm");
  delay(3000);
  lcd.clear();
  lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки
  lcd.print("Hum = "); // Выводим текст
  Serial.print("Humidity (%): ");
  Serial.println(dht.readHumidity() * 10); //(DHT11.getHumidity(), 2);
  lcd.print(dht.readHumidity());//(DHT11.getHumidity(), 2);
  lcd.print("%");// Выводим на экран значение влажности
  lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки
  lcd.print("t\1 = "); // Выводим текст, \1 - значок градуса
  lcd.print(bme.readTemperature());
  lcd.print("\1C");// Выводим значение температуры



}

 
juf@mail.ru
Offline
Зарегистрирован: 09.12.2019

Подскажите пожалуйста, как отслеживать ошибки в процессе работы? Обнаружил что даже если отвалился датчик, считывает нулевую температуру и типа правильно работает дальше. 

sadman41
Offline
Зарегистрирован: 19.10.2016

Кто считывает?

juf@mail.ru
Offline
Зарегистрирован: 09.12.2019

Ардуинка)

sadman41
Offline
Зарегистрирован: 19.10.2016

Изучите библиотеку, которую Вы используете, на предмет функций, проверяющих работоспособность датчика. 

juf@mail.ru
Offline
Зарегистрирован: 09.12.2019

Да изучал несколько дней. Подскажите, а где можно увидеть все функции библиотеки?

sadman41
Offline
Зарегистрирован: 19.10.2016

В заголовочном файле с расширением .h