Відповіді:
Вони не конфліктують, оскільки millis()суворо читає безпосереднє значення, TCNT0тоді як ШІМ через таймер 0 використовує можливість апаратного забезпечення порівняти значення TCNT0зі значеннями, OCR0xне впливаючи на значення жодного з них.
Просто додати до відповіді @ Ignacio, яка безпосередньо відповіла на ваше запитання. "Конфлікт", про який ви говорите, пов'язаний Timer0з дошкільником.
Здебільшого ви можете користуватися цими штифтами (до речі, штифтами 5 і 6 в UNO) з ШІМ без проблем і читати правильне значення millis()(а також отримувати очікуване затримку від delay)
Якщо у вас виникли проблеми, якщо ви хочете змінити дошкільник (зазвичай, щоб змінити частоту ШІМ-сигналу). Якщо ви зміните це, ви безпосередньо вплинете на обчислення та звітність millis()та тривалість delay(x).
millis ()або в delay ()будь-якому випадку
millis()просто використовує кількість переливів Таймера 0.micros()читає безпосереднє значення вTCNT0.