easyC BMP180 – mjerenje temperature i tlaka zraka

Što ćete naučiti:

– Spojiti BMP180 senzor koristeći easyC priključak

– Očitati i prikazati temperaturu i tlak zraka

Zadatak

Spojite BMP180 senzor koristeći easyC priključak na nosač Arduino MKR1000 mikrokontrolera te izradite program kojim ćete na Serial Monitor-u prikazati tlak i temperaturu zraka.

Kako bi uspješno riješili zadatak, preuzmite biblioteku SFE_BMP180.h na svoje računalo i dodajte je u Arduino razvojno okruženje odabirom Sketch -> Include Library -> Add .ZIP Library… 

Prikaz spajanja

Arduino kod
#include "SFE_BMP180.h"   // omogućava korištenje BMP180 senzora
#include "Wire.h"
 
SFE_BMP180 tlak;
 
double tlakZraka, tempZraka; 
 
void setup() {

  Serial.begin(9600);
   
  // provjera je li senzor povezan i radi li sve ispravno
  if(tlak.begin())  Serial.println("BMP180 uspjesno povezan.");
  else
  {
    Serial.print("BMP180 nije uspjesno povezan.");
    while(1);
  }
}
 
void loop() {
   
  // ocitavam i printam tlak zraka
  tlakZraka = ocitajTlak();
  Serial.println("Tlak zraka = " + String(tlakZraka) + "hPa");
   
  // ocitavam i zapisujem temp zraka
  tempZraka = ocitajTemperaturu();
  Serial.print("Temp zraka = " + String(tempZraka));
  Serial.print(char(248));
  Serial.println("C");
 
  // ispisuj podatke svakih 1000ms = 1sekundu
  delay(1000);
  Serial.println();
 
}
 
double ocitajTlak()
{
  char status;
 /*
  *  definiramo varijable:
  *  temp - temperatura zraka
  *  Tlak - tlak zraka
  *  tlak0 - tlak na povrsini mora
  *  nadVisina - nadmorska visina  
  */
  double temp, Tlak, tlak0, nadVisina;   
  status = tlak.startTemperature();
  if(status != 0)
  {
    delay(status);
    status = tlak.getTemperature(temp);
    if(status != 0)
    {
      status = tlak.startPressure(3);
      if(status != 0)
      {
        delay(status);
        status = tlak.getPressure(Tlak,temp);
        if(status != 0)
        {
          return(Tlak);
        }
      }
    }
  }
}
 
double ocitajTemperaturu()
{
  char status;
  double temp;
  status = tlak.startTemperature();
  if(status != 0)
  {
    delay(status);
    status = tlak.getTemperature(temp);
    if(status != 0)
    {
      return(temp);
    }
  }
}