Ir + сплит +arduino

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Здравствуйте, подскажите пожалуйста, как включить сплит. Считал сигнал 0xC3E10000. записал в скетч, не работает. А у динамиков сигнал 40BF08F7 F4E60A8, там работает. Пытался меня частоту(36,38,40,56). Сплит Erison EC-S09A5, пульт YKR-I/001E.

#include <iarduino_IR_TX.h>                      
iarduino_IR_TX VD(3);                          
void setup(){
  VD.begin();                                   
                      
}
void loop(){
  VD.frequency=36;
  VD.send(0xC3E10000);  } 

 

fanat.arduino
Offline
Зарегистрирован: 10.11.2019
24CD80C1
6D7DF12
EADD2B82
D9C6C422
Заново глянул сигнал, уже другие цифры, странно, но также не чего не работает.
 
negavoid
Offline
Зарегистрирован: 09.07.2016

Попробуйте записать сигнал другой библиотекой. У моего кондиционера посылки больше 100 байт занимают.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

А подскажите пожалуйста какой можно?Я не давно в теме ардуино еще не все знаю, заранее благодарю.  

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

negavoid пишет:

Попробуйте записать сигнал другой библиотекой. У моего кондиционера посылки больше 100 байт занимают.

Цыфер там больше. Эта пп точно не обрабатывает.

SLKH
Offline
Зарегистрирован: 17.08.2015

пульты кондиционеров, как правило, передают не одну команду, а всё новое состояние, которое должно быть после нажатия на кнопку, так что записывать сигналы нет смысла.

Хочешь автоматизировать управление - прицепи ардуину к пульту (родному или купи универсальный) и управляй его кнопками.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Поищите Ваш сплит вот здесь. Если повезёт, нароете информацию об управлении им через ПДУ.

SLKH
Offline
Зарегистрирован: 17.08.2015

ЕвгенийП пишет:

Поищите Ваш сплит вот здесь. Если повезёт, нароете информацию об управлении им через ПДУ.

это вряд ли...

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Нашел как Raw сигнал передать и считать. Чет по прежнему кондей молчит. 



#include <IRremote.h>

IRsend irsend;

void setup()
{
}

void loop() {
unsigned int  rawData[51] = {50,2200, 50,1050, 50,1050, 50,1050, 50,350, 100,1800, 50,1050, 50,2150, 50,1100, 50,200, 50,4150, 50,4400, 50,4400, 50,1100, 50,1100, 50,200, 50,750, 50,200, 50,3000, 50,2250, 50,1100, 50,2150, 50,200, 50,4100, 50,3400, 50};  // UNKNOWN 6F7FD1D2
  irsend.sendRaw(rawData,51,36);
      irsend.sendRaw(rawData,51,36);
        irsend.sendRaw(rawData,51,36);
        irsend.sendRaw(rawData,51,36);
        irsend.sendRaw(rawData,51,36);
		delay(40);
	}
	

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

 мы троллим новичка или реально тупим?

Пульты кондиционеров двунаправленные. На arduino.cc  был топик про это. Там всё совсем не просто. Есть готовые решения по многим моделям. Но просто чтением и запоминанием кода там не ограничиться.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

а не помнишь как называется?

negavoid
Offline
Зарегистрирован: 09.07.2016

Пульты кондиционеров бывают разные. И хоть у меня и модель 2018 года, но пульт однонаправленный. Но да, посылает целиком всё новое состояние.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

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

negavoid
Offline
Зарегистрирован: 09.07.2016

У вас может быть динамический код, как в автомобильных сигнализациях. Хотя, это слишком круто, для кондиционера-то :) Либо, как считает коллега wdrakula, у пульта двусторонняя связь, либо вы неправильно/не целиком улавливаете/передаёте посылки кодов.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019
Encoding  : UNKNOWN
Code      : E019CBEB (32 bits)
Timing[15]: 
     +  50, -2150     +  50, -1100     +  50, -1200     +  50, -3350
     +  50, -1200     +  50, -2150     +  50, -3150     +  50
unsigned int  rawData[15] = {50,2150, 50,1100, 50,1200, 50,3350, 50,1200, 50,2150, 50,3150, 50};  // UNKNOWN E019CBEB
 
Encoding  : UNKNOWN
Code      : F54ED019 (32 bits)
Timing[21]: 
     +  50, -1050     +  50, - 350     +  50, -1750     +  50, -1100
     +  50, -1100     +  50, -1050     +  50, -1150     +  50, -2200
     +  50, -2150     +  50, -3300     +  50
unsigned int  rawData[21] = {50,1050, 50,350, 50,1750, 50,1100, 50,1100, 50,1050, 50,1150, 50,2200, 50,2150, 50,3300, 50};  // UNKNOWN F54ED019
 
Encoding  : UNKNOWN
Code      : 6F7FD1D2 (32 bits)
Timing[51]: 
     +  50, -2200     +  50, -1050     +  50, -1050     +  50, -1050
     +  50, - 350     + 100, -1800     +  50, -1050     +  50, -2150
     +  50, -1100     +  50, - 200     +  50, -4150     +  50, -4400
     +  50, -4400     +  50, -1100     +  50, -1100     +  50, - 200
     +  50, - 750     +  50, - 200     +  50, -3000     +  50, -2250
     +  50, -1100     +  50, -2150     +  50, - 200     +  50, -4100
     +  50, -3400     +  50
unsigned int  rawData[51] = {50,2200, 50,1050, 50,1050, 50,1050, 50,350, 100,1800, 50,1050, 50,2150, 50,1100, 50,200, 50,4150, 50,4400, 50,4400, 50,1100, 50,1100, 50,200, 50,750, 50,200, 50,3000, 50,2250, 50,1100, 50,2150, 50,200, 50,4100, 50,3400, 50};  // UNKNOWN 6F7FD1D2
 
Encoding  : UNKNOWN
Code      : 4956FA10 (32 bits)
Timing[21]: 
     +  50, -1900     +  50, -3250     +  50, -1050     +  50, -1100
     +  50, - 200     +  50, - 800     +  50, -2150     +  50, -2100
     +  50, -2250     +  50, -4450     +  50
unsigned int  rawData[21] = {50,1900, 50,3250, 50,1050, 50,1100, 50,200, 50,800, 50,2150, 50,2100, 50,2250, 50,4450, 50};  // UNKNOWN 4956FA10
 
Encoding  : UNKNOWN
Code      : 7B2515C0 (32 bits)
Timing[15]: 
     +  50, -1800     +  50, -3300     +  50, -1050     +  50, - 200
     +  50, - 850     +  50, - 200     +  50, - 700     +  50
unsigned int  rawData[15] = {50,1800, 50,3300, 50,1050, 50,200, 50,850, 50,200, 50,700, 50};  // UNKNOWN 7B2515C0
 
Encoding  : SANYO
Code      : FFFFFFFF (0 bits)
Timing[31]: 
     +  50, -2100     +  50, - 250     +  50, -1900     +  50, -1050
     +  50, - 300     +  50, - 750     +  50, - 200     +  50, - 800
     +  50, - 950     +  50, -2500     +  50, -2100     +  50, -1900
     +  50, -2150     +  50, -2200     +  50, -1150     +  50
unsigned int  rawData[31] = {50,2100, 50,250, 50,1900, 50,1050, 50,300, 50,750, 50,200, 50,800, 50,950, 50,2500, 50,2100, 50,1900, 50,2150, 50,2200, 50,1150, 50};  // SANYO FFFFFFFF
unsigned int  data = 0xFFFFFFFF;
 
Encoding  : UNKNOWN
Code      : FDF00EB4 (32 bits)
Timing[19]: 
     +  50, -1800     +  50, -2150     +  50, -1350     +  50, - 700
     +  50, -1100     +  50, - 250     +  50, - 700     +  50, -2150
     +  50, -2200     +  50
unsigned int  rawData[19] = {50,1800, 50,2150, 50,1350, 50,700, 50,1100, 50,250, 50,700, 50,2150, 50,2200, 50};  // UNKNOWN FDF00EB4
 
Encoding  : UNKNOWN
Code      : CDE870EE (32 bits)
Timing[7]: 
     +  50, - 250     + 100, - 400     + 100, - 300     +  50
unsigned int  rawData[7] = {50,250, 100,400, 100,300, 50};  // UNKNOWN CDE870EE
 
Encoding  : UNKNOWN
Code      : 4495E069 (32 bits)
Timing[17]: 
     +  50, -1850     +  50, -2100     +  50, -1100     +  50, - 300
     +  50, - 650     +  50, -1100     +  50, -1050     +  50, -2100
     +  50
unsigned int  rawData[17] = {50,1850, 50,2100, 50,1100, 50,300, 50,650, 50,1100, 50,1050, 50,2100, 50};  // UNKNOWN 4495E069
 
Encoding  : UNKNOWN
Code      : 64520422 (32 bits)
Timing[9]: 
     +  50, - 300     +  50, - 350     +  50, - 250     +  50, - 350
     +  50
unsigned int  rawData[9] = {50,300, 50,350, 50,250, 50,350, 50};  // UNKNOWN 64520422
fanat.arduino
Offline
Зарегистрирован: 10.11.2019

у меня диод не на прямую подключен, а по схеме, может это влиять?  

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Я уже не знаю, что думать, посмотрел видосы, стать почитал, что ж мне так не везет.  xiaomi remote сигнал не видит. Попробовал разные библиотеки, и тишина.

nik182
Offline
Зарегистрирован: 04.05.2015

Попробуйте телевизором поуправлять. Коды точно в одну сторону и точно одиночные команды. Если получится, значит железо в порядке. Можно к кодндею переходить.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

я попробовал на TV приставки, все отравляет. Она включаются и выключаются.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016
fanat.arduino
Offline
Зарегистрирован: 10.11.2019

При компиляцией скетча, мне выдало недостаточно память, на первой ссылки, где он код брал. А вторая не отрывается.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Может длина волны не та? 

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

fanat.arduino пишет:

Может длина волны не та? 

Скорее всего! Обычно, если 

fanat.arduino пишет:

При компиляцией скетча, мне выдало недостаточно память

тот тут к гадалке не ходи - либо длина волны, либо квантовое состояние.

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

я уже пуль разбираю, чтоб диод выпаять 

negavoid
Offline
Зарегистрирован: 09.07.2016

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

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

вот я считал, вроде не длинный 

fanat.arduino пишет:

Encoding  : UNKNOWN
Code      : E019CBEB (32 bits)
Timing[15]: 
     +  50, -2150     +  50, -1100     +  50, -1200     +  50, -3350
     +  50, -1200     +  50, -2150     +  50, -3150     +  50
unsigned int  rawData[15] = {50,2150, 50,1100, 50,1200, 50,3350, 50,1200, 50,2150, 50,3150, 50};  // UNKNOWN E019CBEB
 
Encoding  : UNKNOWN
Code      : F54ED019 (32 bits)
Timing[21]: 
     +  50, -1050     +  50, - 350     +  50, -1750     +  50, -1100
     +  50, -1100     +  50, -1050     +  50, -1150     +  50, -2200
     +  50, -2150     +  50, -3300     +  50
unsigned int  rawData[21] = {50,1050, 50,350, 50,1750, 50,1100, 50,1100, 50,1050, 50,1150, 50,2200, 50,2150, 50,3300, 50};  // UNKNOWN F54ED019
 
Encoding  : UNKNOWN
Code      : 6F7FD1D2 (32 bits)
Timing[51]: 
     +  50, -2200     +  50, -1050     +  50, -1050     +  50, -1050
     +  50, - 350     + 100, -1800     +  50, -1050     +  50, -2150
     +  50, -1100     +  50, - 200     +  50, -4150     +  50, -4400
     +  50, -4400     +  50, -1100     +  50, -1100     +  50, - 200
     +  50, - 750     +  50, - 200     +  50, -3000     +  50, -2250
     +  50, -1100     +  50, -2150     +  50, - 200     +  50, -4100
     +  50, -3400     +  50
unsigned int  rawData[51] = {50,2200, 50,1050, 50,1050, 50,1050, 50,350, 100,1800, 50,1050, 50,2150, 50,1100, 50,200, 50,4150, 50,4400, 50,4400, 50,1100, 50,1100, 50,200, 50,750, 50,200, 50,3000, 50,2250, 50,1100, 50,2150, 50,200, 50,4100, 50,3400, 50};  // UNKNOWN 6F7FD1D2
 
Encoding  : UNKNOWN
Code      : 4956FA10 (32 bits)
Timing[21]: 
     +  50, -1900     +  50, -3250     +  50, -1050     +  50, -1100
     +  50, - 200     +  50, - 800     +  50, -2150     +  50, -2100
     +  50, -2250     +  50, -4450     +  50
unsigned int  rawData[21] = {50,1900, 50,3250, 50,1050, 50,1100, 50,200, 50,800, 50,2150, 50,2100, 50,2250, 50,4450, 50};  // UNKNOWN 4956FA10
 
Encoding  : UNKNOWN
Code      : 7B2515C0 (32 bits)
Timing[15]: 
     +  50, -1800     +  50, -3300     +  50, -1050     +  50, - 200
     +  50, - 850     +  50, - 200     +  50, - 700     +  50
unsigned int  rawData[15] = {50,1800, 50,3300, 50,1050, 50,200, 50,850, 50,200, 50,700, 50};  // UNKNOWN 7B2515C0
 
Encoding  : SANYO
Code      : FFFFFFFF (0 bits)
Timing[31]: 
     +  50, -2100     +  50, - 250     +  50, -1900     +  50, -1050
     +  50, - 300     +  50, - 750     +  50, - 200     +  50, - 800
     +  50, - 950     +  50, -2500     +  50, -2100     +  50, -1900
     +  50, -2150     +  50, -2200     +  50, -1150     +  50
unsigned int  rawData[31] = {50,2100, 50,250, 50,1900, 50,1050, 50,300, 50,750, 50,200, 50,800, 50,950, 50,2500, 50,2100, 50,1900, 50,2150, 50,2200, 50,1150, 50};  // SANYO FFFFFFFF
unsigned int  data = 0xFFFFFFFF;
 
Encoding  : UNKNOWN
Code      : FDF00EB4 (32 bits)
Timing[19]: 
     +  50, -1800     +  50, -2150     +  50, -1350     +  50, - 700
     +  50, -1100     +  50, - 250     +  50, - 700     +  50, -2150
     +  50, -2200     +  50
unsigned int  rawData[19] = {50,1800, 50,2150, 50,1350, 50,700, 50,1100, 50,250, 50,700, 50,2150, 50,2200, 50};  // UNKNOWN FDF00EB4
 
Encoding  : UNKNOWN
Code      : CDE870EE (32 bits)
Timing[7]: 
     +  50, - 250     + 100, - 400     + 100, - 300     +  50
unsigned int  rawData[7] = {50,250, 100,400, 100,300, 50};  // UNKNOWN CDE870EE
 
Encoding  : UNKNOWN
Code      : 4495E069 (32 bits)
Timing[17]: 
     +  50, -1850     +  50, -2100     +  50, -1100     +  50, - 300
     +  50, - 650     +  50, -1100     +  50, -1050     +  50, -2100
     +  50
unsigned int  rawData[17] = {50,1850, 50,2100, 50,1100, 50,300, 50,650, 50,1100, 50,1050, 50,2100, 50};  // UNKNOWN 4495E069
 
Encoding  : UNKNOWN
Code      : 64520422 (32 bits)
Timing[9]: 
     +  50, - 300     +  50, - 350     +  50, - 250     +  50, - 350
     +  50
unsigned int  rawData[9] = {50,300, 50,350, 50,250, 50,350, 50};  // UNKNOWN 64520422

svm
Offline
Зарегистрирован: 06.11.2016

fanat.arduino пишет:

вот я считал, вроде не длинный 

fanat.arduino пишет:

 

Для кондиционера маловат. Встречаются длинной до 600 символов. Я когда занимался с управлением кондиционером, использовал кажется этот код для приема. Он принимает до 800.

// Выход ИК приемника подкючен ко входу D2 
#define LEDPIN 13     // Индикатор приема
#define maxLen 800   //Длина приемного буфера,можно увеличить это значение для Arduino с более чем 2k SRAM
volatile  unsigned int irBuffer[maxLen]; //Буфер хранения данных (времени срабатывания прерываний)
volatile unsigned int x = 0; 
void setup() {
  Serial.begin(9600); 
  attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE);//Настройка прерывания для приема ИК-сигнала
}
void loop() {
  Serial.println(F("Press the button on the remote now - once only"));
  delay(5000); // pause 5 secs
  if (x) { // если сигнал захвачен
    digitalWrite(LEDPIN, HIGH);// Зажечь индикатор приема сигнала
    Serial.println();
    Serial.print(F("Raw: (")); // Заголовок raw  дампа
    Serial.print((x - 1));
    Serial.print(F(") "));
    detachInterrupt(0);
    for (int i = 1; i < x; i++) { 
      if (!(i & 0x1)) Serial.print(F(""));          // В исходнике if (!(i & 0x1)) Serial.print(F("-"));
      Serial.print(irBuffer[i] - irBuffer[i - 1]);
      Serial.print(F(","));                        // В исходнике Serial.print(F(", "));
    }
    Serial.println();
     for (int n = 3; n < x; n++) { 
      if (!(n & 0x1)) {
        if ( (irBuffer[n] - irBuffer[n - 1]) > 1000 ) {
          Serial.print("1");
        } else {
          Serial.print("0");
        }
        if ( ((n -2) % 8 ) == 0 ) {
          Serial.print(" ");
        }
      }
    }
    x = 0;
    Serial.println();
    Serial.println();
    digitalWrite(LEDPIN, LOW);//Выключение индикатора приема
    attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE);//Переназначить прерывание для приема ИК-сигнала
  }
}
void rxIR_Interrupt_Handler() {
  if (x > maxLen) return; // игнорировать, если irBuffer уже заполнен
  irBuffer[x++] = micros(); // Запись времени изменения сигнала
}

 

fanat.arduino
Offline
Зарегистрирован: 10.11.2019
Спасибо тебе большое, зароботало, правдо дистанция малелнькая, и в массиве не разобрался, он отравляет только одну комманду, если прописанны две, ну это мелочи, главное, что включается и выключатся, а мне это достаточно, пока-что


#include <IRremote.h>

IRsend irsend;

void setup()
{

}

void loop() {
  int khz = 38; // 38kHz carrier fre0quency for the NEC protocol
  unsigned int irSignalOFF[] = {9016,4468,580,1648,576,1648,576,524,584,516,580,520,576,524,584,1640,584,1644,580,1644,584,1644,580,1644,580,520,576,524,584,516,580,520,576,524,584,516,580,520,576,524,584,516,580,516,580,520,588,516,580,516,580,520,584,516,580,520,576,524,584,516,580,520,576,524,584,516,580,520,576,524,584,516,580,520,576,524,584,1640,584,516,580,1648,576,520,576,524,584,516,580,520,576,524,584,516,580,520,588,512,584,516,580,520,576,524,584,516,580,520,576,524,584,516,580,520,576,524,580,516,584,516,580,520,588,516,576,520,580,520,584,516,580,520,576,524,584,516,580,520,576,524,584,516,580,520,576,524,584,516,580,520,576,524,584,516,580,520,576,524,580,516,580,520,576,524,584,516,580,520,576,524,584,516,580,520,576,524,584,516,580,1644,580,520,576,1652,584,516,580,520,576,524,584,512,584,516,580,1648,576,1648,580,1648,576,1648,588,512,584,1644,580,1644,580,520,612,
1100,0011, 1110, 0000, 0000, 0000, 0000, 0000, 0000, 0101, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 1010, 0000, 1111, 0110 };
 unsigned int irSignalON[] = {9008,4476,576,1648,588,1640,584,516,580,520,584,516,580,520,576,1648,576,1648,588,1640,580,1644,580,1648,576,524,584,516,580,520,576,524,580,516,580,520,588,512,584,516,580,520,584,516,580,520,576,524,584,516,580,520,584,516,580,520,576,524,584,516,580,520,584,516,580,520,576,524,584,516,576,524,572,524,584,516,580,1648,584,516,580,1644,580,520,576,524,584,516,576,524,616,484,580,520,576,524,580,520,576,524,584,516,580,520,608,492,580,520,576,520,588,512,584,516,576,524,584,516,580,520,588,512,580,520,576,524,584,516,580,520,584,516,580,520,576,524,584,516,580,520,576,524,580,520,576,520,588,512,580,520,576,524,584,516,580,520,588,1640,580,520,576,520,588,516,580,520,576,520,584,516,580,520,576,524,584,516,580,520,584,1640,584,516,580,1648,576,524,584,516,580,520,584,516,580,520,576,1648,584,1644,580,1644,612,1612,580,520,576,524,584,516,580,1648,612,
1100, 0011, 1110, 0000, 0000, 0000, 0000, 0000, 0000, 0101, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0100, 0000, 0000, 1010, 0000, 1111, 0001, 
};
    //irsend.sendRaw(irSignalON, sizeof(irSignalON) / sizeof(irSignalON[0]), khz); //Note the approach used to automatically calculate the size of the array.
 
irsend.sendRaw(irSignalOFF, sizeof(irSignalOFF) / sizeof(irSignalOFF[0]), khz); //Note the approach used to automatically calculate the size of the array.

 //In this example, the signal will be repeated every 5 seconds, approximately.
 delay(500);
}