Здравствуйте может кто ни будь подсказать как считать код от пульта люстры. Дело в том IRremote библиотека устанавливал разные версий при считываний кода выдает разные бит и иногда Rawdata разные 71,61 и т.д. Был бы признателен если бы кто нибудь подсказал как считать и запрограммировать для управление с ардуино и esp8266. Заранее благодарен!!!
Поставить библиотеку и считать для начала примером из библиотеки.
А что Вы там
как Вы там
и почему у Вас
Про то мы не знаем, т.к. ни кода, ни схемы, ни фото Вашего девайса мы не видели, а хрустальные шары тут ещё Клапа много лет назад запретил
Скажите пожалуйста, какой пример ставить чтоб прочитать код пульта? Протокол не знаю
Я еще так долго никогда не пытался «поймать что скопировать» (постоянно обновление в странице) и вот результат.
Молодец!
Да блин телевизор купил от яндекса,а там примитивного включения по будильнику нет,вот и хочу свой пульт собрать,чтоб утром в 6.30 телевизор включался
Отважные у нас люди! Не скудеет земля
12 лет не сморю этот «зомбоящик» и не жалею.
Столько свободного времени он жрёт!!!
У меня на фоне всегда работает, 1-й НТВ и все такое никогда не включаю.
У меня на фоне тоже всегда что-то «мурчит». Только не телевизор. Включаю сериал какой или фильм или аудиокнигу. Последнее лучше всего, но только если механической работой заниматься. Если думать - сильно отвлекают, фантазия увлекает в сюжет и вся мыслительная идет по женскому органу.
Вот это самое опасное на самом деле. Надо избавляться от этой привычки. Не хочу тут разводить, если интересно, сами почитайте, там про это (особенно про фон). Заодно поймёте почему я вообще никакое видео и аудио без крайней нужды не смотрю, предпочитаю читать.
Я тоже кроме НТВ ничего не смотрю-стоит фоном,тв называется Doffler,когда телек на витрине магазина стоял красивенький и большой ничего на яндекс не указывало,я только после покупки и включения дома понял что он того-с алисой…
Привычка, оно дело такое…
Да и когда дома один, а привык что кто-то еще есть всегда - как то не по себе. А так - болтовня есть, вроде как и не один.
Мои соболезнования
так вот что ворует энергию ЧИ )))
ЗЫ ПО - ЧИ - ТАТЬ
А где можно спросить на счет скетча? Проблема возникла…
Решено!
Делаю пульт ,о нем писал выше.Таймер0 настроен в режиме СТС,на переключение пин 6 с частотой 76 кГц,к нему подключен светодиод.Таймер2 отсчитывает временные интервалы (время свечения светодиода и время паузы).
Так вот-если просто запустить таймер0,то светодиод моргает с частотой 38 кГц-то что надо! Но если разрешить работу таймер2,то таймер0 начинал работу по переполнению и частота снижаласьвключения светодиода до 31 кГц
Вот такой код получился,работает нормально,осталось добавить DS3231 и дисплейчик
//Константы для интервалов
const unsigned int Preset_110ms=977; // Предустановка счетчика на 110 мс
const unsigned int Preset_40ms=360; //Предустановка счетчика на 40 мс для повтора
const byte Preset_9ms=80; // Предустановка счетчика на 9 мс
const byte Preset_4_5ms=40; // Предустановка счетчика на 4,5 мс
const byte Preset_2_25ms= 20; // Предустановка счетчика на 2,25 мс
const byte Preset_1_6875ms=15; // Предустановка счетчика на 1,6875 мс
const byte Preset_562_5us=5; // Предустановка счетчика на 562,5 мкс
volatile unsigned int Count_set; //Для задания кол-ва тактов
unsigned int Count; //Для отсчета тактов,1 такт=112,5 мксек
volatile boolean Flag=0; //Флаг что отсчет закончен
byte Address1=0,Address2 = 254; //Адресс NEC устройства
byte Command1= 207,Command2 = 48; //Команда NEC устройства
byte data;
ISR (TIMER2_COMPA_vect) { // 112.5 usec
Count++;
if (Count==Count_set){Count=0;Flag=0;}
}
void setup() {
Serial.begin(9600);
pinMode (6,OUTPUT); // выход генератора
//Настраиваем вывод таймера OC0A (PD6) на вывод
PORTD&= ~(1<<PIND6); //Значение по умолчанию 0.
DDRD|= (1<<DDD6); //Вывод PD6 - выход
//Настраиваем Таймер0
TCCR0A=0;TCCR0B=0;
TCCR0A|= (1<<WGM01); //Выставляем режим CTC
TCCR0B|= (1<<CS00); //Ставим предделитель на значение 1. CS02=1. CS00=1. Запускаем генерацию
OCR0A=0xD1; //Выставляем значение счетчика (16000000/76000+1)
TCCR0A|= (1<<COM0A0); //Инвертируем значение OC0A (PD6) по срабатыванию таймера.
//Настраиваем Таймер2, Прерывание от TIMER2 каждые 112,5 мкс
//https://adior.ru/index.php/robototekhnika/178-timer-interrupt
TCCR2A = 0;TCCR2B = 0;
OCR2A = 225; // F=16000000/Prescale*Ocr2a = 8888,88 Ãö = 112,5 ìêñ
TCCR2A = (1 << WGM21); // CTC режим
TIMSK2 |= (1 << OCIE2A); // включение прерываний по совпадению
TCCR2B = 0 << CS21; // запуск с таймера с делителем на 8
}
void loop() {
Flag=1;//взводим флаг
Count_set=Preset_9ms; // Уснавливаем задержку 9000/112,5=80
TCCR2B = 1 << CS21;
TCCR0A|= (1<<WGM01); //Выставляем режим CTC
TCCR0A|= (1<<COM0A0); //Инвертируем значение OC0A (PD6) по срабатыванию таймера.
while (Flag==1){};
TCCR0A= 0<<COM0A0;//останавливаем генерацию 38 кГц
//пауза 4,5 мсек
Count_set=Preset_4_5ms; // Уснавливаем задержку 4500/112,5=40
Flag=1;
while (Flag==1){};
//передаем адресс1,вкл генерацию на 560 мксек
for(uint8_t j = 0; j <4; j++) {
switch (j) {
case 0:data=Address1;break;
case 1:data=Address2;break;
case 2:data=Command1;break;
case 3:data=Command2;break;
}
for(uint8_t i = 8; i > 0; i--) {
TCCR0A|= (1<<WGM01); //Выставляем режим CTC
TCCR0A|= (1<<COM0A0); //Инвертируем значение OC0A (PD6) по срабатыванию таймера.
Count_set=Preset_562_5us; // Уснавливаем задержку 4500/112,5=40
Flag=1;
while (Flag==1){};
TCCR0A= 0<<COM0A0;//останавливаем генерацию 38 кГц
//пауза,лог 0=560 мксек,1=1_6875 мсек
if (bitRead(data, i-1)==0)
{Count_set=Preset_562_5us;}
else
{Count_set=Preset_1_6875ms;}
Flag=1;
while (Flag==1){};
}
}
TCCR0A|= (1<<WGM01); //Выставляем режим CTC
TCCR0A|= (1<<COM0A0); //Инвертируем значение OC0A (PD6) по срабатыванию таймера.
Count_set=Preset_562_5us; // Уснавливаем задержку 4500/112,5=40
Flag=1;
while (Flag==1){};
TCCR0A= 0<<COM0A0;//останавливаем генерацию 38 кГц
//просто пауза-ВРЕМЕННО!
Count_set=Preset_110ms;
Flag=1;
while (Flag==1){};
Count_set=Preset_110ms;
Flag=1;
while (Flag==1){};
Count_set=Preset_110ms;
Flag=1;
while (Flag==1){};
}
Позже добавлю повтор