Я знаю, что у Arduino есть три таймера (timer0, timer1, timer2), один из которых 16-битный, а другой 8-битный, но я не уверен, как их использовать, и, если возможно, могу ли я использовать все три в одном проекте, каждый из которых имеет разные временные интервалы, которые никогда не должны сталкиваться. Я предполагаю, что мне нужна библиотека для их вызова, но я не знаю, какая именно. Все таймеры будут запускать функции и не будут взаимодействовать с выводами напрямую, и самый короткий интервал времени будет установлен на 1/3 секунды, а самый длинный интервал времени будет варьироваться от 2 секунд до 0,5 секунд. Если кто-нибудь может дать мне пример эскиза с тремя таймерами, я бы, вероятно, почувствовал, что мне нужно делать.
Вы можете запустить один таймер с интервалом, который является наименьшим общим знаменателем ваших интервалов.
Для этого у вас должна быть куча, хранящая события, которые вы хотите вызвать. Затем, когда вы вставляете или запускаете событие, вы обновляете таймер, просматривая верхнюю часть кучи, чтобы выбрать самое раннее событие, которое вы хотите. Если это происходит раньше, чем что-либо еще, или ничего не происходит, вы обновляете таймер для запуска нового события. Когда событие срабатывает, вы удаляете его из кучи. Если вы хотите периодически запускать, вы можете добавить событие обратно в кучу с новым «временем», которое сейчас () + период.
Краткий ответ: TimerThree недоступен для Arduino UNO! Он использует процессор Atmega328, который содержит только:
Timer0 (используется внутри кода Arduino для millis ()),
Timer1, который является 16-битным таймером и может использоваться,
и Timer2, который является 8-битным таймером.
TimerThree доступен только для ATMEGA2560 или аналогичных чипов, поэтому только для Arduino MEGA.
На странице, где включен TimerThree, приведено совершенно неверное описание: во-первых, нет четкого заявления о том, что TimerThree не будет работать с UNO, и, что еще хуже, есть утверждение о том, что библиотека TimerThree была «изменена в марте 2009 года Жеромом Деспатисом». и Джесси Тейн за поддержку ATmega328, что является чепухой.