@Artip,
Тогда после сброса платы искра снова должна появиться. Можно попробовать убрать последний абзац:
if(micros() - fuseTime >= 1000000) { // предохранитель, если катушка заряжается больше 1 секунды
digitalWrite(OUT, LOW); // отключаем катушку LOW;
}
Он вам всё равно ни к чему. Но вряд ли дело в нём. Если сначало было, а потом пропало - значит что-то где-то отвалилось.
Думаю, пытаться накодить рабочий скетч без опыта - почти невозможная задача, сам с этим столкнулся.
Поэтому рекомендую вооружиться симуляторами, например tinkercad . com
На вход 2 arduino подаётся меандр с частотой 100 герц (что соответствует 6000 оборотов), на выходе 4 видим тоже меандр, но с большей скважностью, что говорит о работе ФУОЗ.
В заключительных тестах воспроизводил всю обвязку на стенде, на вход цеплял генератор сигналов, а на выход к коммутатору лампочку и осциллограф, меняя частоту контролировал чтобы небыло никаких явных пропусков и затупов.
Заводиться хуже может по той простой причине что на первых оборотах алгоритм только определяет длительность входного импульса, а на выход подаётся случайная абракадабра, иногда может даже чихать по понятным причинам, в симуляторе proteus это очень хорошо видно, так как там можно сравнить входные и выходные данные с самых первых моментов. Я пока с этим никак не боролся, потому что на работу саму по себе оно никак не влияет.