При проверке компиляции выдает ошибку. В програмировании обсалютный ноль. Нужно отремонтировать прибор. Исходники брал отсюда: https://www.rv3yf.ru/product/prostoy-chastotomer-dlya-priemnika-karlson.
Скетч ```[code]
#include <FreqCount.h>//https://github.com/PaulStoffregen/FreqCount/archive/master.zip
#include “TM1637.h”
#include <avr/eeprom.h>
TM1637 TM;
unsigned long Crystal[7]; //данные по частотам кварцев.
void setup() {
FreqCount.begin(100);
Serial.begin(115200);
byte FirstPowerON;
float CalibValue;
byte ContrastValue;
byte Num;
FirstPowerON = eeprom_read_byte(0); //считываем значение из памяти “первое включение”
if (FirstPowerON==255) { // если включение в первый раз, то делаем отметку, что включались, записываем значение 1 для калибровки по умолчанию в ячейку памяти.
FirstPowerON=1;
eeprom_write_byte(0, FirstPowerON);
CalibValue=1.000000;
eeprom_write_float(1, CalibValue);
ContrastValue=0;
eeprom_write_float(31, 8000000); //записываем в память первичные данные кварцев
eeprom_write_float(11, 10000000);
eeprom_write_float(21, 13500000);
eeprom_write_float(41, 15000000);
eeprom_write_float(51, 22000000);
eeprom_write_float(61, 22500000);
}
// считываем данные калибровки и яркости из памяти
CalibValue = eeprom_read_float(1);
ContrastValue=eeprom_read_byte(5);
FreqCount.Calibration (CalibValue); //инициализация
TM.init(2, 3);
TM.displayClear(); //очищаем экран
delay(1000); //ожидаем секундочку
TM.setBrightness(ContrastValue); // ’ Установка ЯРКОСТИ.
for (byte i = 14; i <= 20; i++) { // ( A1-A5)
pinMode(i, INPUT_PULLUP); // делаем входами
}
pinMode (6, INPUT_PULLUP); // калибровка ВВЕРХ
pinMode (7, INPUT_PULLUP); // калибровка ВНИЗ
pinMode (8, INPUT_PULLUP); // калибровка яркости
pinMode (9, INPUT_PULLUP);
for (byte i = 1; i <= 6; i++) { //читаем данные кварцев из памяти
Num=i*10;
Num=Num+1;
Crystal[i]=eeprom_read_float(Num);
}
}
float CalibValue;
byte ContrastValue;
byte band;
byte Num;
unsigned long f;
unsigned long f1;
unsigned long f2;
unsigned long f3;
const unsigned long BFO_500=500000; //частота кварца 500 кгц
byte fq[8], pd = false, digi;
void loop() {
if (FreqCount.available()) { f = FreqCount.read(); } // опрашиваем вход частотомера
f3=(long)f*10;
if (digitalRead(A0)==LOW) {
f1=Crystal[1] - BFO_500 - f3; // диапазон 80 метров
band=1;
}
else if (digitalRead(A1)==LOW) {
f1=Crystal[2] - BFO_500 - f3; // диапазон 40 метров
band=2;
}
else if (digitalRead(A2)==LOW) {
f1=Crystal[3] + BFO_500 + f3; // диапазон 20 метров
band=3;
}
else if (digitalRead(A3)==LOW) {
f1=Crystal[4] + BFO_500 + f3; // диапазон 15 метров
band=4;
}
else if (digitalRead(A4)==LOW) {
f1=Crystal[5] + BFO_500 + f3; // диапазон 10 метров
band=5;
}
else if (digitalRead(A5)==LOW) {
f1=Crystal[6] + BFO_500 + f3; // диапазон 10 метров
band=6;
}
else {
f1=f3;
band=0;
}
f2= (long)f1/100;
TM.displayInt(f2); // выводим на экран
if (digitalRead(6)==LOW){ //если нажат вывод D6, считываем калибровку из памяти, добавляем значение, записываем обратно в память.
Num=10*band;
Num=Num+1;
CalibValue = eeprom_read_float(Num);
if (band==0) { //если настраиваем кварц 16 мгц ардуино, то значение калибровки 0.000010
CalibValue=CalibValue+0.000010;
}
else if (band>0) {
CalibValue=CalibValue+50;
}
delay(10);
eeprom_write_float(Num, CalibValue); //запись
delay(100);
if (band>0) {
Crystal[band]=eeprom_read_float(Num);
}
else if (band==0){
FreqCount.Calibration (CalibValue);
}
}
if (digitalRead(7)==LOW){ //если нажат вывод D7, считываем калибровку из памяти, вычетаем, записываем обратно в память.
Num=10*band;
Num=Num+1;
CalibValue = eeprom_read_float(Num);
if (band==0) {
CalibValue=CalibValue-0.000010;
}
else if (band>0) {
CalibValue=CalibValue-50;
}
delay(10);
eeprom_write_float(Num, CalibValue);
delay(100);
if (band>0) {
Crystal[band]=eeprom_read_float(Num);
}
else if (band==0){
FreqCount.Calibration (CalibValue);
}
}
if (digitalRead(8)==LOW){
ContrastValue=eeprom_read_byte(5);
ContrastValue=ContrastValue+1; //обрабатываем изменение яркости экрана
delay(10);
if (ContrastValue>8){
ContrastValue=0;
}
eeprom_write_byte(5,ContrastValue);
delay(1000);
TM.setBrightness(ContrastValue);
}
}