Advertisement
elektronek

Zdenda Magor Šádek - Kilowattmetr

Apr 29th, 2019
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3.  
  4. LiquidCrystal_I2C lcd(0x3F, 20, 4);
  5. int F1=0; // aktuální počet impulzů Fáze 1
  6. int F2=0; // aktuální počet impulzů Fáze 2
  7. int F3=0; // aktuální počet impulzů Fáze 3
  8. int F11=0; // Stav počítadla Fáze 1
  9. int F22=0; // Stav počítadla Fáze 2
  10. int F33=0; // Stav počítadla Fáze 3
  11. int Pi=1600; // počet impulzů na kilowathodinu
  12.  
  13. int F1a=0; // aktuální stav fáze 1
  14. int F2a=0; // aktuální stav fáze 2
  15. int F3a=0; // aktuální stav fáze 3
  16. int F1l=0; // poslední čtený stav fáze 1
  17. int F2l=0; // poslední čtený stav fáze 1
  18. int F3l=0; // poslední čtený stav fáze 1
  19.  
  20. // Pomocna promenna pro zobrazeni dat
  21. int changeData = 1;
  22.  
  23. ISR(PCINT1_vect){
  24.   if (!(PINC & (1<<PC0))) F1++;
  25.   if (!(PINC & (1<<PC1))) F2++;
  26.   if (!(PINC & (1<<PC2))) F3++;
  27. }
  28.  
  29.  
  30. void setup() {
  31.   pinMode(14,INPUT_PULLUP); // A0
  32.   pinMode(15,INPUT_PULLUP); // A1
  33.   pinMode(16,INPUT_PULLUP); // A2
  34.  
  35.   PCICR |= (1<<PCIE1); // povolis PCINT na Port C
  36.   PCMSK1 |= 7; // piny A0,A1,A2 - arduino piny
  37.   sei(); // povolis preruseni globalne
  38.  
  39.   lcd.begin();
  40.   lcd.backlight();
  41.   lcd.setCursor ( 0, 0 );
  42.   lcd.print("Spotreba elektriky");
  43.   lcd.setCursor ( 0, 1 );
  44.   lcd.print("F1  I- ");
  45.   lcd.setCursor ( 12, 1 );
  46.   lcd.print("P1-");
  47.   lcd.setCursor ( 0, 2 );
  48.   lcd.print("F2  I-");
  49.   lcd.setCursor ( 12, 2 );
  50.   lcd.print("P2-");
  51.   lcd.setCursor ( 0, 3);
  52.   lcd.print("F3  I-");
  53. }
  54.  
  55. void loop() {
  56.   // nastavení kurzoru na devátý znak, druhý řádek
  57.   if (F1>=Pi){
  58.     F1=0;
  59.     lcd.setCursor(7,1);
  60.     lcd.print("    ");
  61.     F11++;
  62.     changeData = 1;
  63.   }
  64.  
  65.   if (F2>=Pi){
  66.     F2=0;
  67.     lcd.setCursor(7,2);
  68.     lcd.print("    ");
  69.     F22++;
  70.     changeData = 1;
  71.   }
  72.  
  73.   if (F3>=Pi){
  74.     F3=0;
  75.     lcd.setCursor(7,2);
  76.     lcd.print("    ");
  77.     F33++;
  78.     changeData = 1;
  79.   }
  80.  
  81.   // Pokud byly zmeneny data pro vypis, tak je vykresli
  82.   if (changeData == 1)
  83.   {
  84.     lcd.setCursor(7,1);
  85.     lcd.print (F1);
  86.     lcd.setCursor(15,1);
  87.     lcd.print(F11);
  88.     lcd.setCursor(7,2);
  89.     lcd.print(F2);
  90.     lcd.setCursor(15,2);
  91.     lcd.print(F22);
  92.     lcd.setCursor(7,3);
  93.     lcd.print(F3);
  94.     //serial.print (F1);
  95.     changeData = 0;
  96.   }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement