ИК-пульт на базе ардуино, проблема с трансляцией сигнала через ИК-диод

Артем09
Offline
Зарегистрирован: 26.07.2021

Привет.
Посмотрел видео Амперки как они копируют пульт от кондиционера в виде RAW сигнала и решил повторить за ними, но возникли проблемы.

Скетч состоит из двух частей - либо на чтение данных с ИК-приемника, либо на отправку через ИК диод RAW сигналов записанных во flash память контроллера. 
Принимать RAW-сигналы и выводить их в монитор порта получается более менее сносно, проблема возникает при попытке транслировать этот сигнал ИК-диодом - в оригинальном скетче записан пример RAW сигнала пульта автора и при попытке транслировать его - он посылается за долю секунды как на обычном пульте (подключил параллельно ИК-диоду обычный светодиод чтобы видеть посылаемый сигнал). Но когда я копирую RAW коды своего пульта из монитора порта и заменяю в скетче сигнал автора на свой, тогда при попытке послать этот сигнал он(или какая то чепуха) транслируется 3-4 секунды (моргает светодиод). Тогда как у автора длина сигнала - 210, а у меня всего 73. Чувствую что я в одном шаге от реализации того что мне нужно, но понять в чем проблема не могу. Может вы мне поможете. Навыков программирования нет и может что то важно не понимаю. Детали у меня обычные, не амперские. ИК-приемник работает 100% - стабильно читает коды на других скетчах, ИК-диод тоже рабочий. Подключаю правильно. 

Видео Амперки - https://www.youtube.com/watch?v=vK16efpSEi8

Страница проекта со скетчем - http://wiki.amperka.ru/arduino-projects:ir-remote

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

Предоставьте ВАШУ схему и ВАШУ программу. Отправлять по внешним ссылкам в высшей степени невежливо.

Артем09
Offline
Зарегистрирован: 26.07.2021

Ок. 

Схему не вижу смысла рисовать, ИК-приемник(3 вывода) - GND на землю,Vcc питание на порт 3.3V (пробовал и на 5V кидать - ничего не меняется), и сигнальный на 4 порт(пин,контакт?) ардуино UNO, ИК-диод через резистор анодом на 9 порт, катодом на GND, параллеьно ему обычный маломощный светодиод.

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

Первоисточник - http://wiki.amperka.ru

// Библиотека для хранения данных во флеше вместо RAM
#include <avr/pgmspace.h>
 
// Библиотека для работы с ИК-приёмником и передатчиком
#include <IRremote.h>
 
// Имя пина, которому подключен приёмник
#define RECV_PIN 4
// Имя пина, к которому подключен передатчик
#define SEND_PIN 9
 
// Создаём объект для ИК-приёмника
IRrecv irrecv(RECV_PIN);
 
// Создаём объект для ИК-передатчика
IRsend irsend;
 
// Создаём объект для декодированных команд с ИК-пульта
decode_results results;
 
// Массивы для хранения ИК-команд: On и Off
const unsigned int 
    PROGMEM irSignalOn [] = {9000, 4450, 600,550, 600, 500, 600, 550, 550, 550, 600, 500, 600, 550, 600, 550, 550, 550, 600, 1650, 550, 1700, 550, 1650, 600, 1700, 550, 550, 600, 1650, 550, 1700, 550, 1650, 600, 550, 550, 1650, 600, 550, 600, 1650, 600, 500, 600, 550, 550, 550, 600, 550, 550, 1650, 600, 550, 550, 1700, 600, 500, 600, 1650, 600, 1650, 600, 1650, 550, 1650, 650},
    PROGMEM irSignalOff [] = {9050, 4400, 650, 1600, 600, 1650, 600, 500, 600, 500, 600, 500, 600, 550, 550, 1650, 600, 1600, 600, 1650, 650, 1600, 600, 1650, 600, 1600, 600, 550, 600, 500, 600, 500, 600, 1600, 650, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1650, 600, 1600, 650, 1600, 650, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 550, 550, 550, 550, 550, 600, 450, 650, 500, 600, 450, 650, 1600, 650, 1600, 600, 500, 600, 500, 650, 450, 650, 500, 550, 500, 650, 450, 600, 550, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 650, 450, 600, 1650, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 550, 600, 450, 650, 500, 600, 450, 650, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 550, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 600, 500, 650, 450, 600, 500, 650, 450, 600, 500, 650, 1600, 650, 500, 600, 1600, 600, 550, 600, 500, 600, 500, 600, 500, 600, 500, 600, 1600, 650, 1600, 600, 1650, 600, 500, 600, 1650, 600, 1600, 650, 500, 550, 1650, 650};
    
 
// Переменная для хранения состояния режима "запись ИК-сигнала"
bool recordState = false;   // true - для режима чтения, false - для игнорирования режима чтения
 
// Частота (КГц) с которой будут передаваться сигналы
int khz = 38;
 
// Строка с хранением данных введенных в последовательный порт
String command = "";
 
void setup() {
  // открываем последовательный порт
  Serial.begin(9600);
  // если состояния режима "чтение ИК-сигнала", true
  if (recordState) {
    // Запускаем работу ИК-приёмника
    irrecv.enableIRIn();
    // производим процесс декодирование принятых сигналов
    reading (&results);
  }
}
 
void loop() {
  // пока в Serial port поступают символы...
  while (Serial.available() > 0) {
    // ...символ записываем в переменную
    char symbol = Serial.read();
    // если приходит символ разрыва строки...
    if (symbol == '\n') {
      // выводим полученную команду
      Serial.println(command);
      // идентифицируем полученную команду
      if ( command == "ON") {
        // если пришла команда ON, выполняем отправку соответствующей команды
        sending (irSignalOn);
        // выводим сообщение об отправке
        Serial.println("Signal \"ON\" sent.");
      } else if (command == "OFF") {
        // если пришла команда OFF, выполняем отправку соответствующей команды
        sending (irSignalOff);
        // выводим сообщение об отправке
        Serial.println("Signal \"OFF\" sent.");
      }
 
      for (int i = 0; i < sizeof(irparams.rawbuf) / sizeof(irparams.rawbuf[0]); i++) {
        irparams.rawbuf[i] = 0;
      }
      command = "";
    } else  {
      // ... если символ не является символом разрыва строки, то вписываем его в последовательность
      command += symbol;
    }
  }
}
 
// функция отправки ИК-команд
void sending (unsigned int irSygnal[]) {
  // если пришла команда , извлекаем массив команды из флеш памяти
  for (int i = 0; i < sizeof(irparams.rawbuf) / sizeof(irparams.rawbuf[0]); i++) {
    irparams.rawbuf[i] = pgm_read_word_near(irSygnal + i);
  }
  // выполняем отправку команды
  irsend.sendRaw(irparams.rawbuf, sizeof(irparams.rawbuf) / sizeof(irparams.rawbuf[0]), khz);
  // выводим сообщение об отправке
 
}
 
// функция режима "чтение ИК-сигнала"
void reading (decode_results *results) {
  // "Введите команду с пульта дистанционного управления"
  Serial.println("Enter the command from the remote control. ");
  while (1) {
    // ожидаем, пока придет команда с пульта
    if (irrecv.decode(results)) {
      Serial.print("irSygnal[");                // имя массива
      Serial.print(results->rawlen - 1, DEC);  // размер массива
      Serial.print("] = {");
      // Дамп данных
      for (int i = 1;  i < results->rawlen;  i++) {
        Serial.print(results->rawbuf[i] * USECPERTICK, DEC);
        if ( i < results->rawlen - 1 ) Serial.print(","); // ',' не нужна на последнем
        if (!(i & 1))  Serial.print(" ");
      }
      Serial.println("};");
      // перезапустим ИК-приёмник
      irrecv.resume();
      break;
    }
  }
  // запускаем функцию вновь
  reading (results);
}

 

 

rkit
Offline
Зарегистрирован: 23.11.2016

Артем09 пишет:

Навыков программирования нет и может что то важно не понимаю

Может?

Артем09
Offline
Зарегистрирован: 26.07.2021

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

vk007
Offline
Зарегистрирован: 16.06.2015

Артем09 пишет:
параллеьно ему обычный маломощный светодиод.

Кто ж это диоды параллелит? У них у каждого должен быть свой токоограничивающий резистор.

Артем09
Offline
Зарегистрирован: 26.07.2021

Так и есть, у каждого свой, просто параллельно оба подключены. В любом случае по схеме все работает, оба светодиода моргают, обычный просто чтобы мне не смотреть через камеру на ИК

 

b707
Offline
Зарегистрирован: 26.05.2017

Артем09, сдается мне. код от амперки нерабочий. В этом коде всегда отсылается сигнал одного и того же размера - причем размера абсолютно левого, никак не связанного с размером последовательности.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Вот на амперке и спрашивай

Артем09
Offline
Зарегистрирован: 26.07.2021

Я тоже заметил что какую последовательнось я бы не написал, например всего из пары числел - все равно трансляция будет очень длинная и явно не то что я записал. Так же пытался сменить пин вывода ИК-диода с 9 на 3 в строке:

// Имя пина, к которому подключен передатчик
#define SEND_PIN 9

Но при загрузке все равно транслируются коды через пин 9. 

Нет, перезагружать не приходится, работает стабильно без зависаний 

rkit
Offline
Зарегистрирован: 23.11.2016

Артем09 пишет:

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

Тогда зачем ты завел эту тему, если ты такой весь в состоянии?

Артем09
Offline
Зарегистрирован: 26.07.2021

Не понимаю чего ты заагрился на меня

rkit
Offline
Зарегистрирован: 23.11.2016

Артем09 пишет:

Не понимаю чего ты заагрился на меня

Не понимаю, чего ты завел эту тему.

Артем09
Offline
Зарегистрирован: 26.07.2021

b707 пишет:

Артем09, сдается мне. код от амперки нерабочий. В этом коде всегда отсылается сигнал одного и того же размера - причем размера абсолютно левого, никак не связанного с размером последовательности.

Спасибо!  значит буду искать другой код с передачей RAW

b707
Offline
Зарегистрирован: 26.05.2017

Артем09 пишет:

Спасибо!  значит буду искать другой код с передачей RAW

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

rkit
Offline
Зарегистрирован: 23.11.2016

b707 пишет:

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

Артем09 пишет:

Навыков программирования нет

Артем09
Offline
Зарегистрирован: 26.07.2021

Цитата:

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

Попробую разобраться в командах кода

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

Артем09 пишет:

Схему не вижу смысла рисовать

Разбираться в Вашей проблеме, когда Вам самому это не нужно - не вижу смысла :-(

Артем09
Offline
Зарегистрирован: 26.07.2021

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

Разбираться в Вашей проблеме, когда Вам самому это не нужно - не вижу смысла :-(

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

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

Показать ветку в которой мы всем форумом несколько дней трахались, пока заставили таки ТС выложить схему и увидели, что он читает аналоговый сигнал (и подаёте его туда) с пина "Reset"?

И да, кстати, сами Вы "бро".

Артем09
Offline
Зарегистрирован: 26.07.2021

Бывает такое, но у меня нет проблем с подключением схемы и исправностью элементов, потому что ИК-сигналы нормально считываются и выводятся в порт, а ИК-диод нормально моргает, но только сигналом записанным в скетче изначально. Проблема возникает только когда меняешь код сигнала автора на свой. 

b707
Offline
Зарегистрирован: 26.05.2017

Артем09 пишет:

ИК-диод нормально моргает, но только сигналом записанным в скетче изначально.

вы ошибаетесь. В этом скетче код автора тоже не работает

Артем09
Offline
Зарегистрирован: 26.07.2021

Да, вы говорили) 
Если там не много нужно исправить, то за какое вознаграждение сделаете? Если возьметесь) Просто чтобы иметь в виду.

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

Артем09 пишет:
у меня нет проблем
Если бы у Вас не было проблем, не было бы этого поста :-(

Я, хоть и запоздало, отвечу на Ваш вопрос

Артем09 пишет:
тебе нужна схема ...

Мне - нет. У меня всё работает. Это у Вас какие-то проблемы. Вот и думайте, кому она нужна :-)

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Артем09 пишет:

Схему не вижу смысла рисовать .... ИК-диод через резистор анодом на 9 порт, катодом на GND, параллеьно ему обычный маломощный светодиод.

Без транзистора-ключа?  Излучающий ик-диод потребляет порядка 100 ма.

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

dimax пишет:

Без транзистора-ключа?  Излучающий ик-диод потребляет порядка 100 ма.

Так нет же смысла!

Артем09
Offline
Зарегистрирован: 26.07.2021

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

Я, хоть и запоздало, отвечу на Ваш вопрос

Если ты не понял, то это был не вопрос, а рассуждения о том, что мне не нужна помощь человека не в состоянии представить три детали в голове:)
И помощь сноба мне тоже не нужна, без тебя справлюсь. 

Артем09
Offline
Зарегистрирован: 26.07.2021

dimax пишет:

Без транзистора-ключа?  Излучающий ик-диод потребляет порядка 100 ма.

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

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

Артем09 пишет:

Если ты не понял, то это был не вопрос, а рассуждения о том, что мне не нужна помощь человека не в состоянии представить три детали в голове:)

Если Вы не поняли, никто не станет помогать человеку, которому это настолько не нужно, что лень нарисовать три детали, когда его об этом попросили.

Артем09 пишет:

справлюсь

Не сомневаюсь, удачи!

GarryC
Offline
Зарегистрирован: 08.08.2016

Прежде, чем начинать разбираться в программах, хорошо бы разобраться в работе диодов вообще, светодиодов в частности и инфракрасной передачи в особенности. Но это мое личное мнение, нет никаких сомнений, что ТС "сам справится".

Артем09
Offline
Зарегистрирован: 26.07.2021

Иди лесом, у меня электротехническое образование и я прекрасно разбираюсь в работе электронных компонентов, и в этом вопросе, мне ваши советы вообще до фонаря. 

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

Артем09 пишет:

Иди лесом, у меня электротехническое образование

ПТУ? ;))

alexbmd
Offline
Зарегистрирован: 15.01.2016

Артем09 пишет:

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

так работает ?

void sending (const unsigned int irSygnal[], int s) {
  // если пришла команда , извлекаем массив команды из флеш памяти
  for (int i = 0; i < s; i++) {
    irparams.rawbuf[i] = pgm_read_word_near(irSygnal + i);
  }
  // выполняем отправку команды
  irsend.sendRaw(irparams.rawbuf, s, khz);
  // выводим сообщение об отправке
}
    sending (irSignalOn, sizeof_P irSignalOn/sizeof_P irSignalOn[0]);
    sending (irSignalOff, sizeof_P irSignalOff/sizeof_P irSignalOff[0]);

 

*непомню если есть там sizeof_P  если что посмотри чем там мерять прогмем

 

b707
Offline
Зарегистрирован: 26.05.2017

alexbmd, так оно будет жестоко виснуть :) ... в некоторых случаях :)

но вообще молодец. сообразил :) Поставил плюсик...

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Артем09 пишет:

Иди лесом, у меня электротехническое образование и я прекрасно разбираюсь в работе электронных компонентов, и в этом вопросе, мне ваши советы вообще до фонаря. 

Тогда вопрос на засыпку (точнее, на комбинаторику): сколькими способами можно соединить между собой 3 детали?

Upper
Offline
Зарегистрирован: 23.06.2020

alexbmd пишет:

а некоторые из них тут очень умные дядьки, совет которых многого стоит

А как понять, что дядька умный?

Спросить у Вас?

Как Вы считаете - andriano умный дядька?

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

Ы :) я считаю что да, иногда выпендривается, как и все мы тут, но последующий щелчок по носу воспринимает профессионально, и уверен, наматывает на ус, так что слушать его ТСу стоило бы внимательно :)

alexbmd
Offline
Зарегистрирован: 15.01.2016

b707 пишет:

так оно будет жестоко виснуть :)

например? :)

Upper
Offline
Зарегистрирован: 23.06.2020

Не контролируется переполнение буфера.

alexbmd
Offline
Зарегистрирован: 15.01.2016

в условиях про буфр ни слова... если у автора проблемы с перполнением можно добавить

s = s < (sizeof(irparams.rawbuf) / sizeof(irparams.rawbuf[0])) ? s : sizeof(irparams.rawbuf) / sizeof(irparams.rawbuf[0]);

 

Артем09
Offline
Зарегистрирован: 26.07.2021

Господа, спасибо всем за ответы, решил отказаться от кода амперки, потому что даже после замены куска кода отправки ВНЕЗАПНО начинали возникать ошибки в других частях кода, 
Ошибка: too few arguments to function 'void sending(const unsigned int*, int)'

alexbmd пишет:

так работает ?

void sending (const unsigned int irSygnal[], int s) {
  // если пришла команда , извлекаем массив команды из флеш памяти
  for (int i = 0; i < s; i++) {
    irparams.rawbuf[i] = pgm_read_word_near(irSygnal + i);
  }
  // выполняем отправку команды
  irsend.sendRaw(irparams.rawbuf, s, khz);
  // выводим сообщение об отправке
}
    sending (irSignalOn, sizeof_P irSignalOn/sizeof_P irSignalOn[0]);
    sending (irSignalOff, sizeof_P irSignalOff/sizeof_P irSignalOff[0]);

 

*непомню если есть там sizeof_P  если что посмотри чем там мерять прогмем

 

Мне нужно скопировать всего 1 кнопку, чтобы при нажатии транслировался 1 код, никакие изыски в виде занесения кодов в flash память не нужны, поэтому написал такой простейший код:
 

#include <IRremote.h>

IRsend irsend;

const int switch1 = 4;

unsigned int  rawData[67] = {4600,4350, 650,1550, 700,1550, 700,1550, 650,500, 650,450, 700,450, 650,500, 650,450, 650,1550, 700,1550, 700,1550, 650,500, 650,450, 650,500, 650,450, 650,500, 650,1550, 700,1550, 650,1600, 650,1600, 650,500, 600,500, 650,500, 600,500, 650,500, 650,450, 650,500, 650,450, 650,1550, 700,1550, 700,1550, 650,1600, 650};  // SAMSUNG E0E0F00F

void setup() {
  pinMode(switch1, INPUT_PULLUP);

}
    

void loop() {
  
  if (digitalRead(switch1) == LOW){
  delay(50);
  irsend.sendRaw(rawData,67,38);}

}

И собственно только один вопрос - Работать будет? Сейчас пока нет возможности проверить
В данном случае это сигнал с моего пульта от телека, но стандартная библиотека не умеет в кодировку SAMSUNG, поэтому просто сигнал в виде RAW записал, как и хотел, потому что пульт который нужно будет скопировать нестандартный и я не знаю что там будет за кодировка. 
Светодиод моргает, вроде бы на глаз все работает. 

b707
Offline
Зарегистрирован: 26.05.2017

alexbmd пишет:

в условиях про буфр ни слова... если у автора проблемы с перполнением

alexbmd. а вот теперь вы пишете ерунду

Что значит "нет в условии"? - не написано что "буфер не должен переполняться"? :) - не смешите, это как бы само собой разуеется - об этом должны думать вы, раз предлагаете вариант кода. То, что у автора последовательности разной длины. причем некоторые весьма длинные - видно в листинге #2

alexbmd пишет:

можно добавить

s = s < (sizeof(irparams.rawbuf) / sizeof(irparams.rawbuf[0])) ? s : sizeof(irparams.rawbuf) / sizeof(irparams.rawbuf[0]);

это не решение. Так вы вернулись к тому нерабочему коду.,что был у ТС изначально

 

 

Артем09
Offline
Зарегистрирован: 26.07.2021

Проверил на телевизоре - оно работает!
Замечательно, значит теперь я смогу скопировать любой код любого пульта с частотой 38кГц. 
Всё, тему можно закрывать. 
И кстати, бьет на 5 метров и без усилителя.

alexbmd
Offline
Зарегистрирован: 15.01.2016

Артем09 пишет:

 too few arguments to function

для этого и есть 10 и 11 строчки примера. внимательнее надо быть

b707 пишет:

 Так вы вернулись к тому нерабочему коду.,что был у ТС изначально

нет. у ТС вообще не работало. .  его закидали ссаными тряпками. да он тоже дерзил некрасиво но сейчас не про это. ТС попросил просто чтоб работало. ни о каких дополнительных условиях и командах речи не шло. просто чтоб работало и предложил ему один из рабочих вариантов без "отлития в бронзе". в олимпиаде  также не участвую :) на самый грамотный и короткий код тоже не претендую. так что не к тому же.

но вообще да. предыдущая строчка не верна. лучше так

if ( s > (sizeof(irparams.rawbuf) / sizeof(irparams.rawbuf[0]))) {Serial.print("ovf"); return;}

ну а видеале конечно надо разбираться что там за буфер, опредление, где и как лучше страховаться, спору нет

brigadir218
Offline
Зарегистрирован: 27.02.2022

всем привет! ребята подскажите пожалуйста. в чем может быть проблема? Хочу сделать пульт ИК на ардуинке, но почему-то сигнал с ардуино не выходит с ИК-диода. пробовал подключать на разные пины, разные библиотеки, менял разные ИК-диоды, но все тщетно. плата Arduino Nano., пробывал менять и их. А когда подсоединял к плате Esp 8266 wemos mini, то там все работает.  Скетчи использовал разные и результатов ноль. может кто подскажет в чем может быть загвоздка?

вот скетч на котором я остановился, но на нем тоже arduino nano коды не отправляет. коды от пульта Sony , если это имеет значение. при нажатии кнопок в сериал отправка идет.

#include <IRremote.h>
IRsend irsend;

const int Button_ON = 4;
const int Button_LEFT = 5;



const long Code_On = 0x490;
const long Code_LEFT = 0xC90;

void setup()
{
  Serial.begin(9600);
  irsend.enableIROut(38);
  
  pinMode(Button_ON, INPUT_PULLUP); 
  pinMode(Button_LEFT, INPUT_PULLUP);
 
  
}

void loop()
{
    if( digitalRead(Button_ON) == LOW)
      {
        irsend.sendNEC(Code_On, 32);
        Serial.println("ВКЛ/ВЫКЛ");
         delay(1000);
      }
    if( digitalRead(Button_LEFT) == LOW)
      {
        irsend.sendNEC(Code_LEFT, 32);
        Serial.println("Лево");
        delay(100);
      } 
   
   
     
    delay(100);
}

 

b707
Offline
Зарегистрирован: 26.05.2017

brigadir218 пишет:

пробовал подключать на разные пины

вместо того чтоб "пробовать", читайте документацию.

Для подключения ИК-диода в библиотеке IRremote можно использовать только конкретные пины, указанные в файле

https://github.com/Arduino-IRremote/Arduino-IRremote/blob/master/src/private/IRTimer.hpp

в частности, для Ардуино Нано нужно использовать пин 3 и никакой другой

brigadir218
Offline
Зарегистрирован: 27.02.2022

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

b707
Offline
Зарегистрирован: 26.05.2017

brigadir218 пишет:

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

если читали бы - не писали бы ерунды, про то что "пробовали разные пины".

Выкладывайте схему, как подключен ИК диод. Надеюсь, он не включен напрямую между пином и землей?

 

brigadir218 пишет:

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

С вашим кодом оно никак иначе работать и не может. Если хотите, чтобы кнопки работали сразу при нажатии - избавляйтесь от всех delay() в коде

brigadir218
Offline
Зарегистрирован: 27.02.2022

плюсовая ножка через резистор номиналом 100 Ом, на пин 3.,  ну а минусовая соответственно на землю. на Esp 8266 работала вообще без резистора.

b707
Offline
Зарегистрирован: 26.05.2017

brigadir218 пишет:

плюсовая ножка через резистор номиналом 100 Ом, ну а минусовая соответственно на землю. на Esp 8266 работала вообще без резистора.

сообщение #24

brigadir218
Offline
Зарегистрирован: 27.02.2022

че, типа нужен ключ?