#include #include //pin od przycisku #define PIN9 9 //maksymalna liczba pomiarów #define liczbaPomiarow 60 LiquidCrystal lcd(12, 11, 7, 6, 5, 4); int adres = 0; int wartosc = 0; float srednia = 0; int licznik = 0; int max = 0; void setup() { //czyszczenie pamięci for (int i = 0 ; i < EEPROM.length() ; i++) { EEPROM.write(i, 0); } Serial.begin(9600); lcd.begin(16, 2); lcd.setCursor(0,0); lcd.print("Miernik swiatla"); lcd.setCursor(0,1); lcd.print("Swiatlo: "); } void loop() { //jeżeli przycisk nie jest wciśnięty if (digitalRead(PIN9) == HIGH) { wartosc = analogRead(A0)/4;//dzielimy, bo wejście analogowe 0-1023 a wartość zapisywana w EEPROMie 0-255 EEPROM.write(adres, wartosc); adres = adres + 1; max = max + 1; if (adres == 60) { adres = 0; } lcd.setCursor(9,1); lcd.print(wartosc); delay(1000); } //gdy naciśniemy przycisk powinniśmy otrzymać średnią z pomiarów else{ int wynik = 0; lcd.clear(); lcd.setCursor(4,0); lcd.print("Srednia"); for (int i = 0; i < liczbaPomiarow; i++) { //bierzemy tylko te miejsca, które nie zostały wyczyszczone if(EEPROM.read(i) != 0) { licznik += 1; wynik += EEPROM.read(i)*4; } } srednia = wynik/licznik; lcd.setCursor(5,1); lcd.print(srednia); } }