23-02-2019, 16:07
Witam,
Mój projekt to "stacja pogodowa" oparta na BMP280(czujnik zew.) oraz wew. DS18B20. Dopiero kupiłem Arduino i ucze się je programować dlatego zależy mi aby ustabilizować cały układ w początkowej fazie zanim zacznę dokładać następne gadżety..
Po wgraniu kodu wyświetlają się wszystkie wartości z czujników , LCD działa ale gdy dotknę BMP280 lub sam wyświetlacz - LCD zaczyna "wariować" zmienia się kontrast lub czasami zawiesza się odczyt. Pytanie czy podłączenie czujnika oraz wyświetlacza pod te same piny (I2C) może powodować problemy z odczytem danych oraz w jaki sposób należy je podłączyć aby się nie zakłócały. Dodatkowo prosiłbym o opinie fachowca czy kod nadaje się do użytku.
(wszystkie informacje poniżej.)
Pozdrawiam
Działam na Pro Mini 3.3V
"Schemat"(opis) podłączenia
BMP280 (I2C) -----> piny A4,A5
Wyświetlacz LCD 2x16 I2C -----> A4,A5
DS18B20 + rezystor 4.7k -----> standardowo GND i VCC , DATA po GPIO 3
Mój projekt to "stacja pogodowa" oparta na BMP280(czujnik zew.) oraz wew. DS18B20. Dopiero kupiłem Arduino i ucze się je programować dlatego zależy mi aby ustabilizować cały układ w początkowej fazie zanim zacznę dokładać następne gadżety..
Po wgraniu kodu wyświetlają się wszystkie wartości z czujników , LCD działa ale gdy dotknę BMP280 lub sam wyświetlacz - LCD zaczyna "wariować" zmienia się kontrast lub czasami zawiesza się odczyt. Pytanie czy podłączenie czujnika oraz wyświetlacza pod te same piny (I2C) może powodować problemy z odczytem danych oraz w jaki sposób należy je podłączyć aby się nie zakłócały. Dodatkowo prosiłbym o opinie fachowca czy kod nadaje się do użytku.
(wszystkie informacje poniżej.)
Pozdrawiam
Działam na Pro Mini 3.3V
"Schemat"(opis) podłączenia
BMP280 (I2C) -----> piny A4,A5
Wyświetlacz LCD 2x16 I2C -----> A4,A5
DS18B20 + rezystor 4.7k -----> standardowo GND i VCC , DATA po GPIO 3
Kod:
#include <Wire.h>
#include "i2c.h"
#include <LiquidCrystal_I2C.h>
#include "i2c_BMP280.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
BMP280 bmp280;
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup()
{
// Inicjacja czujnika(DSB18)
sensors.begin();
Serial.begin(9600);
//START LCD
lcd.begin(16, 2);
lcd.clear();
Serial.println("Probe BMP280: ");
Serial.println(" ");
if (bmp280.initialize()) Serial.println("Sensor found");
else
{
Serial.println("Sensor missing");
while (1) {}
}
// onetime-measure:
bmp280.setEnabled(0);
bmp280.triggerMeasurement();
}
void loop()
{
bmp280.awaitMeasurement();
float temperature;
bmp280.getTemperature(temperature);
float pascal;
bmp280.getPressure(pascal);
static float meters, metersold;
bmp280.getAltitude(meters);
metersold = (metersold * 10 + meters)/11;
bmp280.triggerMeasurement();
lcd.setCursor(0, 0);
lcd.print("T1:");
lcd.print(temperature);
lcd.setCursor(0, 1);
lcd.setCursor(0,1);
lcd.print("Cis: ");
lcd.print(pascal/100);
lcd.println(" hPa");
lcd.setCursor(9,0);
lcd.print("T2:");
lcd.print(sensors.getTempCByIndex(0));
lcd.setCursor(14,0);
sensors.requestTemperatures();
delay(5000);
}