#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
const int pinSS[2][8] = {{33, 32, 12, 14, 27, 25, 26, 13}, {5, 17, 4, 2, 15, 18, 19, 16}};
// segments: a, b, c, d, e, f, g, dp
const int hex_number[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
// in binary: 00111111, 00000110, 01011011, 01001111, 01100110, 01101101,01111101, 00000111, 01111111, 01101111
const int seaLevel = 1015; // in hPa
// data from https://www.ventusky.com/bandung
Adafruit_BMP280 bmp;
float temperature;
float pressure;
float altitude;
void changeNumber(int ssNumber, int number) {
for (int i = 0; i < 8; i++) {
digitalWrite(pinSS[ssNumber - 1][i], !((hex_number[number] >> i) & 0x1));
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
bmp.begin(0x76);
for (int i = 0; i < 8; i++) {
pinMode(pinSS[0][i], OUTPUT);
pinMode(pinSS[1][i], OUTPUT);
digitalWrite(pinSS[0][i], HIGH);
digitalWrite(pinSS[1][i], HIGH);
}
}
void loop() {
// put your main code here, to run repeatedly:
temperature = bmp.readTemperature();
pressure = bmp.readPressure();
altitude = bmp.readAltitude();
changeNumber(1, (int)(floor(temperature) / 10));
changeNumber(2, (int)(floor(temperature)) % 10);
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" oC");
Serial.print("Pressure: ");
Serial.print(pressure);
Serial.println(" Pa");
Serial.print("Altitude: ");
Serial.print(altitude);
Serial.println(" m");
Serial.println("--------------------");
delay(2000);
}