// Inkludering av biblioteker #include #include #include #include #include int pinTemp = A1; int pinFukt = A0; float digTemp; // Digitalt avlest temperatur float digFukt; // Digitalt avlest fuktighet float temp; // Beregnet temperatur i Celsius float fukt; // Beregnet relativ fuktighet i % float tempCal=0.0; // lineær kalibrering av temperatur float fuktCal=0.0; // lineær kalibrering av fukt // Deklarasjon av klasser // Displayet Adafruit_SSD1306 display(4); // Deklarasjon av display som klassen Adafruit_SSD1306 // Partikkelsensoren #define PM_TX 2 #define PM_RX 3 SDS011 sds; void setup() { Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Initialiser displayet med adressen 0x3C sds.begin(PM_TX, PM_RX); // Initialisering av partikkelsensoren } void loop() { // Les av temperatur og fuktighet digTemp = analogRead(A1); digFukt = analogRead(A0); temp = digTemp*500.0/1023 + tempCal; //LM35 fukt = (digFukt/1023 - 0.16)/0.0062; fukt = fukt/(1.0546 -0.00216*temp)+fuktCal; // korrigerer fuktighetsmåling med temp // Les av partikkeltetthet float pm25, pm10; int error; do { error = sds.read(&pm25, &pm10); } while (error != 0); // Fortsett å les av støvmåleren helt til gyldige data // Velg den utskriften som passer: Til monitor eller til fil, kommenter ut den som ikke passer // Skriv til monitoren Serial.print((float)millis()/1000,1); // Angir tid fra start i sekunder med en desimal Serial.print(", "); Serial.print("Temp: "); Serial.print(temp); Serial.print("C"); Serial.print(", "); Serial.print("Fukt: "); Serial.print(fukt,1); Serial.print("%"); Serial.print(", "); Serial.print("pm2,5: "); Serial.print(pm25); // Skriv ut støvkonsentrasjon 2,5 um Serial.print("um"); Serial.print(", "); Serial.print("pm10: "); Serial.print(pm10); // Skriv ut støvkonsentrasjon 10 um Serial.print("um"); Serial.println(", "); /* // Skriv til fil Serial.print((float)millis()/1000,1); Serial.print(";"); Serial.print(temp,1); Serial.print(";"); Serial.print(fukt,1); Serial.print(";"); Serial.print(pm25); // Skriv ut støvkonsentrasjon 2,5 um Serial.print(";"); Serial.print(pm10); // Skriv ut støvkonsentrasjon 10 um Serial.println(";"); */ // Skriv til displayet // Klargjør display for utskrift display.clearDisplay(); // Slett informasjon på display display.setTextSize(1); // Sett størrelse på tekst display.setTextColor(WHITE); // Hvit tekst på sort bakgrunn // Skriver ut luftfuktighet med en desimaler display.setCursor(0,0); // Plasser markør øverst til venstre display.print("Luftfukt: "); // Skriv "Luftfukt. display.print(fukt,1); // Skriv verdien til luftfukt med en desimaler display.println(" %"); // Skriv benevning % // Skriver ut temperatur med en desimal display.setCursor(0,10); // Flytt markør til andre linje display.print("Temp.: "); // Skriv "Temp.:", Temperatur display.print(temp,1); // Skriv den målte temperaturen i ... display.println(" C"); // ... grader C // Skriver ut partikkelkonsentrasjonen display.setCursor(0,20); // Flytt markør til neste linje display.print("pm2.5: "); // ... ug/m3 display.print(pm25,1); // Skriv den målte pm 2,5 u display.print(" pm10: "); // ... ug/m3 display.println(pm10,1); // Skriv den målte pm 10 u display.display(); delay(500); }