Эмуляция сигнала ДПКВ 60-2

проблема есть на твоем скрине , у тебя на моменте где пропуск зуба , впадина длится дольше выступа и, заметь, это как раз через раз происходит.

в коде в массиве, где задается, зуб или впадина (нули и единицы), сделано 240 значений . Это видимо было сделано для полного цикла работы 4 тактного двс, где за два оборота коленвала весь цикл проходит. то есть имеем дпкв 60 импульсов, на каждом импульсе нужна впадина и выступ, то есть 120 значений , а так как оборота 2 за полный цикл, то поэтому массив имеет 240 значений .

но косяк в вашем скетче я нашел. Он возникает в конце массива, поэтому проблема возникает через раз (потому что один пропуск зубьев проходит в центре тела массива и тут косяк не влияет)

проблема тут . вместо

if (index++ >= wheel_len) {
    index = 0;}

надо

 index++;
  if (index >= wheel_len) {index = 0;}