Скетч атмосферного давления

r00t_krsk
Offline
Зарегистрирован: 12.12.2015

Народ помогите кому не сложно, а кому сложно просто закройте и успокойтесь ) 

Ниже приведен код для вывода на LCD экран атм. давления , в данном коде вывод идет в Па(паскаль) хотелось бы изменить на наши привычные мм.рт.ст ))) 

Если я что то не внятное несу вот ссылка на источник моей затеи

http://blog.simtronyx.de/en/simple-indoor-climate-monitoring-with-an-arduino-bmp085-dht11-and-a-rtc/

Код:

-----------------------------------------------------------------------------------------------------------

void show_pressure(float pressure,boolean clear){

  
  int clearcolor=night_mode?ST7735_BLACK:ST7735_WHITE;
  int textcolor=night_mode?ST7735_WHITE:ST7735_BLACK;
  
  byte xs=12;
  byte ys=130;
  
  set_text(xs,ys,String((int32_t)pressure)+"Pa",clear?clearcolor:textcolor,1);
  
  if(max_pressure>=100000)xs-=8; 
  set_text(xs+68,ys-5,String((int32_t)max_pressure)+"Pa",clear?clearcolor:ST7735_CYAN,1);
  set_text(xs+68,ys+5,String((int32_t)min_pressure)+"Pa",clear?clearcolor:ST7735_MAGENTA,1);//
}
-------------------------------------------------------------------------------------------------------------
vk007
Offline
Зарегистрирован: 16.06.2015

1 Па = 0,0075 мм рт.ст.

1 мм рт.ст. = 133,3 Па

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, если б Вы ещё и скетч как положено опубликовали, можно было бы ссылаться на номера строк, а так....

После строки "void show ..." ставим строку

pressure *= 0,0075006;

Ну и меняем текстовые константы в печати. И вот оно - счастье!

r00t_krsk
Offline
Зарегистрирован: 12.12.2015

ЕвгенийП пишет:

Ну, если б Вы ещё и скетч как положено опубликовали, можно было бы ссылаться на номера строк, а так....

После строки "void show ..." ставим строку

pressure *= 0,0075006;

Ну и меняем текстовые константы в печати. И вот оно - счастье!

Как положенно? Это как? 

Спасибо за подсказку еще не проверял ) 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

r00t_krsk пишет:

Как положенно? Это как? 

Как положено это так - Вставка программного кода в тему/комментарий. Тема наверху закреплена.

r00t_krsk
Offline
Зарегистрирован: 12.12.2015

Jeka_M пишет:

r00t_krsk пишет:

Как положенно? Это как? 

Как положено это так - Вставка программного кода в тему/комментарий. Тема наверху закреплена.

я хотел в спойлер спрятать но так и не понял как тут это сделать ) сейчас понял как положенно ) спасибо 

 

r00t_krsk
Offline
Зарегистрирован: 12.12.2015
// BMP085, DHT11, TinyRTC (DS1307) und 1.8 Zoll TFT-Farb-Display (HY-1.8 SPI)

#include <SPI.h>

#include "Adafruit_GFX.h"    // Adafruit Grafik-Bibliothek
#include "Adafruit_ST7735.h" // Adafruit ST7735-Bibliothek


#include <Wire.h>
#include "Adafruit_BMP085.h" // Adafruit BMP085-Bibliothek

#include "RTClib.h"

#include <DHT.h>
#define DHTPIN 4         // Zur Messung verwendeter Pin, in unserem Fall also Pin 4
#define DHTTYPE DHT11    // DHT 11

// TFT-Display
#define CS   10 // Arduino-Pin an Display CS   
#define DC   9  // Arduino-Pin an Display A0
#define RST  8  // Arduino Reset-Pin

Adafruit_ST7735 tft = Adafruit_ST7735(CS, DC, RST);  // Display-Bibliothek Setup

RTC_DS1307 RTC; // Tiny RTC Modul

Adafruit_BMP085 bmp;   // BMP085

DHT dht(DHTPIN, DHTTYPE);  // Initialisieren des DHTs


DateTime now;
DateTime time_old;
DateTime date_old;

boolean night_mode=true;

void setup(void) {
  
  // Initialisiere RTC
  Wire.begin();
  RTC.begin();
  
  if (! RTC.isrunning()) {
    // Aktuelles Datum und Zeit setzen, falls die Uhr noch nicht läuft
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  
  bmp.begin();  // BMP085 starten
  
  dht.begin();  // DHT starten
  
  // Display
  tft.initR(INITR_BLACKTAB);     // ST7735-Chip initialisieren
  
  display_show();
}


float temp=1000;
float hum=1000;
int32_t pressure=1000;
float min_temp=1000;
float max_temp=-1000;
float min_humidity=1000;
float max_humidity=-1000;
int32_t min_pressure=1000000;
int32_t max_pressure=-1000;

int tempct=0;

void loop() {

  DateTime now=RTC.now();
  
  if(now.minute()!=time_old.minute()){
    show_time(time_old,true);
    time_old=now;
    show_time(time_old,false);
  }
  if(now.day()!=date_old.day()){
    show_date(date_old,true);
    date_old=now;
    show_date(date_old,false);
  }
  
  float t;
  if(tempct%2==0)t=dht.readTemperature();
  else t=bmp.readTemperature();
  if(isnan(t)){}
  else if((int)t!=(int)temp){
   show_temp(temp,true);
   temp=t;
   if(min_temp>temp)min_temp=temp;
   if(max_temp<temp)max_temp=temp;
   show_temp(temp,false);
  }
  tempct++;
  
  float h = dht.readHumidity();
  if(isnan(h)){}
  else if(h!=hum){
   show_hum(hum,true);
   hum=h;
   if(min_humidity>hum)min_humidity=hum;
   if(max_humidity<hum)max_humidity=hum;
   show_hum(hum,false);
  }
  
  int32_t p=bmp.readPressure();
  if(p!=pressure){
   show_pressure(pressure,true);
   pressure=p;
   if(min_pressure>pressure)min_pressure=pressure;
   if(max_pressure<pressure)max_pressure=pressure;
   show_pressure(pressure,false);
  }
  
  delay(10000);  
 
}

void show_temp(float temp,boolean clear){
  
  int clearcolor=night_mode?ST7735_BLACK:ST7735_WHITE;
  int textcolor=night_mode?ST7735_WHITE:ST7735_BLACK;
  
  byte xs=12;
  byte ys=66;
  String htemp=String((int)temp);
  //byte xss=(temp<10?:temp
  
  set_text(xs,ys,htemp,clear?clearcolor:textcolor,3);
  set_text(xs+(3*htemp.length()*8),ys,"",(clear?clearcolor:textcolor),2);
  tft.write(247); // das °-Zeichen  
  tft.print("C");
  set_text(xs+81,ys+1,String((int)max_temp),clear?clearcolor:ST7735_RED,1);
  tft.write(247);tft.print("C");
  set_text(xs+81,ys+11,String((int)min_temp),clear?clearcolor:ST7735_BLUE,1);
  tft.write(247);tft.print("C");
}

void show_hum(float hum,boolean clear){

  int clearcolor=night_mode?ST7735_BLACK:ST7735_WHITE;
  int textcolor=night_mode?ST7735_WHITE:ST7735_BLACK;

  byte xs=12;
  byte ys=96;
  
  set_text(xs,ys,String((int)hum)+"%",clear?clearcolor:textcolor,3);
  set_text(xs+81,ys+1,String((int)max_humidity)+"%",clear?clearcolor:ST7735_GREEN,1);
  set_text(xs+81,ys+11,String((int)min_humidity)+"%",clear?clearcolor:ST7735_YELLOW,1);
}

void show_pressure(float pressure,boolean clear){
  
  int clearcolor=night_mode?ST7735_BLACK:ST7735_WHITE;
  int textcolor=night_mode?ST7735_WHITE:ST7735_BLACK;
  
  byte xs=12;
  byte ys=130;
  
  set_text(xs,ys,String((int32_t)pressure)+"Pa",clear?clearcolor:textcolor,1);
  
  if(max_pressure>=100000)xs-=8; 
  set_text(xs+68,ys-5,String((int32_t)max_pressure)+"Pa",clear?clearcolor:ST7735_CYAN,1);
  set_text(xs+68,ys+5,String((int32_t)min_pressure)+"Pa",clear?clearcolor:ST7735_MAGENTA,1);//
}

String get_day_of_week(uint8_t dow){ 
  
  String dows="  ";
  switch(dow){
   case 0: dows="So"; break;
   case 1: dows="Mo"; break;
   case 2: dows="Di"; break;
   case 3: dows="Mi"; break;
   case 4: dows="Do"; break;
   case 5: dows="Fr"; break;
   case 6: dows="Sa"; break;
  }
  
  return dows;
}

void show_time(DateTime now, boolean clear){
  
  int clearcolor=night_mode?ST7735_BLACK:ST7735_WHITE;
  int textcolor=night_mode?ST7735_WHITE:ST7735_BLACK;

  tft.setTextColor(clear?clearcolor:textcolor);
      
  tft.setTextSize(3);
  tft.setCursor(21,21);
  if(now.hour()<10)tft.print(0);
  tft.print(now.hour(),DEC);
  tft.print(":");
  if(now.minute()<10)tft.print(0);
  tft.print(now.minute(),DEC);
//    tft.print(":");
//    if(now.second()<10)tft.print(0);
//    tft.print(now.second(),DEC);
}

void show_date(DateTime now,boolean clear){
  
  int clearcolor=night_mode?ST7735_BLACK:ST7735_WHITE;
  int textcolor=night_mode?ST7735_WHITE:ST7735_BLACK;

  tft.setTextColor(clear?clearcolor:textcolor);
  tft.setTextSize(1);
  tft.setCursor(24,47);  
  tft.print(get_day_of_week(now.dayOfWeek()));
  tft.print(", ");
  if(now.day()<10)tft.print(0);
  tft.print(now.day(),DEC);
  tft.print(".");
  if(now.month()<10)tft.print(0);
  tft.print(now.month(),DEC);
  tft.print(".");
  tft.print(now.year(),DEC);
}

void set_text(int x,int y,String text,int color,int size){
  
  tft.setTextSize(size);
  tft.setCursor(x,y);
  tft.setTextColor(color);
  tft.print(text);
}

void display_show(){

  tft.fillScreen(night_mode?ST7735_BLACK:ST7735_WHITE); 
  
  set_text(2,4,"Raumklimaueberwachung",ST7735_BLUE,1);  
  set_text(14,147,"blog.simtronyx.de",ST7735_GREEN,1);
  
  time_old=date_old=RTC.now();
  
  show_time(time_old,false);
  show_date(date_old,false);  
}