Det som er fint med denne er at den går på I2C kommunikasjon. Det betyr at det er en bus-løsning som kun trenger to ledere i tillegg til + og -. Med en slik bus-løsning kan flere sensorer kobles på de samme to ledningene SDA og SCL..
Det som er kjempeviktig med denne sensoren er at den kun skal ha 3.3v.
Koble opp slik:
Kort | 3.3v | GND | SCL | SDA |
UNO | 3.3v | GND | A5 | A4 |
Mega | 3.3v | GND | 21 | 20 |
Nano | 3.3v | GND | A5 | A4 |
Se denne siden for hvor du kan kjøpe delene.
Her er kildekoden til et enkelt program: (Må installere biblioteket SFE_BMP180 som kan finnes her)
/* www.hushagehobby.no * Måling av barometrisk trykk og temperatur. I2C * 28/4-2017 * * Test Arduino Uno- BMP180 GY-68 */ #include <SFE_BMP180.h> #include <Wire.h> SFE_BMP180 pressure; #define ALTITUDE 45.0 // Høyde hushagehobby.no double T; //Temperatur double P; //Barometrisk trykk void setup() { Serial.begin(9600); startTempogtrykk(); } void loop() { lestempogtrykk(); delay(5000); // Pause for 5 seconds. } void startTempogtrykk() { Serial.println("Starter"); if (pressure.begin()) Serial.println("BMP180 startet"); else { Serial.println("BMP180 startet ikke"); } } void lestempogtrykk() { char status; status = pressure.startTemperature(); if (status != 0) { delay(status); //Vent på måler starter //Måling av Temperatur status = pressure.getTemperature(T); // Temperatur blir lagret i variabelen T if (status != 0) //status er 0 vis det er feil på målingen, mens 1 dersom den fungerer { Serial.print("temperatur: "); Serial.print(T,1); //T er temperatur, og 1 er antall tall etter komma Serial.print(" deg C, "); //Start av barometrisk trykk måling status = pressure.startPressure(1); // 0-3 for samplingsintervall. 3 høyest oppløsning. if (status != 0) //status er 0 vis det er feil på målingen, mens 1 dersom den fungerer { delay(status); //Vent på måler starter //Returnerer det målte trykket: status = pressure.getPressure(P,T); //Trykkmaåling. P er variabelen som trykket lagres i. T er det tidligere målte temperaturen som brukes i beregningen av Trykk. if (status != 0) { Serial.print("absolutt trykk: "); Serial.print(P,1); Serial.println(" mb"); } else Serial.println("feil på trykkmåling"); } else Serial.println("feil på trykkmåling"); } else Serial.println("feil på temperaturmåling"); } else Serial.println("feil på temperaturmåling"); }
Det som kan avleses i «Seriell Overvåker» er da :
Dersom det er noe som er uklart eller feil i koden, så skriv gjerne en kommentar