MedicusAmicus Опубликовано 3 апреля, 2017 Автор Жалоба Поделиться Опубликовано 3 апреля, 2017 Лазерные дальномеры (в виде готового изделия) Готовые изделия курочить, извлекать собственно модуль, разбираться в протоколе передачи данных - не, не настолько надо.Сейчас на одном канале трудится HC-SR501 в связке с HC-SR04, на втором - один HC-SR04. + датчик освещенности на ардуине.Исполнитель - 4-канальное реле, 2 канала нагружены ночной подсветкой разных зон коридора, 2 канала свободны.На один думаю повесить свет в чулан, на второй - вентиляцию в ванной. Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 3 апреля, 2017 Автор Жалоба Поделиться Опубликовано 3 апреля, 2017 Допплеровский сенсор на таких расстояниях вполне прилично работаетТут нужен будет именно дальномер, ибо дистанция содержит 3 разных изолированных зоны срабатывания. "самописный алгоритм обработки" не изменит факта сложного эха от стен и мебели.В "паспортных" условиях HC-SR04 до 4 метров меряет, мне бы одного хватило, но геометрия помещения вносит свои поправки. Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 3 апреля, 2017 Автор Жалоба Поделиться Опубликовано 3 апреля, 2017 SlavaD, скетч допилен в целом, просто хотел "красоту" навести.По рабочим характеристикам корявый оказался надежнее элегантного. #define LDR_PIN A0 //пин фоторезистора #define RELAY_PIN1 6 //пин реле коридора #define RELAY_PIN2 7 //пин реле вход #define pirPin 3 //датчик движения #define S_TRIG1 12 //триггер звука коридор #define S_ECHO1 11 //ловим эхо #define S_TRIG2 10 //триггер звука вход #define S_ECHO2 9 //ловим эхо int tres = 300; //порог освещенности int RANGE1 = 10; //предел дистанции обнаружения коридор int RANGE2 = 175; //предел дистанции обнаружения вход unsigned int distance1=0; unsigned int impulseTime1=0; unsigned int distance2=0; unsigned int impulseTime2=0; unsigned long previousMillis1 = 0; //храним время последнего Включения света unsigned long previousMillis2 = 0; //храним время последнего Включения света unsigned long interval = 10000; //интервал работы (10 секунд) boolean CLOSE0_1, CLOSE1_1, CLOSE2_1; boolean CLOSE0_2, CLOSE1_2, CLOSE2_2; void setup() { Serial.begin(9600); pinMode (pirPin, INPUT); pinMode (RELAY_PIN1, OUTPUT); pinMode (S_TRIG1, OUTPUT); pinMode (RELAY_PIN2, OUTPUT); pinMode (S_TRIG2, OUTPUT); } void loop() { boolean dark = (analogRead(LDR_PIN) > tres); //сравниваем освещенность с порогом Serial.println("dark \t distance1 \t CLOSE0_1 \t needLight1 \t distance2 \t CLOSE0_2 \t needLight2 "); Serial.print(analogRead(LDR_PIN)); Serial.print("\t"); int motion = digitalRead(pirPin); //считываем датчик движения digitalWrite(S_TRIG1, HIGH); // Подаем импульс на вход trig дальномера delayMicroseconds(10); // равный 10 микросекундам digitalWrite(S_TRIG1, LOW); // Отключаем impulseTime1 = pulseIn(S_ECHO1, HIGH); distance1=impulseTime1/58; // Пересчитываем в сантиметры Serial.print(distance1); Serial.print("\t \t"); CLOSE0_1 = distance1<RANGE1 && distance1>1; Serial.print (CLOSE0_1); Serial.print("\t \t"); delay (30); //начинаем проверки if (CLOSE0_1 == 1) { digitalWrite(S_TRIG1, HIGH); // Подаем импульс на вход trig дальномера delayMicroseconds(10); // равный 10 микросекундам digitalWrite(S_TRIG1, LOW); // Отключаем CLOSE1_1 = (pulseIn(S_ECHO1, HIGH)/58) <RANGE1; delay (30); } if (CLOSE1_1 == 1) { digitalWrite(S_TRIG1, HIGH); // Подаем импульс на вход trig дальномера delayMicroseconds(10); // равный 10 микросекундам digitalWrite(S_TRIG1, LOW); // Отключаем CLOSE2_1 = (pulseIn(S_ECHO1, HIGH)/58) <RANGE1; } boolean CLOSE1 = (CLOSE0_1 && CLOSE1_1 && CLOSE2_1); boolean needLight1 = (CLOSE1 && dark) || (motion && dark); if (needLight1 == 1) { digitalWrite (RELAY_PIN1, HIGH); // горит previousMillis1 = millis(); // отсчёт отсрочки начинается сначала... } // Прошло время выключаем свет if (previousMillis1 && (millis()-previousMillis1 >= interval)) { digitalWrite (RELAY_PIN1, LOW); // не горит previousMillis1 = 0; } Serial.print (needLight1); Serial.print("\t \t "); digitalWrite(S_TRIG2, HIGH); /* Подаем импульс на вход trig дальномера */ delayMicroseconds(10); // равный 10 микросекундам digitalWrite(S_TRIG2, LOW); // Отключаем impulseTime2 = pulseIn(S_ECHO2, HIGH); distance2=impulseTime2/58; // Пересчитываем в сантиметры Serial.print(distance2); Serial.print("\t \t "); CLOSE0_2 = distance2<RANGE2 && distance2>1; Serial.print (CLOSE0_2); Serial.print("\t \t"); delay (30); //начинаем проверки if (CLOSE0_2 == 1) { digitalWrite(S_TRIG2, HIGH); /* Подаем импульс на вход trig дальномера */ delayMicroseconds(10); // равный 10 микросекундам digitalWrite(S_TRIG2, LOW); // Отключаем CLOSE1_2 = (pulseIn(S_ECHO2, HIGH)/58) <RANGE2; delay (30); } if (CLOSE1_2 == 1) { digitalWrite(S_TRIG2, HIGH); /* Подаем импульс на вход trig дальномера */ delayMicroseconds(10); // равный 10 микросекундам digitalWrite(S_TRIG2, LOW); // Отключаем CLOSE2_2 = (pulseIn(S_ECHO2, HIGH)/58) <RANGE2; } boolean CLOSE2 = (CLOSE0_2 && CLOSE1_2 && CLOSE2_2); boolean needLight2 = (CLOSE2 && dark); if (needLight2 == 1) // Если расстояние менее предела { digitalWrite (RELAY_PIN2, HIGH); // горит previousMillis2 = millis(); // отсчёт отсрочки начинается сначала... } // Прошло время выключаем свет if (previousMillis2 && (millis()-previousMillis2 >= interval)) { digitalWrite (RELAY_PIN2, LOW); // не горит previousMillis2 = 0; } Serial.println (needLight2); delay (500); } Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 31 июля, 2018 Автор Жалоба Поделиться Опубликовано 31 июля, 2018 Доброго времени, кому не спится.Новая задача.Имеем два массива: названия кнопок/команд и коды этих команд (ИК пульты)Задача - найти в массиве поступившие данные, выдать нагорА адрес ячейки, во втором массиве найти соответствующее значение и передать в терминал/ик-излучатель.char* codeNames[]={"Vol_Up","Vol_Down","Mute","PC/Aux","Opt/Cox"}; char* codes[]={"1E70807F","1E7040BF","1E70906F","1E7000FF","1E70C03F"};Как пример. Коды есть возможность пересчитать в любой кодировке.Через switch(results.value){ case ....} делать муторно - 3 пульта, почти сотня кнопок. Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
Neinsager Опубликовано 31 июля, 2018 Жалоба Поделиться Опубликовано 31 июля, 2018 MedicusAmicusНу циклом, думаю, проще всего будет: char* codeNames[]={"Vol_Up","Vol_Down","Mute","PC/Aux","Opt/Cox"}; char* codes[]={"1E70807F","1E7040BF","1E70906F","1E7000FF","1E70C03F"}; #define ArrSize(arg) ((unsigned int) (sizeof (arg) / sizeof (arg[0]))) for (i = 0; i < ArrSize(codeNames)-1; i++) { if ( input_code == codeNames[i]) { // как-то передаём в терминал значение элемента codes[i] } } Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 1 августа, 2018 Автор Жалоба Поделиться Опубликовано 1 августа, 2018 Попробую, спасибо. Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 1 августа, 2018 Автор Жалоба Поделиться Опубликовано 1 августа, 2018 Не знаю, в каком формате он принимает данные, но по значению кода искать отказывается напрочь, сволочь такая.Буду через свитч делать. Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
CIBAS Опубликовано 1 августа, 2018 Жалоба Поделиться Опубликовано 1 августа, 2018 Не будет так искать по коденамес !У Вас элементы массива - строки,нельзя сравнивать в IF две строки - (можно только переменные типа char - 1 байт).Для сравнения строк в стандартном (ANSI C) есть специальная функция strcmp,вот и копайте в этом направлении ... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Iverton Опубликовано 1 августа, 2018 Жалоба Поделиться Опубликовано 1 августа, 2018 или может такая муть сработает ))) не вкурсе просто что там на скетче работает )const char* codeNames[]={"Vol_Up","Vol_Down","Mute","PC/Aux","Opt/Cox","\0"}; const char* codeHex[]={"1E70807F","1E7040BF","1E70906F","1E7000FF","1E70C03F","\0"}; int getHexPosition( gainCode[] ) { //подразумевается char gainCode[] int i = 0; while ( !strcmp(codeNames[i], "\0" )) { strcmp( receiveCode, codeNames[i]) ? i++ : return i; } return -1; } //в мейне или где там цикл основной вызываем примерно такconst char hexSignal[] = codeHex[getHexPosition( gainCode[])]); Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 1 августа, 2018 Автор Жалоба Поделиться Опубликовано 1 августа, 2018 Этот вариант пробовал, не хочет.Пилю универсальный пульт из ардуины.Этот скетч должен получить код ик-пульта, найти соответствие в базе, выдать в терминал название команды.Потом из него переделаю на отправку последовательности через ик-диод по поступившей команде.Возможно, даже на 8266 сделаю. Если памяти хватит.Вероятнее всего, буду что-то подобное лепить:switch ( results.value ) { case 0xFFA857: serial.println ("Vol_Up"); break; case 0xFFE01F: serial.println ("Vol_Down"); break; } Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
CIBAS Опубликовано 1 августа, 2018 Жалоба Поделиться Опубликовано 1 августа, 2018 Да не надо мудрить-как было первоначально предложено, так и оставить,просто вместо сравнениия input_code == codeNamesпоставить вызов strcmp, в соответствии с её реализацией в Вашей системе. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 1 августа, 2018 Автор Жалоба Поделиться Опубликовано 1 августа, 2018 strcmp ругается на несоответствие типов.Массив типа char - двухмерный, итоговый указатель - одно значение. Не разобрался, что ему скормить, чтобы удовлетворить. Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
CIBAS Опубликовано 1 августа, 2018 Жалоба Поделиться Опубликовано 1 августа, 2018 минутку, посмотрю хелп if(strcmp(input_code, codeNames) == 0) { действия по совпадению } может быть потребуется &input_code просто я не пользуюсь ардуиной и скетчами-всё самописное,без RTOS и прочего-могут быть нюансы в функциях Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 1 августа, 2018 Автор Жалоба Поделиться Опубликовано 1 августа, 2018 (изменено) #include "IRremote.h" IRrecv irrecv(2); // указываем вывод, к которому подключен приемник #define Led 4 //визуальный контроль сигнала decode_results results; void setup() { Serial.begin(9600); // выставляем скорость COM порта pinMode (Led, OUTPUT); irrecv.enableIRIn(); // запускаем прием } void loop() { if ( irrecv.decode( &results )) { // если данные пришли digitalWrite (Led, &results); delay (1); digitalWrite (Led,0); switch ( results.value ) { case 0x1E70807F: Serial.println("Vol_Up"); break; case 0x1E7040BF: Serial.println("Vol_Down"); break; case 0x1E70906F: Serial.println("Mute"); break; case 0x1E7000FF: Serial.println("PC/Aux"); break; case 0x1E70C03F: Serial.println("Opt/Cox"); break; } } Serial.println(results.value, HEX); irrecv.resume(); // принимаем следующую команду }Примерно так будет.Таблица соответствия кодов у меня уже есть, "кейсы"и прочее наклепаю.Вернусь домой, проверю работоспособность. Изменено 1 августа, 2018 пользователем MedicusAmicus Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 1 августа, 2018 Автор Жалоба Поделиться Опубликовано 1 августа, 2018 На минуточку поржать. Коды кнопок пульта кондиционера.//кондей case 0x1090060A : Serial.println(" Mode Auto On "); break; case 0x2030040A : Serial.println(" Mode Heat Off "); break; case 0x3030060A : Serial.println(" Mode Heat On "); break; case 0x4890040A : Serial.println(" Mode Moist Off "); break; case 0x5890060A : Serial.println(" Mode Moist On "); break; case 0x8800040A : Serial.println(" Mode Cold Off "); break; // case 0x9000060A : Serial.println(" Fan Auto "); break; // case 0x9000060A : Serial.println(" Sleep Off "); break; // case 0x9000060A : Serial.println(" Turbo Off "); break; case 0x90000E0A : Serial.println(" Turbo On "); break; case 0x90040A : Serial.println(" Mode Auto Off "); break; case 0x9100060A : Serial.println(" Sleep On "); break; // case 0x9400060A : Serial.println(" Fan Mid "); break; // case 0x9400060A : Serial.println(" X-Fan Off "); break; // case 0x9400060A : Serial.println(" Swing Up "); break; // case 0x9400060A : Serial.println(" Swing Mid-up "); break; // case 0x9400060A : Serial.println(" Swing Mid "); break; // case 0x9400060A : Serial.println(" Swing Mid-down "); break; // case 0x9400060A : Serial.println(" Swing Down "); break; // case 0x9400060A : Serial.println(" Swing Off "); break; // case 0x9400060A : Serial.println(" 16 "); break; case 0x9400070A : Serial.println(" X-Fan On "); break; case 0x9410060A : Serial.println(" 24 "); break; case 0x9420060A : Serial.println(" 20 "); break; case 0x9430060A : Serial.println(" 28 "); break; case 0x9450060A : Serial.println(" 26 "); break; case 0x9460060A : Serial.println(" 22 "); break; case 0x9470020A : Serial.println(" Light Off "); break; // case 0x9470060A : Serial.println(" 30 "); break; // case 0x9470060A : Serial.println(" Light On "); break; // case 0x9480060A : Serial.println(" 17 "); break; // case 0x9480060A : Serial.println(" 18 "); break; case 0x9490060A : Serial.println(" 25 "); break; case 0x94A0060A : Serial.println(" 21 "); break; case 0x94B0060A : Serial.println(" 29 "); break; case 0x94C0060A : Serial.println(" 19 "); break; case 0x94D0060A : Serial.println(" 27 "); break; case 0x94E0060A : Serial.println(" 23 "); break; // case 0x9600060A : Serial.println(" Swing Mov Down "); break; // case 0x9600060A : Serial.println(" Swing Mov Mid "); break; // case 0x9600060A : Serial.println(" Swing Mov Up "); break; // case 0x9800060A : Serial.println(" Mode Cold On "); break; // case 0x9800060A : Serial.println(" Fan Low "); break; case 0x9C00060A : Serial.println(" Fan High "); break; case 0xC4E0040A : Serial.println(" Mode Vent Off "); break; case 0xD4E0060A : Serial.println(" Mode Vent On "); break;Закоментированные строки.И как эту хрень различать?Надо будет попробовать слать эти команды и смотреть на результат. Похоже, пульт хитрожелтый. Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
CIBAS Опубликовано 1 августа, 2018 Жалоба Поделиться Опубликовано 1 августа, 2018 Вот держу в руках пульт кондиционера.К примеру имеется одна кнопка Fan Speed - скорость вращения вентилятора.Но скоростей 5, они перебираются последовательно, циклически, а код команды один и тот же.Та же картина с клавишей положения заслонки - код один, а положений несколько.Именно это и имелось в виду. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
CIBAS Опубликовано 1 августа, 2018 Жалоба Поделиться Опубликовано 1 августа, 2018 Добавлю по распознаванию кодов: у многих кодов одинаковое тело и окончание - можно проанализировать и,возможно, достаточно будет сравнивать один байт, а не всю строку. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 1 августа, 2018 Автор Жалоба Поделиться Опубликовано 1 августа, 2018 CIBAS, внимательно посмотрите на коды. Шторка - даихусей.А вот температура 30 градусов и световой индикатор, переключение на охлаждение/свинг/и малая скорость потока - несколько наводят на мысли.Где-то что упущено.Похоже, реакция на код зависит от текущего режима кондиционера и еще какой-нибудь фазы 4 луны Юпитера.Позабавили отдельные коды на выключение из разных режимов. Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
CIBAS Опубликовано 1 августа, 2018 Жалоба Поделиться Опубликовано 1 августа, 2018 Коды из документации или сами раскодировали? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 1 августа, 2018 Автор Жалоба Поделиться Опубликовано 1 августа, 2018 Сам, через IRremoteДокументации нет. Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
CIBAS Опубликовано 1 августа, 2018 Жалоба Поделиться Опубликовано 1 августа, 2018 Понятно, надо взглянуть осциллограммы и сравнить с кодами, бываетвсякое - импульсы не очень красивые или декодер не совсем честный .... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Iverton Опубликовано 1 августа, 2018 Жалоба Поделиться Опубликовано 1 августа, 2018 Этот вариант пробовал, не хочет.Хотелось более подробное что - то, почему бы не поставить софт https://habr.com/post/149773/ и не смотреть хотябы в нем на работоспособность, народ же накидывает примерный алгоритм малоли где какие указатели и ссылки надо накнопать ))) IDE написало бы ошибку так как нужно подключить #include для работы strcmp, а что там в ардуино хз.. strcmp ругается на несоответствие типов.это один тип char* codes[]={"1E70807F", и это другой results.value который 0x1E70807F разные типы, поэтому изначально неправильно задача поставлена сравнивать массивы char. Нужно посмотреть что за тип results.value, создать такой же массив. Предполагаю что будет массив типов decode_results, посмотреть что там внутри может уже все сделано давно.. if(strcmp(input_code, codeNames) == 0) { действия по совпадению } может быть потребуется &input_code или так char* currentCode = *( codeNames + i++ ); strcmp( receiveCode, currentCode ) хотя уже наверное неважно т.к. не те типы используются Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 1 августа, 2018 Автор Жалоба Поделиться Опубликовано 1 августа, 2018 Iverton, вариант с массивами я уже отставил, немного "автоматизации" в excell решило проблему однотипных выражений.CIBAS, осциллографа нет, городить его из аудиокарты пока не хочется. Соберу макетку на передачу, буду тестировать на пациенте.В худшем случае - откажусь от некоторых функций, если остальные будут нормально работать.Для удаленного включения реально нужны 3-4 команды. Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
CIBAS Опубликовано 1 августа, 2018 Жалоба Поделиться Опубликовано 1 августа, 2018 Понятно. Если 3-4 команды, то можно сгородить не разбираясь в деталях.Ежели завтра не забуду из дома прихватить ИК датчик и его удастся запустить,то на работе посмотрю, что пульт выдаёт. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Iverton Опубликовано 1 августа, 2018 Жалоба Поделиться Опубликовано 1 августа, 2018 вариант с массивами я уже отставил, немного "автоматизации" в excell решило проблему однотипных выражений.Если свичем решение будет, советую добавить default значение. Кто знает что там придет на приемник, вдруг такого значения не окажется в кейсах. Все равно конечно непонятно приходит хекс 0x1E70807F , а отправлять надо строку Vol_Up, это все принимает и отправляет одно и то же устройство ? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.