Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h> //implementacja biblioteki do obslugi wyswietlacza
- #define ADC_LSB (5.0/1024)
- #define PWM_LSB (5.0/256)
- #define PWM_OUTPUT 6
- #define Rd 1.0 // kohm
- #define Switch
- LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //definicja pinow wyswietlacza
- boolean pomiar = 0; //utworzenie zmiennej sluzacej do rozpoczecia i zakonczenia cyklu pomiaru
- boolean stan; //utworzenie zmiennej sluzacej do odczytu stanu przycisku
- int liczba_pomiarow = 0;
- void setup() {
- lcd.begin(16, 2);
- lcd.print("...");
- pinMode(7, INPUT); //zdeklarowanie pinu 7 jako wejscie
- }
- void loop() {
- stan = digitalRead(7); //odczyt stanu zmiennej
- if(stan == HIGH) //sprawdzanie stanu zmiennej
- {
- pomiar=1; // rozpoczecie cyklu
- liczba_pomiarow++; //inkrementacja zmiennej liczacej pomiary
- }
- if(pomiar == 1) // sprawdzanie stanu zmiennej odpowiadajacej za start cyklu
- {
- lcd.clear(); //czyszczenie wyswietlacza
- delay(100); //opoznienie 100ms
- lcd.setCursor(0, 0); //ustawienie kursora na zadane wspolzedne
- lcd.print("Pomiar nr."); //wyswietlenie tesktu na wyswietlaczu
- lcd.setCursor(12, 0);
- lcd.print(liczba_pomiarow);
- int a0,a1;
- float u0,u1,u2,i2; //deklaracja zmiennych pomiarowych
- a0 = analogRead(A0); //odczyt stanu pinu analogowego
- u0 = a0*ADC_LSB;
- analogWrite(PWM_OUTPUT, a0/4);
- u1 = analogAverage(A1, 100);//usrednienie wartsoci napiecia
- u2 = analogAverage(A2, 100);
- i2 = (u1-u2) / Rd; //obliczanie natezenia pradu
- if (i2 < 0)
- i2 = 0.0;
- lcd.clear();
- delay(500);
- lcd.setCursor(0, 0);
- lcd.print(u0,3);
- lcd.print('V');
- lcd.setCursor(8, 0);
- lcd.print(u1,3);
- lcd.print('V');
- lcd.setCursor(0, 1);
- lcd.print(u2,3);
- lcd.print('V');
- lcd.setCursor(8, 1);
- lcd.print(i2,3);
- lcd.print("mA");
- pomiar = 0;
- delay(500);
- }
- }
- float analogAverage(int input, int time) //fukcja odpowiadajaca za liczenie sredniej arytmetycznej
- {
- unsigned long start;
- unsigned long a0 = 0;
- unsigned long count = 0;
- float u0;
- start = millis(); //rozpoczecie odliczania
- while (millis()-start < time)
- {
- a0 += analogRead(input);
- count ++;
- }
- u0 = a0*ADC_LSB;
- u0 /= count;
- return u0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement