Надо отправить IR сигнал с ардуино

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Ломать то зачем было? Тем более помечен был. Ладно, едем дальше. Давайте разбираться с резистором. Хоть и этот "своеобразный" дион и нелинейный элемент, но закону ома мы его подчинить сможем. Пологаю что рабочий ток вы не заете. Допустим и я тоже, но обычно у подобных диодов с длинной световой волны 940 нанометров ток составляет 60 - 80 миллиампер т.е. 0,05 А, выше нельзя, зафиксировали. Рабочее напряжение порядка 1,5 Вольт. Смотрим, Мк даёт нам 5 Вольт, на светик падает 1,5, т е на резюк 5 - 1,5 = 3,5 Вольт. отсюда R = U/I = 3.5 / 0.05 = порядка 70 ом. Не будем рисковать и чтоб снизить ток возьмём на 100 ом.

Посмотрите на плате, там нет резистора? Вижу под него место на средний пин.

taraspigo
Offline
Зарегистрирован: 08.04.2014

http://www.foto-me.ru/v.php?id=c40d9ebab53cdafa6a9b46c7b9896ced - вот такое наподключал,

http://www.foto-me.ru/v.php?id=be3a8ed80b1d5caff40b02b95a5367d5 - только такие есть у меня резисторы.

http://www.foto-me.ru/v.php?id=aa4626dca87fc7f69b4b108e1e96d2fd - и фото самой платы, ни спереди ни сзади там ничего нет.

leshak
Offline
Зарегистрирован: 29.09.2011

К сожалению, "по делу" расписать сейчас нет времени, а "по впечатлениям", то если кратко это так:

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Ну нет ничего и нет, не страшно. Те что посерединке это 220 Ом. Если ничего другого нет, можно взять 2 паралельно подпаять, получится 110 Ом. Это понятно? Если расстояние не большое будет, всё получится.

taraspigo
Offline
Зарегистрирован: 08.04.2014

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

taraspigo
Offline
Зарегистрирован: 08.04.2014

поможет мне кто-то  "добить ето"?

leshak
Offline
Зарегистрирован: 29.09.2011

С чем помочь-то? Нагуглить вам в интернете как подключать светодиод?  Или как кнопка к ардуине подключается? 

taraspigo
Offline
Зарегистрирован: 08.04.2014

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

#include <IRremote.h>
IRsend irsend;
void setup()
{
  }
void loop() {
    irsend.sendNEC(0x9F00FF,32); // code
      delay(5000);
              }

Теперь меня интересует три вопроса:

1) на какой из ардуинов (возможно поменьше по размерам и дешевле) лучше безболезненно будет перенести ето все чтоб освободить уно и продолжить учения.

2) Возможно ли в код вживить чтоб он работал определенное количество раз и потом останавливался на определенное время и снова начинал работать без вмешательства в друину.

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

 

leshak
Offline
Зарегистрирован: 29.09.2011

1. Откройте раздел "контроллеры ардуино" и выбирайте подходящую вам по размеру (да это опять-таки в шапке сайта все можно найти). Или купите кристал и собирите свою "минимальную арудину". И в инете, и тут на форуме есть описания что минимально нужно для AVR-ки что-бы "запустится". Единственное что - в ATMEGA8 библиотека IRRemote может не влезть (а может и влезет). Поэтому что-бы "не иметь себе гиморов" можно искать сразу atmeg328 камень. Ну или посмотреть на цены китайские плат. Вполне возможно что "купить готовую" выйдет дешевле чем "делать свою из рассыпухи". Или разница будет исчезающе мала.

2. Да. Возможно. Заводите глобальную переменную и увеличиваете ее после посылки каждого сигнала. После чего оборачиваете всю логику в if который выполняется только если переменная меньше какого-то значения.

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

Ну вот представте, что "человек умеет рисовать кружочек" и "умеет рисовать линию". Уже сам нарисовал и кружочек и линию. А потом спрашивает "а как нарисовать два кружочка соединенные линией?".

Вообщем тут как-то уже и отправить вас "что-то читать" - не получается. Потому что "все необходимое для решения" вы уже знаете и умеете. Только какой-то непонятный страх преминить эти знания мешает.

 

igorcds
Offline
Зарегистрирован: 03.12.2013

1. Я делал на ардуино мини.(размер примерно 2х5 см) есть 5В., есть 3,3В. и 8 и 16МГц.

да и IR светодиод можно выдернуть из любого пульта и запустить его через транзистор(спросить у гугла-схем куча)

2. В шапке сайта есть кнопочка =программирование= почитайте там про оператор for к примеру

void loop()
{
   for (int i=0; i <= 255; i++){     // ваш код внутри цикла будет выполняться 255 раз
                                                    // ваш irsend вставьте сюда
                                                    // и еще
                                                    //
      delay(10);
   }
}

 

т.е к примеру при каждом шаге можете слать любое количество команд на ir передачу. После 255 раза loop продожит свою работу...

Так же посмотрите про оператор Switch, задержка времени посмотрите оператор millis()

 

 

igorcds
Offline
Зарегистрирован: 03.12.2013

RAW  массив- снимаете показание с пульта, воследовательности значений убираете самое первое значение и вещаете без него, т.е приняли {25000 9800 -750 800 -800......} вещаете без 25000- типа как то так {9800, 750, 800, 800....}соответсвенно в коде указываете что передаете RAW код...

Еще у меня некорректо работал передатчик - не передовался и nec и raw код(вернее абракадабра шпарила на передачу, т.к  не было модуляции)- надо было добавить в setup строчку irrecv.enableIROut(38);

irrecv.enableIROut(38);- режим передатчика(38 -- частота в КГц, я пробовал и 36 и 38 и 40, особой разницы не увидел..)

irrecv.enableIRIn(); - режим приемника

dinovasya
Offline
Зарегистрирован: 03.10.2013

как я понял, человеку надо всего одну комманду с пульта считать, а именно CH+ (переключение канала) и этот код посылать каждые 3-4 секунды. в чем проблема собственно?

Клапауций
Offline
Зарегистрирован: 10.02.2013

dinovasya пишет:

как я понял, человеку надо всего одну комманду с пульта считать, а именно CH+ (переключение канала) и этот код посылать каждые 3-4 секунды. в чем проблема собственно?

не в чём, а в ком.

igorcds
Offline
Зарегистрирован: 03.12.2013
void setup()
  {
      serial.begin(9600);
      irsend.enableIROut(36);        
   }

void loop()
 {
             for (int i=0; i <= 116; i++)           //  116 раз будет выполняться код
              {     
                 irsend.sendNEC(0x800FF, 32);   // замените 800FF на свой код пульта
	             delay(3000);                                     // с паузой 3 секунды
	           }

  }

 

igorcds
Offline
Зарегистрирован: 03.12.2013

этот код просто вещает постоянно, т.е цикл закончился, и все по новой начинается. Можете добавить кнопку- считываете ее состояние и через оператор if , если кнопка была нажата, то выполняется цикл. Т.е for находится внутри if.


if (digitalRead(BUTTON) == HIGH)
   {
      for.........
       {
           ...
           ...
         }
     }

 

dinovasya
Offline
Зарегистрирован: 03.10.2013

ТС, выложи код, который считал с пульта.

taraspigo
Offline
Зарегистрирован: 08.04.2014

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

hugoboss317
Offline
Зарегистрирован: 21.03.2013

taraspigo пишет:

 Интересно как будет выглядеть код с вживленной в него кнопкой (спрашиваю так как не понимаю как сложить ето все вместе).

http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-novichku

P.S. Клапауций, магнитик куда отсылать?

igorcds
Offline
Зарегистрирован: 03.12.2013

в библиотеке IRremote есть пример ......Dump он и считывает

igorcds
Offline
Зарегистрирован: 03.12.2013
int button = 2;   // кнопка на 2 пин ардуино с подтяжкой 1к
int LED = 4;      // LED на 4 пин ардуино
int STATUS_button= 0; //статус кнопки
IRsend irsend;

void setup() 
{
  Serial.begin(9600);
  irrecv.enableIROut(38);
  pinMode(LED, OUTPUT);     
  pinMode(button, INPUT);    
 
}

void loop()
{

STATUS_button= digitalRead(button);
delay(10);  

    if (STATUS_button== HIGH)   //если кнопка нажата
       {
            digitalWrite(LED, HIGH);         //горит диод и вещает код

             for (int i=0; i <= 116; i++)                   
	              {    
	                 irsend.sendNEC(0x800FF, 32);   // замените 800FF на свой код пульта
	                 delay(3000);                                     // с паузой 3 секунды
                   }

//STATUS_button= LOW;   //вещание закончилось и обнуляется состояние кнопки
digitalWrite(LED, LOW); //и гаснет диод
         }
}
	               

 

igorcds
Offline
Зарегистрирован: 03.12.2013

не забудъте в начале всего добавить библиотеку IRremote.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Строка 30 бесполезная

 

igorcds
Offline
Зарегистрирован: 03.12.2013

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

igorcds
Offline
Зарегистрирован: 03.12.2013

попутный вопрос, чисто для расширения кругозора:

может кто и подскажет...

возможно ли на одной плате ардуино использовать одновременно и ir приемник и ir передатчик?

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

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

тему поднимал ранее:

http://arduino.ru/forum/programmirovanie/ir-peredatchik#comment-61224

 

спасибо

 

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Лишняя информация часто вводит в заблуждение.

Не настаиваю, делайте как считаете нужным

igorcds
Offline
Зарегистрирован: 03.12.2013

:) убрал

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Зачем?

Шучу, главное понимать, а видно суслика или нет - он, суслик, есть!

Клапауций
Offline
Зарегистрирован: 10.02.2013

hugoboss317 пишет:

P.S. Клапауций, магнитик куда отсылать?

...в Украину!(:D)

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

ЕвгеничЪ
Offline
Зарегистрирован: 30.09.2013

Господа знатоки!

В один определенный момент я решил реализовать включение домашнего кондиционера с помощью  Ардуино и ИК диода.

Скажу сразу, в программировании не силен, разве что изучал Паскаль в студенчестве.

С помощью Ардуино и ИК приемника из Китая я считал код кнопки включения кондиционера, код выглядит как:

9090060A
FFFFFFFF

 

Далее я подключил ИК диод к 3 пину Арудуино и теперь задача как то заставить его моргнуть в нужном ритме.

Покурил гугл, но пока не нашел вариантов решения или же что то не понимаю (что вероятно).

 

Я, само собой, не прошу готовый код, подскажите хотя бы в какую сторону курить гугл?

 

Спасибо!

Клапауций
Offline
Зарегистрирован: 10.02.2013

ЕвгеничЪ пишет:

подскажите хотя бы в какую сторону курить гугл?

ну, теперь читайте эту тему с начала.

igorcds
Offline
Зарегистрирован: 03.12.2013

пост 70, там только ir для щелканья каналов на ресивере, и передача в NEC коде. пост 61- там чуть чуть про вещание в RAW.

Вам скорее всего нужно в RAW передавать(в вашем принятом коде последовательность импульсов должна быть еще).

ir led подсоединятся через ограничивающий резистор на пин 3 ардуины(всегда пин3), у меня чтобы проверить работу ардуино на управл телевизором, нужно было поднести ир передатчик почти вплотную к ТВ и направить его строго в то место, где у тв находится ир приемник.

вам нужно будет две ардуины -одна передает, вторая принимает.

Работу IR передатчика можно увидеть фотоаппаратом/фотокамерой телефона.

Сначала вещаете пультом, потом ардуино и на ардуино приемнике сравниваете код, если все сходится- вещайте на кондей.

на форуме где то есть тема про управление кондеем, поищите.

Я когда собирал IR управление просил помощи в некоторых вопросах:

http://arduino.ru/forum/programmirovanie/ir-peredatchik#comment-61224

 

 

ЕвгеничЪ
Offline
Зарегистрирован: 30.09.2013

igorcds большое спасибо!

 

Вы сказали, что мне, скорее всего, надо будет передавать raw, а полученный с пульта код кнопки в виде:

9090060A
FFFFFFFF

не подойдет в таком же виде?

igorcds
Offline
Зарегистрирован: 03.12.2013

если хотите- попробуйте. только код 9090060A, без FFFFFFFF.

в библитеке есть образец скетча dump, захватите им ваш код, сохраните и код и последовательность значений.

И попробуйте передать и код и последовательность raw(предварительно raw надо подправить) и посмотрите что у вас получится.

Будете передавать- посмотрите через фотоаппарат на ир лед- должен моргать голубоватым, так вы убедитесь, что ваш ир лед работает и вещает...

igorcds
Offline
Зарегистрирован: 03.12.2013

igorcds пишет:

RAW  массив- снимаете показание с пульта, воследовательности значений убираете самое первое значение и вещаете без него, т.е приняли {25000 9800 -750 800 -800......} вещаете без 25000- типа как то так {9800, 750, 800, 800....}соответсвенно в коде указываете что передаете RAW код...

Еще у меня некорректо работал передатчик - не передовался и nec и raw код(вернее абракадабра шпарила на передачу, т.к  не было модуляции)- надо было добавить в setup строчку irrecv.enableIROut(38);

irrecv.enableIROut(38);- режим передатчика(38 -- частота в КГц, я пробовал и 36 и 38 и 40, особой разницы не увидел..)

irrecv.enableIRIn(); - режим приемника

ЕвгеничЪ
Offline
Зарегистрирован: 30.09.2013

Вот что удалось получить с пульта:

9040060A
Decoded NEC: 9040060A (32 bits)
Raw (74): 1506 9000 -4400 650 -1600 700 -500 700 -500 700 -1600 700 -500 650 -550 650 -550 650 -550 650 -500 700 -1600 700 -500 700 -500 700 -500 650 -550 650 -550 650 -550 650 -550 650 -500 700 -500 700 -500 700 -500 700 -1600 700 -1600 650 -500 700 -500 700 -500 700 -500 700 -500 700 -1600 700 -500 650 -1650 650 -500 700 -500 700 -1600 700 -500 700

 

При использовании

irsend.sendNEC(9040060A, 32);

не проходит компиляция...

При попытке использовать код:

 





#include <IRremote.h>
IRsend irsend;

unsigned int powerOn[24] = {-4400 650 -1600 700 -500 700 -500 700 -1600 700 -500 650 -550 650 -550 650 -550 650 -500 700 -1600 700 -500 700 -500 700 -500 650 -550 650 -550 650 -550 650 -550 650 -500 700 -500 700 -500 700 -500 700 -1600 700 -1600 650 -500 700 -500 700 -500 700 -500 700 -500 700 -1600 700 -500 650 -1650 650 -500 700 -500 700 -1600 700 -500 700};
void setup() {

  Serial.begin(9600);
}
void loop() {

       irsend.sendRaw(powerOn, 24, 36);
       delay (1000);
   }
}

Тоже получаем ошибку при компиляции:

 

 

sketch_apr27b:4: error: expected `}' before numeric constant
sketch_apr27b:4: error: expected ',' or ';' before numeric constant
sketch_apr27b:4: error: expected declaration before '}' token

igorcds
Offline
Зарегистрирован: 03.12.2013

cтрока 14 лишняя,

в строке 04 исправте

unsigned int powerOn[24]

на

unsigned int powerOn[74]

и строка 11 -такую попроуйте

irsend.sendRaw(powerOn, 74, 32);

и добавте в setup()

 irrecv.enableIROut(38);

 

igorcds
Offline
Зарегистрирован: 03.12.2013

и NEC передавать нужно в таком формате

irsend.sendNEC(0x800FF, 32)

 

igorcds
Offline
Зарегистрирован: 03.12.2013
#include <IRremote.h>
	IRsend irsend;
	 
	unsigned int powerOn[74] = {9000, 4400, 650, 1600, 700, 500, 700, 500, 700, 1600, 700, 500, 650, 550, 650, 550, 650, 550, 650, 500, 700, 1600, 700, 500, 700, 500, 700, 500, 650, 550, 650, 550, 650, 550, 650, 550, 650, 500, 700, 500, 700, 500, 700, 500, 700, 1600, 700, 1600, 650, 500, 700, 500, 700, 500, 700, 500, 700, 500, 700, 1600, 700, 500, 650, 1650, 650, 500, 700, 500, 700, 1600, 700, 500, 700};
	void setup() 
    {	 
	Serial.begin(9600);
    irsend.enableIROut(38);
	}
	void loop() 
       {
	       irsend.sendRaw(powerOn, 74, 32);
	       delay (1000);
	   }

 

ЕвгеничЪ
Offline
Зарегистрирован: 30.09.2013

igorcds

к сожалению Ваш вариант не помог((

а каким образом из 9040060A получаем 0x800FF, 32?

 

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

igorcds
Offline
Зарегистрирован: 03.12.2013

0х800FF это для примера. вместо 800FF подставляется свой код 0x9040060A.(0xпринятый код).

irsend.sendNEC(0x9040060A, 32), попробуйте передать NEC, у вас по моему опознал нек код, т.е попробуйте передать NEC код-

0хкод, 32

 

с RAW много хлопот, может и не надо убирать первое значение, а может и не полную прнимает последовательность...а может и я когда убирал отрицательные значения, что нибудь лишнее убрал....вы пробовали принимать код ардуиной( с ардуино на ардуино) и сравнить коды которые принимает? одинаковые? про RAW - гемор, много нюансов....попробуйте NEC, если не пойдет, тогда и придумывать с RAW

ЕвгеничЪ
Offline
Зарегистрирован: 30.09.2013

У меня, к сожалению, нет второй Ардуины, потому не могу погонять код между ними. 

Сейчас пробую NEC, но пока что безрезультатно(

Сейчас попробовал с аудио-видео ресивером, передал код кнопки включения/выключения (код одинаковый) - работает!

 

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

igorcds
Offline
Зарегистрирован: 03.12.2013

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

igorcds
Offline
Зарегистрирован: 03.12.2013

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

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Клапауций пишет:

hugoboss317 пишет:

P.S. Клапауций, магнитик куда отсылать?

...в Украину!(:D)

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

Землячёк, до 1 мая посылка из Крыма будет считаться как внутри страны, да и паспорт гражданина РФ я ещё не получил т.к. только прибыл. А магнит на холодильник прилепишь, реально из Дубая. kav-dron гав-гав рамблер тчк ру. всё без пробелов

Клапауций
Offline
Зарегистрирован: 10.02.2013

ЕвгеничЪ пишет:

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

вы точно уверены, что пульт кондея выдаёт одну команду, а не, управляющий всей кондейной халабудой, пакет команд?

ЕвгеничЪ
Offline
Зарегистрирован: 30.09.2013

igorcds, большое спасибо за помощь!

 

igorcds
Offline
Зарегистрирован: 03.12.2013

я свой RAW, пока не получил вторую ардуино не запустил.... у вас RAW на 74 значения, у меня два телика и магнитола автомобильная показало 68 символов... купите себе вторую ардуино мини(120 руб на ебай, идет около 20 дней) вам тогда проще будет проверять....

igorcds
Offline
Зарегистрирован: 03.12.2013

unsigned int powerOn[74] = {9000, 4400, 650, 1600, 700, 500, 700, 500, 700, 1600, 700, 500, 650, 550, 650, 550, 650, 550, 650, 500, 700, 1600, 700, 500, 700, 500, 700, 500, 650, 550, 650, 550, 650, 550, 650, 550, 650, 500, 700, 500, 700, 500, 700, 500, 700, 1600, 700, 1600, 650, 500, 700, 500, 700, 500, 700, 500, 700, 500, 700, 1600, 700, 500, 650, 1650, 650, 500, 700, 500, 700, 1600, 700, 500, 700};

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

igorcds
Offline
Зарегистрирован: 03.12.2013

Крым. тоже землячек. правда я ща под иркутском....:) а так живу под Керчью :)

ЕвгеничЪ
Offline
Зарегистрирован: 30.09.2013

igorcds пишет:

 зачем код изменять?

 

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

 

PS и медиаплеер работает при командовании им с помощью ардуины, а кондиционер все никак..((