Схема подключения к модулю ESP32-S3.
Сам модуль:
Его распиновка:
Проблема в том, что для подсчёта частоты используется разница потенциалов между щупом и GND.
Вот примеру примеры из интернета:
unsigned long time = 0; //Время срабатывания датчика
unsigned long time_old = 0; //Предыдущее время
void setup() {
attachInterrupt(0, impuls, FALLING); //Прерывание по нарастающему фронту на D2
Serial.begin(115200);
}
void loop(){
Serial.println(time);
delay(10);
}
void impuls(){
time = (1000000.0/(micros()-time_old)); // измеряем частоту
time_old = micros();
}
или
int Htime; // целочисленная переменная для хранения времени высокого логического уровня
int Ltime; // целочисленная переменная для хранения времени низкого логического уровня
float Ttime; // переменная для хранения общей длительности периода
float frequency; // переменная для хранения частоты
void setup()
{
pinMode(8,INPUT);
}
void loop()
{
Htime=pulseIn(8,HIGH); // прочитать время высокого логического уровня
Ltime=pulseIn(8,LOW); // прочитать время низкого логического уровня
Ttime = Htime+Ltime;
frequency=1000000/Ttime; // получение частоты из Ttime в микросекундах
Serial.print(frequency);
Serial.println(" Hz");
delay(500);
}
Но у меня в схеме роль GND берёт на себя пин или 1 или 10, в зависимости от полярности питания.
Пример:
void LEFT(TFT_eSprite *MAIN)
{
pinMode(45, INPUT); // 45 пин высокий импеданс
pinMode(46, OUTPUT); // выводим на 46 пин 0
digitalWrite(46,0); // устанавливая его в 0(включаем нижний резистор делителя)
Serial.println(GET_VOLT(10) * 20.27);
}
void RIGHT(TFT_eSprite *MAIN)
{
pinMode(46, INPUT); // 46 пин высокий импеданс
pinMode(45, OUTPUT); // выводим на 45 пин 0
digitalWrite(45,0); // устанавливая его в 0(включаем нижний резистор делителя)
Serial.println(GET_VOLT(1) * 19.8);
}
Как мне посчитать частоту на щупах?