1

Тема: Погодная станция BME280 + DS18B20 + NOKIA5110

http://rcl-radio.ru/?p=66937

Подключение:
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(" %"); // влажность                               
 }