Facebook
From Insensitive Marmoset, 1 Week ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 28
  1. #include <SPI.h>
  2. #include <Wire.h>
  3. #include <Adafruit_GFX.h>
  4. #include <Adafruit_SSD1306.h>
  5.  
  6. #define SCREEN_WIDTH 128 // OLED display width, in pixels
  7. #define SCREEN_HEIGHT 32 // OLED display height, in pixels
  8.  
  9. // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
  10. #define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
  11. Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  12.  
  13. #define S1 A0
  14. #define S2 A1
  15. #define S3 A2
  16. #define S4 A3
  17.  
  18. int t1 = 0, t2 = 0, t3 = 0, t4 = 0, v1 = 0;
  19. int mode = 1;   // 1 is for vacuume and 2 for temp
  20. int base_vacuume_value = 0;
  21.  
  22.  
  23.  
  24. void setup() {
  25.  
  26.   Serial.begin(9600);
  27.  
  28.   if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32
  29.     Serial.println(F("SSD1306 allocation failed"));
  30.     for (;;); // Don't proceed, loop forever
  31.   }
  32.   display.display();
  33.   delay(200);
  34.   pinMode(A0, INPUT);
  35.   pinMode(A1, INPUT);
  36.   pinMode(A2, INPUT);
  37.   pinMode(A3, INPUT);
  38.   pinMode(A10, INPUT);
  39.   display.clearDisplay();
  40.   if(mode == 1)
  41.   {
  42.     base_vacuume_value = analogRead(A10);
  43.     delay(10);
  44.   }
  45. }
  46.  
  47. void loop() {
  48.  
  49.   if (mode == 1)
  50.   {
  51.     v1 = calc_vacuume(analogRead(A10));
  52.     Serial.print(v1);
  53. //    Serial.println(";");
  54.    
  55.     display.clearDisplay();
  56.     display.setTextSize(2);
  57.     display.setTextColor(WHITE);
  58.  
  59.     display.setCursor(0, 0);
  60.     display.print(v1);
  61.     display.print(" Kpa");
  62.     display.display();
  63.     delay(300);
  64.   }
  65.  
  66.   else
  67.   {
  68.     t1 = calc_temp(calc_mean(1, 10));
  69.     t2 = calc_temp(calc_mean(2, 10));
  70.     t3 = calc_temp(calc_mean(3, 10));
  71.     t4 = calc_temp(calc_mean(4, 10));
  72.  
  73.     display.clearDisplay();
  74.     display.setTextSize(2);
  75.     display.setTextColor(WHITE);
  76.  
  77.     display.setCursor(0, 0);
  78.     display.print(t1);
  79.  
  80.     display.setCursor(64, 0);
  81.     display.print(t2);
  82.  
  83.     display.setCursor(0, 16);
  84.     display.print(t3);
  85.  
  86.     display.setCursor(64, 16);
  87.     display.print(t4);
  88.  
  89.     display.display();
  90.    
  91.     Serial.print(t1);
  92.     Serial.print(";");
  93.  
  94.     Serial.print(t2);
  95.     Serial.print(";");
  96.  
  97.     Serial.print(t3);
  98.     Serial.print(";");
  99.  
  100.     Serial.print(t4);
  101.  
  102.     Serial.println("");
  103.     display.display();
  104.     delay(1000);
  105.  
  106.   }
  107.  
  108. }
  109.  
  110. int calc_temp(int voltage)
  111. {
  112.   float temp, logR2, R2, T, R1 = 100000;
  113.   float c1 = 0.001900543448634192, c2 = 0.00004522806498754414, c3 = 6.218570562845963e-7;
  114.   R2 = R1 * (1023.0 / (float)voltage - 1.0);
  115.   logR2 = log(R2);
  116.   T = (1.0 / (c1 + c2 * logR2 + c3 * logR2 * logR2 * logR2));
  117.   temp = T - 273.15;
  118.  
  119.   if(temp < 0 )
  120.     temp = 0;
  121.  
  122.   return temp;
  123.  
  124. }
  125.  
  126. int calc_vacuume(int vacuume)
  127. {
  128.   return (vacuume  = -0.03052503*vacuume + 112.45) ;
  129. }
  130.  
  131. int calc_mean(int sens_num, int num_of_samples)
  132. {
  133.   int sum = 0;
  134.  
  135.   for(int i = 0 ; i < num_of_samples ; i++)
  136.   {
  137.    
  138.     delay(5);
  139.     if(sens_num == 1)
  140.     {
  141.       sum += analogRead(A0);
  142.     }
  143.  
  144.     else if(sens_num == 2)
  145.     {
  146.       sum += analogRead(A1);
  147.     }
  148.  
  149.     else if(sens_num == 3)
  150.     {
  151.       sum += analogRead(A2);
  152.     }
  153.  
  154.     else if(sens_num == 4)
  155.     {
  156.       sum += analogRead(A3);
  157.     }
  158.      
  159.   }
  160.   return (int)(sum/num_of_samples);
  161. }