Verwendung der Library MyBMP280 mit Attiny85
Für Attiny kann die Library nur mit I2C-Schnittstelle verwendet werden. Da von den 5 verfügbaren Pins eines Attiny85 bereits 4 Pins für die SPI-Schnittstelle belegt würden, habe ich die SPI-Schnittstelle für Attiny nicht realisiert.
Testaufbau:
Verwendete Bauteile:
- 1 Attiny85 (Attiny45 hat zu wenig Flash-Speicherplatz)
- 1 BMP280 Luftdrucksensor von Adafruit
- 1 7-Segmentanzeige Sparkfun mit I2C-Schnittstelle
- 1 Resettaster
- 1 Programmierstecker 4-polig
- 1 Spannungsversorgung +5V
Optional:
- 2 Widerstände 10 kOhm (I2C-Pullup-Widerstände, falls diese nicht am BMP280 Breakout Board vorhanden sind)
Anschluss des Sensors am Attiny:
Attiny Sensor (I2C)
VCC -> VIN
GND -> GND
Pin 7 -> SCK (SCL)
Pin 5 -> SDI (SDA)
Programmbeispiel MyBMP280
Nachfolgendes Programmbeispiel gibt die gemessenen bzw. berechneten Werte für Temperatur, Luftdruck und reduzierten Luftdruck auf einer 4-stelligen 7-Segmentanzeige mit I2C-Schnittstelle aus. Die Ausgabe erfolgt auf einer Anzeige von Sparkfun, für die ich auch eine Library geschrieben habe.
Neben der Library MyBMP280 werden noch folgende Libraries benötigt:
- MySparkfun7SegI2C: Meine Library für die 7-Segmentanzeige kann hier heruntergeladen werden: 7-Segm.anz. Sparkfun
- TinyWireM: Zur I2C-Kommunikation für Attiny, ein Link dazu ist hier zu finden: Fremd-Libraries
//Testprogramm für Luftdrucksensor BMP280
//Code fuer Attiny
//Author Retian
//Version 2.0
#include <MySparkfun7SegI2C.h>
#include <MyBMP280.h>
MyBMP280 BMP(0x77);
MySparkfun7SegI2C Seg7(0x71);
int hoehe = 460; //Standorthoehe ueber dem Meer
void setup() {
if (BMP.isReady()) BMP.init();
else while(1); //Im Fehlerfall geht's hier nicht weiter!
}
void loop() {
//Anzeige der Temperatur
float temp = BMP.readTemp();
Seg7.sendFloatVal(temp);
delay(2000);
//Anzeige des Luftdrucks
float pressure = BMP.readPress();
Seg7.sendFloatVal(pressure);
delay(2000);
//Anzeige des reduzierten Luftdrucks
float redPress = BMP.readReducedPress(hoehe);
Seg7.sendFloatVal(redPress);
delay(2000);
}