Снимаем показания с электросчетчика при помощи Arduino

код из видео


#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <MsTimer2.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

volatile unsigned int state = 3200;
volatile unsigned int blinkMin = 0;
volatile unsigned int tm = 0;
unsigned int kWh = 0;
unsigned int Wm = 0;
 
void setup(){
  pinMode(2, INPUT_PULLUP); 
 
  attachInterrupt(0, blink, RISING);  // 2

  MsTimer2::set(60000, MsTimer);  
  MsTimer2::start();

  lcd.begin();
  lcd.backlight();
}
 
void loop(){
                                            // в цикле выводим инфу на экран
   lcd.setCursor(0, 0);
   lcd.print(kWh); 
   lcd.print(","); 
//   lcd.print(map(state, 0, 3200, 0, 10));  // можно мапить до одного символа
   lcd.print(state); 
   lcd.print(" kW'h      "); 

   lcd.setCursor(1, 1);
   lcd.print(Wm);                           // сколько раз блимнули за минуту
                                            // пригодится для графика потребления

  
}

void MsTimer(){
  Wm = blinkMin;  
  blinkMin = 0;
  /// тут бы флаг за запись в SD
}
 
void blink(){
  state--;
  if(state == 0 || state > 3200){ 
     kWh++;
     // тут бы флаг на запись в еепррм
     state = 3200; 
   }
   
  blinkMin++;
}