#include <TinyWireM.h>

// To use the TinyI2C library from https://github.com/technoblogy/tiny-i2c
//#include <TinyI2CMaster.h>

//#define TINY4KOLED_QUICK_BEGIN

#include <Tiny4kOLED.h>
#include "SolomonSystech.h"
#include "font8x16atari.h"
#include "crackers_font.h"
uint32_t myTimer;
uint32_t time;
static bool flag = true;
static int16_t frequency;
const int8_t pin = 3;
static int8_t stat = 0;
// ============================================================================
void simicon_logo(){
    oled.invertOutput(1);
    oled.bitmap(0, 0, 0 + 32, 4, bitmap_32x32);
    oled.invertOutput(0);
}

void stat_comm() //функция вывода 
{   //oled.setFont(FONT8X16ATARI);

      if (frequency >= 45 && frequency <= 55 && (stat != 1 )) 
     {
    flag = true;
    stat = 1;    
    oled.setCursor(40, 2); 
    oled.print("       ");  
    oled.setCursor(40, 2);
    oled.print("All right       "); 
    simicon_logo();
      } 
    else if ((frequency < 45 || frequency > 55) && (stat !=2))
     {
    flag = false; 
    stat = 2;
     oled.setCursor(40, 2);
     oled.print("      ");  
     oled.setCursor(40, 2);
     oled.print("Error!!!     ");
    simicon_logo();
  }
}
//===============================================================================
void setup() {
  // put your setup code here, to run once:

  oled.begin();
  oled.clear();
  simicon_logo();
  //oled.setFont(FONTCRACKERS);
  //oled.setFont(FONT8X16ATARI);
  oled.on();
}

void loop() {
  // This example only shows a static image on the display.
  // The microcontroller could be turned off now.
  uint32_t pulse;
  
  if (millis() - myTimer >= 500)
  {
    myTimer = millis(); 
    oled.setCursor(40, 0);
    pulse = 0;
    if (millis() - time >= 500) {
      time = millis();
      pulse = random(7500, 11000);
      pulse = (pulse < 8000) ? (0) : pulse ;
    }
    oled.setFont(FONTCRACKERS);
   // pulse = pulseIn(pin, HIGH); // Считываем длительность импульса на пине 3
   // pulse = 10000;
    if ((!pulse)) 
    {
      oled.setCursor(40, 2);
     oled.print("signal   ");
     oled.setCursor(40, 0); 
     oled.print("  No ");   
     flag = 0;
     stat = 0;
      return;
    }
    frequency = 510000 / pulse; // Вычисляем частоту меандра в герцах  Значение в полсекунды ибо период сдвоенный.
    oled.print(frequency);
    oled.setCursor(56, 0);
    oled.print(" Hz  "); // Выводим результат 
    oled.setCursor(40, 2);
    stat_comm();
}
}
ATTINY8520PU