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