Тема: Погодная станция BME280 + DS18B20 + NOKIA5110
Подключение:
DS18B20 - вход А0
NOKIA5110 - RST,CE,DC,DIN,CLK VCC,BL,GND (3,4,5,6,7 +3.3V(VCC) , +3.3V через резистор 200 Oм(BL - подсветка), GND)
BME280 - I2C A5 (SCL) и A4 (SDA)
#include <Wire.h>
#include <SPI.h>
#include <OneWire.h> // http://rcl-radio.ru/wp-content/uploads/2018/07/OneWire.zip
#include <DallasTemperature.h>// http://rcl-radio.ru/wp-content/uploads/2018/07/DallasTemperature.zip
#include <Adafruit_Sensor.h> // https://github.com/adafruit/Adafruit_Sensor
#include <Adafruit_BME280.h> // https://github.com/adafruit/Adafruit_BME280_Library
#include <PCD8544.h> // http://rcl-radio.ru/wp-content/uploads/2019/01/pcd8544.zip
PCD8544 lcd; // RST,CE,DC,DIN,CLK VCC,BL,GND (3,4,5,6,7 +3.3V,200 OM +3.3V, GND)
Adafruit_BME280 bme;
OneWire oneWire(A0);// вход датчика 18b20
DallasTemperature temp(&oneWire);
static const byte gradus[] = { B00000110,B00001001,B00001001,B00000110,B00000000 };// градус
float t1,t2,hpa,h;
void setup() {
Serial.begin(9600);
if (!bme.begin(0x76)) {Serial.println("Could not find a valid BME280!"); while (1);}
temp.begin(); temp.setResolution(10);//10 бит
lcd.begin(84, 48);
lcd.createChar(0, gradus);
lcd.setContrast(60);// контрастность 0-127
}
void loop() {
temp.requestTemperatures();// опрос 18b20
t1 = temp.getTempCByIndex(0); // снятие показаний 18b20
t2 = bme.readTemperature(); // снятие показаний температуры с bme280
hpa = bme.readPressure() / 100.0F;
h = bme.readHumidity();
lcd.setCursor(0,1);// вывод темп 18b20 на экран, первая строка
lcd.print("Temp 1:");if(t1>=0){lcd.print(" ");}if(t1>0&&t1<10||t1<0&&t1>-10){lcd.print(" ");}lcd.print(t1,1); lcd.write(0);lcd.print("C");
lcd.setCursor(0,2);
lcd.print("Temp 2:");if(t2>=0){lcd.print(" ");}if(t2>0&&t2<10||t2<0&&t2>-10){lcd.print(" ");}lcd.print(t2,1); lcd.write(0);lcd.print("C");
lcd.setCursor(0,3);
lcd.print("P ");lcd.print(hpa*0.75,1);lcd.print(" mmHg"); // давление
lcd.setCursor(0,4);
lcd.print("H ");lcd.print(h,1);lcd.print(" %"); // влажность
}