Pull to refresh

Comments 7

Поэтому 8 команд (включить, выключить, ярче, темнее, белый, красный, синий, розовый) были прочитаны в режиме raw, и каждой команде соответствовал свой массив из 67 unsigned int значений.

Ничего личного, но буквально только что на LORе по другому поводу прочитал такой коммент:
«А чего вы хотите от эмбедщиков? Эти ребята пишут лупы повторением строки эн раз.»


:)


Ну а вообще, если бы у меня такая необходимость появилась, как у автора, то я бы скорее разломал копеечный пульт, и подключал бы его к ардуинке.

>занимает 60% динамической памяти
Это точно константы? Если да, то почему их не завернуть в PROGMEM (i.e. положить в флеш память)?

Спасибо, полезное замечание, дойдут руки попробую переделать.

Судя по строчкам, что у вас там записаны, у вас таки протокол NEC:

2 перехода - преамбула (из-за неточности дискретизации длительность чуть отличается от эталонных 9000 + 4500мкс)
Дальше у вас по 65 переходов, что на самом деле скорее всего 64 перехода = 32 бита.

Самый простейший код на js (чисто чтобы из консоли браузера не выходить) выдаёт такое:

l = [550,550, 600,550, 600,550, 550,600, 550,550, 600,550, 600,550, 550,600,
                                 550,1650, 550,1650, 550,1650, 550,1650, 550,1650, 550,1650, 600,1600, 600,1600, 600,
                                 550, 550,1650, 600,550, 550,1650, 550,600, 550,550, 600,1600, 600,550, 600,1600, 600,
                                 550, 600,1600, 600,550, 550,1650, 550,1650, 550,600, 550,1650, 550];
r = [];
for (var i = 0; i < l.length-1; i+= 2) {
    if (l[i+1] > 1000) {
    	r.push(1);
    } else {
    	r.push(0)
	}
}

// r = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1]

Ну и дальше, если посмотреть комментарии к функции отправки ИК-кодов NEC в библиотеки IRemote - то всё сходится. Наверняка можно ещё расковырять, что означает каждый из битов, а можно и на волшебных константах остановиться. И в коде нормально уже писать:

const uint16_t ADDRESS = 0;
const uint8_t COMMAND_ON = 162;
IRData data = {NEC, ADDRESS, COMMAND_ON};
irsend.send(data);
эти тонкие прожекторы не имеют развязки с сетью, если пробьет диод: привет ардуино, смартфону и оператору :)
UFO just landed and posted this here
Для управления одним прожектором, блок размером с сам прожектор. Да и UNO не на всю используется, nano, micro возможно лучше бы зашли для такой задачи?
Sign up to leave a comment.

Articles