Facebook
From Sloppy Iguana, 3 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 151
  1. #include <EEPROM.h>
  2. #include <LiquidCrystal.h>
  3.  
  4. //pin od przycisku
  5. #define PIN9 9
  6. //maksymalna liczba pomiarów
  7. #define liczbaPomiarow 60
  8.  
  9. LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
  10.  
  11. int adres = 0;
  12. int wartosc = 0;
  13. float srednia = 0;
  14. int licznik = 0;
  15. int max = 0;
  16.  
  17. void setup()
  18. {
  19.   //czyszczenie pamięci
  20.   for (int i = 0 ; i < EEPROM.length() ; i++) {
  21.     EEPROM.write(i, 0);
  22.   }
  23.  
  24.   Serial.begin(9600);
  25.   lcd.begin(16, 2);
  26.   lcd.setCursor(0,0);
  27.   lcd.print("Miernik swiatla");
  28.   lcd.setCursor(0,1);
  29.   lcd.print("Swiatlo: ");
  30. }
  31.  
  32. void loop() {
  33.  
  34.   //jeżeli przycisk nie jest wciśnięty
  35.   if (digitalRead(PIN9) == HIGH) {
  36.     wartosc = analogRead(A0)/4;//dzielimy, bo wejście analogowe 0-1023 a wartość zapisywana w EEPROMie 0-255
  37.  
  38.   EEPROM.write(adres, wartosc);
  39.   adres = adres + 1;
  40.   max = max + 1;
  41.   if (adres == 60)
  42.   {    
  43.      adres = 0;
  44.   }
  45.   lcd.setCursor(9,1);
  46.   lcd.print(wartosc);
  47.   delay(1000);
  48.   }
  49.   //gdy naciśniemy przycisk powinniśmy otrzymać średnią z pomiarów
  50.   else{
  51.   int wynik = 0;
  52.   lcd.clear();
  53.   lcd.setCursor(4,0);
  54.   lcd.print("Srednia");
  55.   for (int i = 0; i < liczbaPomiarow; i++)
  56.   {
  57.     //bierzemy tylko te miejsca, które nie zostały wyczyszczone
  58.     if(EEPROM.read(i) != 0)
  59.     {
  60.     licznik += 1;
  61.     wynik += EEPROM.read(i)*4;
  62.     }
  63.   }
  64.   srednia = wynik/licznik;
  65.   lcd.setCursor(5,1);
  66.   lcd.print(srednia);
  67.    
  68.   }
  69. }
  70.