• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zaokrąglanie wartości czujnika ciśnienia BMP180
#1
Witam, zrobiłem sobie stacje pogody, wykorzystał do tego celu
- ESP8266-01
- DHT22
- BMP180
dane są wysyłane na serwer:
https://thingspeak.com/

Wszystko działa poprawnie odczytuje dane z czujników i wyszyła na serwer, aczkolwiek męczy mnie mała zagwozdka.

Dane o ciśnieniu wyświetla w postaci 101810 Pa, chciałbym uzyskać wynik w postaci 1018 Pa, za chiny nie mogę dojść do tego jak to osiągnąć.



Kod programu w grany do ESP8266-01 Arduino IDE
Kod:
#include <DHT.h>
#include <OneWire.h>
#include <Adafruit_BMP085.h>
#include <ESP8266WiFi.h>
#include "SSD1306.h"
SSD1306  display(0x3c, 0, 2);

#define DHTPIN 1  //GPIO1 (Tx)
#define DHTTYPE  DHT22

const char* ssid     = "";
const char* password = "";
const char* host = "api.thingspeak.com";

const char* writeAPIKey = "";

//DHT22
float temperature_buiten;
float temperature_buiten2;
DHT dht(DHTPIN, DHTTYPE, 15);


//bmp180
Adafruit_BMP085 bmp;

void setup() {
 //I2C
  Wire.pins(0, 2);
  Wire.begin(0, 2);
 
 // instalacja sensorow
 //dht22
 dht.begin();
 
//bmp180
 if (!bmp.begin()) {
   //   Serial.println("Brak polaczenia BMP180/BMP085");
   //   while (1) {}

 }
 //OLED
  display.init();
 display.flipScreenVertically();
 display.setFont(ArialMT_Plain_10);
 delay(1000);

 // laczenie z routerem WiFi
 WiFi.begin(ssid, password);

 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
 }
}

void loop() {
 
 //dht22 --------------------
 float humidity = dht.readHumidity();
 float temperature = dht.readTemperature();
 if (isnan(humidity) || isnan(temperature)) {
   return;
   
 }
 //bmp -------------------------
   String t=String(bmp.readTemperature());
   String p=String(bmp.readPressure());
   const float wysokoscwmetrach = 197.93;
//OLED stuff--------------------------
 display.clear();
 display.drawString(0,10,p);//bmp cisnienie
 display.drawString(0,38,String(humidity));//dht22 wilgotnosc
 display.display();

 // Nawiazywanie polaczenia z TCP
 WiFiClient client;
 const int httpPort = 80;
 if (!client.connect(host, httpPort)) {
   return;
 }

 String url = "/update?key=";
 url += writeAPIKey;
 url += "&field1=";
 url += String(temperature); //Temperatura (DHT22)
 url += "&field2=";
 url += String(humidity);// Wilgotność (DHT22)
 url += "&field3=";
 url += String(bmp.readTemperature());//Temperatura (BMP180)
 url += "&field4=";
 url +=String(bmp.readSealevelPressure((wysokoscwmetrach)));// Cisnienie powietrza (BMP180)
 url += "&field5=";
 url +=String(bmp.readAltitude());// Wysokosc (BMP180)
 url += "\r\n";

 // Wyślij żądanie do serwera
 client.print(String("GET ") + url + " HTTP/1.1\r\n" +
              "Host: " + host + "\r\n" +
              "Connection: close\r\n\r\n");

 delay(1000);

}
 
Odpowiedź
#2
Klasa String ma sporo metod. Przejrzyj je aby wiedzieć jakie są możliwości a następnie jedną metodą odnajdź kropkę w stringu a drugą metodą wytnij string od początku do kropki.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#3
Witam,
int cisnienie_hPa = (int) (bmp.readPressure() / 100);
Pozdrawiam.
 
Odpowiedź
#4
(05-23-2017, 10:28)Smaczek napisał(a): Witam,
int cisnienie_hPa = (int) (bmp.readPressure() / 100);
Pozdrawiam.

Chyba prościej się nie da Wink
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#5
Zadziałało dzięki wielkie

Wysłane z mojego LG-H955 przy użyciu Tapatalka
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości