Может кто-то, пожалуйста, помочь с кодом?? Нужно посчитать время между всеми импульсами, которые образуются проведением вручную магнитной карты через магнитную головку. На выходе хочется получить список со временем между восходящим фронтом первого импульса и восходящим фронтом второго, между фронтом второго и третьего, третьего и четвертого и т.д. Данный код, мне кажется подходит только для меандров, а у меня импульсы дифференцируемы.
const int pin = A0; // пин, к которому подключен источник импульсов
const int numPulses = 800; // количество импульсов в секунду
const int numSamples = 1000; // количество отсчетов для создания списка промежутков времени
unsigned long pulseTimes[numSamples]; // список промежутков времени между импульсами
void setup() {
Serial.begin(9600); // инициализация последовательного порта для вывода результатов
}
void loop() {
int pulseCount = 0; // счетчик импульсов
unsigned long lastPulseTime = 0; // время последнего импульса
while (pulseCount < numSamples) {
int pulse = analogRead(pin); // считываем значение с пина
if (pulse > 512) { // если значение больше половины максимального, то это импульс
unsigned long currentTime = micros(); // получаем текущее время в микросекундах
if (lastPulseTime != 0) { // если это не первый импульс
pulseTimes[pulseCount] = currentTime - lastPulseTime; // вычисляем промежуток времени между импульсами
pulseCount++; // увеличиваем счетчик импульсов
}
lastPulseTime = currentTime; // сохраняем время последнего импульса
}
}
}