Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Удаленная работа
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 03.01.2019, 19:30  
AVRkin
Прописка
 
Аватар для AVRkin
 
Регистрация: 07.09.2014
Сообщений: 131
Сказал спасибо: 17
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
AVRkin на пути к лучшему
По умолчанию Как управлять с ардуино кондиционером

есть кондиционер которым нужно управлять с ардуино
библиотека iRemote протокол не понимает
нашел статью https://m.habr.com/post/419797/

взял код
Нажмите, чтобы открыть спойлер

Код:
// IR приемник подключается на D2
unsigned int  timerValue; // значение таймера
unsigned int data_m[250];
byte i=0;
byte n=0;
byte temp;
byte k=0;
byte x,y;
byte m1=0;
byte dat[4][12];
byte temp2=0;
char s[5];
  
void setup() {
  Serial.begin(115200);  // инициализируем последовательный порт, скорость 9600
  // установки таймера 1
  TCCR1A = 0;
  attachInterrupt(0, inter_1, CHANGE); // привязываем 0-е прерывание к функции inter_1
  TCCR1B = 2; // разрешение работы таймера с делителем 8
  Serial.println("Start");
  pinMode(2, INPUT);
}

void loop() {
temp=TIFR1&0x01; // проверяем бит переполнения таймера
if (temp!=0)
  {
  TIFR1=0x01;     // очистить флаг переполнения
  if (i!=0) 
    {
       if (k==0)  // проверка что в последнем байте нет данных и установка метки FF как признак конца команды
          {dat[y][x]=0xFF;}
        else 
          {dat[y][x+1]=0xFF;
          dat[y][x]=m1;
          }
 /*      while (n<=i)   // вывод на компьютер
        {
       Serial.print(n,DEC);
        Serial.print("=");
        Serial.print(data_m[n],DEC);
        Serial.print("\t");
        if ((n&B00000011)==0) { Serial.println(" ");} 
        n++;
        }*/
        for (int i1 = 0; i1 < 3; i1++) {
          for (int j = 0; j < 9; j++) {
            sprintf(s, "%02X ", dat[i1][j]);
            Serial.print(s);
            //dat[i1][j]=0;
            }
          Serial.println("");
          }         
      if  ((dat[0][3]&0x0F)==0x2) Serial.print("Cool ");  
      if  ((dat[0][3]&0x0F)==0x0) Serial.print("Heat "); 
      if  ((dat[0][3]&0x0F)==0x3) Serial.print("Dry ");
      if  ((dat[0][3]&0x0F)==0x04) Serial.print("Vent ");  
      if  ((dat[0][2]&0x03)==0x0) Serial.print("Vent=Auto ");  
      if  ((dat[0][2]&0x03)==0x1) Serial.print("Vent=Max "); 
      if  ((dat[0][2]&0x03)==0x2) Serial.print("Vent=Mid "); 
      if  ((dat[0][2]&0x03)==0x3) Serial.print("Vent=Min "); 
      temp=((dat[0][3]&0xF0)>>4)+18;
      Serial.print("T=");
      Serial.print(temp,DEC);
      sprintf(s, " Time=%02d:%02d ",(dat[1][0]&0x7F),(dat[1][1]&0x7F));
      Serial.print(s);
      Serial.print(" C=");
      temp=(dat[1][6]);
      Serial.println(temp,DEC);    
      Serial.println("End");
      // очистить массив
       for (int i1 = 0; i1 < 3; i1++) {
          for (int j = 0; j < 9; j++) {dat[i1][j]=0;}
          } 
      }
      i=0; // очистить адрес первого значения в массиве
      n=0;
      k=0;
     m1=0;
     x=0;
     y=0;    
  }
}

void inter_1()
{
  timerValue = (unsigned int)TCNT1L>>1 | ((unsigned int)TCNT1H << 7); // чтение таймера с одновременным делением на 2, т.к. кварц 16мгц, предделитель 8 и еще нужно разделить на 2
  if (digitalRead(2)==0)
    {  
    data_m[i]=timerValue;
    i++;
      if ((timerValue>4400)&&(timerValue<4700)) {m1=0; k=0;}
      if ((timerValue>7500)&&(timerValue<8500)) 
        {if (k==0)  // проверка что в последнем байте нет данных и установка метки FF как признак конца команды
          {dat[y][x]=0xFF;}
        else 
          {dat[y][x+1]=0xFF;
          dat[y][x]=m1;
          }
        x=0; y++;  }
      if ((timerValue>1500)&&(timerValue<1800)) {m1=(m1>>1)+0x80; k++;}
      if ((timerValue>450)&&(timerValue<800)) {m1=m1>>1; k++;}
      if (k>=8) 
        {k=0; 
        dat[y][x]=m1;
        x++;
        m1=0; 
        }
    }       
  TCNT1H = 0; // сброс таймера
  TCNT1L = 0;
}


он считывает данные вроде бы правильно но не известно как их отправлять кондиционеру
Реклама:
__________________
Самое главное умение - умение радоваться жизни.
AVRkin вне форума  
Непрочитано 03.01.2019, 23:14  
mike-y-k
Почётный гражданин KAZUS.RU
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 7,051
Сказал спасибо: 7,014
Сказали Спасибо 2,112 раз(а) в 1,633 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: реверс инжиниринг кондиционера

AVRkin, и где тут громко заявленное в названии темы?
Установите lirc и там разберитесь, потом перенесете в МК.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при малом числе вариантов.
mike-y-k вне форума  
Непрочитано 04.01.2019, 00:08  
28-63
Заблокирован
 
Регистрация: 08.12.2018
Сообщений: 241
Сказал спасибо: 2
Сказали Спасибо 63 раз(а) в 40 сообщении(ях)
28-63 на пути к лучшему
По умолчанию Re: реверс инжиниринг кондиционера

неужто ардуинщики не могут додуматься осцил в 1кратный режим поставить, щелкнуть туда пультом, посмотреть тайминги и потом их же в ардуине воспроизвести?

или чо? в ардуине нет таких функций шоли?
28-63 вне форума  
Непрочитано 04.01.2019, 11:30  
Caxaroza
Почётный гражданин KAZUS.RU
 
Аватар для Caxaroza
 
Регистрация: 21.11.2006
Адрес: АКТАУ Казахстан
Сообщений: 5,175
Сказал спасибо: 680
Сказали Спасибо 2,959 раз(а) в 1,224 сообщении(ях)
Caxaroza на пути к лучшему
По умолчанию Re: реверс инжиниринг кондиционера

На кой там вообще ардуина упала?
__________________
Ну и ничего что подруга змея зато крыс и мышей не будет.
Caxaroza вне форума  
Непрочитано 04.01.2019, 13:18  
mike-y-k
Почётный гражданин KAZUS.RU
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 7,051
Сказал спасибо: 7,014
Сказали Спасибо 2,112 раз(а) в 1,633 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: реверс инжиниринг кондиционера

Таки некоторое количество представителей Homo sapiens желает все проверить на собственном опыте. Стоит помочь им пройти этот путь с минимумом приключений, а там они сами решат как им дальше развиваться.
В качестве тестовой платформы и средства изучения вполне имеет право на существование…
"Дорогу осилит идущий"(c)

AVRkin, а что известно про протокол управления тем кондиционером и команды для него?
Собственно на сайте lirc много данных про разные устройства. Можно ещё поискать нужное в описаниях разных IR передатчиков и приложений для смартфонов/планшетов, типа ZaZa remote.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при малом числе вариантов.

Последний раз редактировалось mike-y-k; 04.01.2019 в 13:25.
mike-y-k вне форума  
Непрочитано 04.01.2019, 13:35  
verdana
Почётный гражданин KAZUS.RU
 
Регистрация: 16.03.2005
Сообщений: 5,174
Сказал спасибо: 424
Сказали Спасибо 5,670 раз(а) в 2,106 сообщении(ях)
verdana на пути к лучшему
По умолчанию Re: реверс инжиниринг кондиционера

Сообщение от mike-y-k Посмотреть сообщение
Стоит помочь им пройти этот путь с минимумом приключений,
...А вот это, одно из самых распространенных заблуждений.
verdana на форуме  
Непрочитано 05.01.2019, 01:25  
AVRkin
Прописка
 
Аватар для AVRkin
 
Регистрация: 07.09.2014
Сообщений: 131
Сказал спасибо: 17
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
AVRkin на пути к лучшему
По умолчанию Re: Как управлять с ардуино кондиционером

я написал рекордер сигнала, там очень длинные посылки

сё заработало)
__________________
Самое главное умение - умение радоваться жизни.
AVRkin вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблемы с ардуино уно begun Делимся опытом 1 24.05.2017 13:37
Как управлять ногами B4 и B5? Jazz777_ STM8 15 11.08.2015 12:25
Ардуино и Делфи Samuyl AVR 7 03.12.2014 10:00
Быстро проверить исправность Ардуино. 123ksn AVR 9 25.11.2014 11:54
Каким MOSFET'ом можно управлять с вывода AAtiny13, питающегося от 1.8-3в? 123ksn AVR 39 11.04.2014 21:19


Часовой пояс GMT +4, время: 11:30.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot