3.5 🚧 Sensoren
Bosch BMP280 Druck und Temperatursensor mit I2C und SPI Schnittstelle
[Infoseite zum Sensor Pressure sensor BMP280] [Bosch Datenblatt] [MezData Links zu Sensoren]
Ich nutze PB8 und PB9 für I2C. PB10 und PB11 könnten auch I2C werden jedoch als USART für das Bluetooth-Modul benötigt.
I2C Schnittstelle auf Seriell ausgeben
#include <Wire.h>
#include <Adafruit_BMP280.h>
Adafruit_BMP280 bmp; // I2C
void setup() {
Serial.begin(9600);
while ( !Serial ) delay(100); // wait for native usb
Serial.println(F("BMP280 test"));
unsigned status;
status = bmp.begin(0x76); // Adafruit nimmt sonst 0x77 als Geräteadresse an
if (!status) {
Serial.println(F("Kein Sensor erkannt."));
while (1) delay(10);
}
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
Adafruit_BMP280::FILTER_X16, /* Filtering. */
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
Serial.print(F("Temperature = "));
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print(F("Pressure = "));
Serial.print(bmp.readPressure());
Serial.println(" Pa");
Serial.print(F("Approx altitude = "));
Serial.print(bmp.readAltitude(1013.25)); // Adjusted to local forecast!
Serial.println(" m");
Serial.println();
delay(2000);
}
I2C auf LCD ausgeben
#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>
#include <Adafruit_BMP280.h>
LiquidCrystal_PCF8574 lcd (0x27); // LCD-Adresse auf 0x27
Adafruit_BMP280 bmp; // I2C
void setup() {
unsigned status;
status = bmp.begin(0x76); // Adafruit nimmt sonst 0x77 als Adresse
lcd.begin(16, 2); // initialize the lcd
lcd.clear();
lcd.setBacklight(255);
if (!status) {
lcd.print(F("Kein Sensor erkannt."));
while (1) delay(10);
}
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
Adafruit_BMP280::FILTER_X16, /* Filtering. */
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
lcd.clear();
lcd.setCursor(0,0); // erstes Zeichen, erste Zeile
lcd.print(F("Temp(C): "));
lcd.print(bmp.readTemperature());
lcd.setCursor(0,1); // erstes Zeichen, zweite Zeile
lcd.print(F("p(hPa) : "));
lcd.print(bmp.readPressure()/100); // Ausgabe in HektoPascal
delay(2000);
}
SPI Schnittstelle
#include <SPI.h>
#include <Adafruit_BMP280.h>
#define BMP_SCK (PB13)
#define BMP_MISO (PB14)
#define BMP_MOSI (PB15)
#define BMP_CS (PB12) // ChipSelect oder SS = SlaveSelect
Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);
void setup() {
Serial.begin(9600);
while ( !Serial ) delay(100); // wait for native usb
Serial.println(F("BMP280 test"));
unsigned status;
status = bmp.begin();
if (!status) {
Serial.println(F("Kein Sensor erkannt."));
while (1) delay(10);
}
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
Adafruit_BMP280::FILTER_X16, /* Filtering. */
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
Serial.print(F("Temperature = "));
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print(F("Pressure = "));
Serial.print(bmp.readPressure());
Serial.println(" Pa");
Serial.print(F("Approx altitude = "));
Serial.print(bmp.readAltitude(1013.25)); // Adjusted to local forecast!
Serial.println(" m");
Serial.println();
delay(2000);
}
Wägemodul HX711
Synopsis: [HX711AD Wägedrucksensor mit Wägezelle – 1kg – Gewichtsmessung] [wolles-elektronikkiste.de/hx711-basierte-waage] [wolles-elektronikkiste.de/dehnungsmessstreifen] [Datenblatt]