Вопрос по IR управлению
- Войдите на сайт для отправки комментариев
Вс, 10/01/2016 - 12:04
Здравствуйте! Строго не судите я новичок!
есть скетч :
const int led[] = {3,5,6}; const int delayTime = 10; #define RG 0 #define GB 1 #define BR 2 void setColour(const int * led, const int * colour) { for(int i = 0; i < 3; i ++) { analogWrite(led[i],colour[i]); } } void cycle(int which, const int * led) { int a; int b; int c; switch(which) { case RG: a = led[0]; b = led[1]; break; case GB: a = led[1]; b = led[2]; break; default: a = led[2]; b = led[0]; } for(int i = 0; i <= 255; i ++) { analogWrite(b, i); analogWrite(a, 255 - i); delay(delayTime); } } void setup() { for(int i = 0; i < 3; i++) { pinMode(led[i],OUTPUT); } } void loop() { cycle(RG, led); cycle(GB, led); cycle(BR, led); }
как сделать что бы он включался и отключался от IR приёмника с разных кнопок?
заранее спасибо за ответ!
есть скетч :
....
как сделать что бы он включался и отключался от IR приёмника с разных кнопок?
Хороший вопрос! давайте я Вам задам такой же:
Есть скетч
Как сделать, чтобы он управлял центрифугой в стиральной машинке? Заранее спасибо за ответ!
В этом разделе люди делают сами, и справшивают когда у них что-то конкретное не получается. А для вопросов типа Вашего есть раздел "Ищу исполнителя"
Извините!! собрал скетч включается с пульта но светодиоды горят не равномерно!! один плавно гаснет другие на секунду загораются и гаснут!! что делаю не так???ещё раз повторюсь я только начинаю!!!
Вот так лучше.
Попробуйте в setup добавить установку конфигурации пинов 3,5,6
Типа
pinMode(3, OUTPUT);
... и т.д. для всех трёх.
при изменении значений в setup абсолютно ничего не изменяется! светодиоды начинаю себя так вести когда запускаеш irrecv.enableIRIn(); в setup!!
Тогда отделите мух от котлет.
Отложите этот скетч в сторонку, а пока сделайте на основе его скетч, который только работает со светодиодами (без IR!) Убедитесь, что он работает нормально. Если нет - дожмите его. А потом уже подключайте IR
светодиоды без IR плавно загораются и гаснут тоесть всё нормально!! но стоит добавить IR начинает нестабильно работать!!
Тогда понятно.Ваша библиотека IRremote.h подрались за таймер с ШИМ'ом.
1. сумеете посмотреть каким таймером пользуется библиотека?
2. знаете какие таймеры отвечают ШИМ на каких ногах?
Если нет - не стесняйтесь - напишите, я сам посмотрю, только скажите библиотеку IRremote.h где брали? Это та, что с IDE идёт или другую где-то скачали?
Посмотрел.
Если библиотека из IDE, то она использует второй таймер. Значит Вы не можете пользовать ШИМ на пинах 3 и 11. Перенесите светодиод с пина 3 на пин 9 или 10 и всё должно заработать нормально.
Спасибо большое помогло!!
Спасибо большое помогло!!
Не за что. Имейте в виду на будущее, если кто-то (Вы сами или библиотека) использует таймер, то с ШИМ (или с tone()) будут проблемы на пинах, которые обслуживаются этим таймером.
Для Uno/Nano и т.п.
Возник ещё вопрос как отключить?? ничего у меня не получается всё перебрал!!последующее нажатие кнопок не работает, пока не завершится 1 цикл!! как его становить ?
Строка 48 гадит. Читайте про Blink без deley. Раскрывайте цикл, отмеряйте время.. У Вас очень типичный и не сложный случай.
Да, ладно, Вам, Logic, там в строке 48 всего-то 10мс - чего там она гадит. Проблема не в ней, а в цикле как таковом.
dimex, у Вас цикл в строках 44-49 мёртвый и из него нет иного выхода, кроме как дождаться его завершения. Если хотите, его досрочно прекращать, то надо в него вставить проверку, не пришло ли что-нибудь новое, и если пришло, то выходить из цикла.
Подскажите пожалуйста где про это можно почитать??Или можете пример какой нибуть скинуть,а дальше я сам!! Спасибо!
Подскажите пожалуйста где про это можно почитать??Или можете пример какой нибуть скинуть,а дальше я сам!! Спасибо!
А чего тут читать, тут программу писать надо.
Сма-то я этой библиотекой не пользуюсь, да и нет её у меня, но так из общих соображений всё понятно, каждется.
Для начала, что у Вас фигурные скобки в строках в строках 72/83? Нечего им там делать. Убирайте.
Из-за жтой лишей скобки у Вас строка 86 попала внутрь switch, а она должна быть снаружи (внутри if, но не внутри switch). Переносим её на место перед закрывающей } if'а.
Наконец, после delay (строки 48), добавляем строку
Спасибо большое за подсказки!! без вас ничего быне получилось!! ещё раз спасибо!!
заработало вот так!!!