Ваша реализация обнаружения пиков выглядит нормально.
Ваш код для синхронизации немного не соответствует.
Что вы делаете:
read sensor 1
read sensor 2
if value 1 is a new max:
store timestamp 1
if it is a new peak:
report new peak through serial
register timestamp 1 as time for peak 1
if value 2 is a new max:
store timestamp 2
if it is a new peak:
report new peak through serial
register timestamp 2 as time for peak 2
calculate time difference and send it through serial
Некоторыепроблемы с этим:
a) вы сохраняете не время вашего измерения, а время, когда вы обнаруживаете, что это новый максимум. поскольку у вас есть последовательная связь между измерением с датчиком 2 и созданием вашей метки времени, вы всегда вводите задержку для датчика 2. все задержки последовательной связи в вашем коде будут суммироваться с течением времени, пока у вас нет 1 пика.
b) вы сообщаете о своей разнице во времени в каждом цикле цикла. Даже если у вас еще нет 2 пиков
Вот что вы должны сделать:
read sensor 1
if value 1 is a new max 1:
store timestamp 1
read sensor 2
if value 2 is a new max 2:
store timestamp 2
if max1 is a new peak and timestamp1 is > timestamp 2:
report time difference
if max2 is a new peak and timestamp2 is > timestamp 1:
report time difference
У вас есть разница во времени между двумя пиками каждый раз, когда вы находите пик. не каждый раз, когда вы запускаете цикл. времена должны быть зарегистрированы при измерении значения.