#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();
}
}