Показать сообщение отдельно
  #2  
Старый 03.04.2015, 20:27
Williamnask Williamnask вне форума
Новичок
 
Регистрация: 31.03.2015
Адрес: Россия
Сообщений: 1
Отправить сообщение для Williamnask с помощью ICQ Отправить сообщение для Williamnask с помощью Skype™
По умолчанию "Дышащая" подсветка

если задача только в том, чтобы мигать светодиодами, то спокойно можно использовать таймер и вручную мигать.
Простейший расчет:
16МГц тактовая частота процессора/100Гц допустимая частота мигания светодиодов/256уверен, что 256 градаций яркости - больше, чем надо = максимум 625 тактов на прерывание. Для обслуживания 6 каналов - больше чем достаточно. В прерывании достали переменную по каждому каналу, сравнили с счетчиком, если равно - перекинули соответствующую ногу.

Примерно как написано ниже не проверял на синтаксис, но суть понятна, думаю.

#define PWM_Count 6
uint8_t volatile Counter;
uint8_t volatile PWM_DataPWM_Count;
uint8_t volatile PWM_PinsPWM_Count;

void Timervoid

uint8_t i;
if Counter==0

for i=0;i<PWM_Count;i
PinPWM_Pinsi=1;


for i=0;i<PWM_Count;i

if PWM_Datai==i
PinPWM_Pinsi=0;





UPD.
Интересно было бы если бы подсветка горела именно там, где надо, а не вся сторона. Но чую, что это реализовать будет уже сильно посложнее. Хотя почти уверен, что ардуинки хватит и для этого. Повесить динамическую индикацию, можно еще сдвиговые регистры использовать...
Ответить с цитированием