Технический форум по робототехнике.
к561ЛА7 » 10 дек 2009, 21:56
Отцы!
Мигать светодиодом я уже научился, а вот как им плавно мерцать!
НАучите меня пожалуйста плавно мерцать светодиодом и с разной частотой!
ПОЖАЛУЙСТА!
avr123.nm.ru » 10 дек 2009, 22:04
Опиши алгоритм по-русски а потом запиши на Си.
к561ЛА7 » 11 дек 2009, 09:42
Ура!
А как плавно мерцать 8-ю светодиодами? и с разной частотой?
Хелп, плиз!
Словарного запаса не хватает
EdGull » 11 дек 2009, 09:44
тебе ж сказали "Опиши алгоритм по-русски"
к561ЛА7 » 11 дек 2009, 11:00
Плавно мерцаем одним светодиодом
Тем временем плавно мерцаем другим светодиодом с другой частой
Тем временем плавно мерцаем другим светодиодом с другой частой
Тем временем плавно мерцаем другим светодиодом с другой частой
пятым светодиодом мигаем
шестым - 2 мигания - 5 мерцаний
седьмым - 3 мигания - пауза - 5 миганий - пауза
восьмой то горит то не горит
EdGull » 11 дек 2009, 11:05
а теперь в цифрах пожалуйста, т.е. сколько раз в секунду, яркость указываем в пределах 0-100%
к561ЛА7 » 11 дек 2009, 11:43
Плавно мерцаем одним светодиодом
с периодом мерцания 2 сек , яркость изменяется от 0 до 80 %
Тем временем плавно мерцаем другим светодиодом
с периодом мерцания 5 сек , яркость изменяется от 0 до 100 %
Тем временем плавно мерцаем другим светодиодом с периодом мерцания 1 сек , яркость изменяется от 0 до 60 %
Тем временем плавно мерцаем другим светодиодом
с периодом мерцания 10 сек , яркость изменяется от 0 до 100 %
пятым светодиодом мигаем
с частотой 3 герц
шестым - 2 мигания с частой 2 герц - 5 мерцаний
с частой 7 рерц
седьмым - 3 мигания с часто1 0,5 герц - пауза - 5 миганий (3 герц) - пауза
восьмой то горит то не горит случайным образом но не чаще чем с частой 5 герц
avr123.nm.ru » 11 дек 2009, 11:46
Вы нарисуйте для себя это в виде графика на временнОй оси - у вас получатся точки по времени когда происходит смена состояний выводов МК - вот это в него и запрограмите - получится простой автомат. т.е.
бесконечный цикл:
сосотояние 8 выходов 1
пауза 1
сосотояние 8 выходов 2
пауза 2
и так далее
некоторые выходы могут быть на 1 и 0 а ШИМ для плавности но тогда паузы будут поменьше.
к561ЛА7 » 11 дек 2009, 12:07
А для каждой ноги подпрограмку написать никак?
avr123.nm.ru » 11 дек 2009, 12:27
Можно конечно, но если вы по-русски не можете алгоритм описать то как вы это будете делать на любом языке пограммирования ?
Принцип автомата тоже широко применяется и достаточно хорош хотя и жрет память иногда. Но в Мега8 за 48 рублей вы его наверняка поместите.
к561ЛА7 » 11 дек 2009, 13:53
Проблема не в языке, а в понимании.
Как написатиь подпрограмку для каждой ноги если паузы контроллер выполняет для всей программы в целом.
avr123.nm.ru » 11 дек 2009, 14:29
Надо найти минималльную паузу между изменениями состояний дискретных выходов и на него настроить прерывание таймера. В этом рерывании сделать несколько счетчиков - свой для каждого канала и по их насчету выполнять переключения.
Для ШИМ аналогично но прерывание свое делать.
contr » 11 дек 2009, 15:16
Разбить на субпрограммы для каждой ноги не получится. Пока выполняется такая подпрограмма, другие диоды остаются без управления. Придется управлять всем портом, зажигая нужные диоды в определенный момент. Если лишь яркость, то примерно так
- Код: Выделить всё • Развернуть
PORT='00000001' яркость первого 100%
delay
PORT='00000011' второго 90%
delay
PORT='00000111' третьего 80%
и т.д. ~ 10 раз, что даст столько же значений спадающей от 1--> 8 leds яркости
Весь цикл должен занять порядка 10мс, чтобы ШИМ сильно видно не было.
milkpower » 11 дек 2009, 19:02
вопрос о таймерах, в меге128 инициализирую 16-ти битные таймеры 1 и 3 соотв. регистры у обоих одинаковые, но при отладке выясняется что счетчик 1 прибавляется, а счетчик 3 вычитается. подскажите в каких регистрах может быть ошибка?
Добавлено спустя 1 час 38 минут 53 секунды:
походу это глюк студии, в железе ведет себя по другому
Duhas » 11 дек 2009, 19:04
мб у тебя счетчик в фэйз коррект пвм ушел ) и ходит вверх-вниз ...