#include #include #include #include #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 32 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); #define S1 A0 #define S2 A1 #define S3 A2 #define S4 A3 int t1 = 0, t2 = 0, t3 = 0, t4 = 0, v1 = 0; int mode = 1; // 1 is for vacuume and 2 for temp int base_vacuume_value = 0; void setup() { Serial.begin(9600); if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32 Serial.println(F("SSD1306 allocation failed")); for (;;); // Don't proceed, loop forever } display.display(); delay(200); pinMode(A0, INPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); pinMode(A3, INPUT); pinMode(A10, INPUT); display.clearDisplay(); if(mode == 1) { base_vacuume_value = analogRead(A10); delay(10); } } void loop() { if (mode == 1) { v1 = calc_vacuume(analogRead(A10)); Serial.print(v1); // Serial.println(";"); display.clearDisplay(); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0, 0); display.print(v1); display.print(" Kpa"); display.display(); delay(300); } else { t1 = calc_temp(calc_mean(1, 10)); t2 = calc_temp(calc_mean(2, 10)); t3 = calc_temp(calc_mean(3, 10)); t4 = calc_temp(calc_mean(4, 10)); display.clearDisplay(); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0, 0); display.print(t1); display.setCursor(64, 0); display.print(t2); display.setCursor(0, 16); display.print(t3); display.setCursor(64, 16); display.print(t4); display.display(); Serial.print(t1); Serial.print(";"); Serial.print(t2); Serial.print(";"); Serial.print(t3); Serial.print(";"); Serial.print(t4); Serial.println(""); display.display(); delay(1000); } } int calc_temp(int voltage) { float temp, logR2, R2, T, R1 = 100000; float c1 = 0.001900543448634192, c2 = 0.00004522806498754414, c3 = 6.218570562845963e-7; R2 = R1 * (1023.0 / (float)voltage - 1.0); logR2 = log(R2); T = (1.0 / (c1 + c2 * logR2 + c3 * logR2 * logR2 * logR2)); temp = T - 273.15; if(temp < 0 ) temp = 0; return temp; } int calc_vacuume(int vacuume) { return (vacuume = -0.03052503*vacuume + 112.45) ; } int calc_mean(int sens_num, int num_of_samples) { int sum = 0; for(int i = 0 ; i < num_of_samples ; i++) { delay(5); if(sens_num == 1) { sum += analogRead(A0); } else if(sens_num == 2) { sum += analogRead(A1); } else if(sens_num == 3) { sum += analogRead(A2); } else if(sens_num == 4) { sum += analogRead(A3); } } return (int)(sum/num_of_samples); }