ARDUINO Инфракрасный (ИК) передатчик создание пульта

БорисБорбадос

✩✩✩✩✩✩✩
10 Ноя 2019
3
0
Добрый день
Решил сделать пульт, но уроков точных нету.
Задача зная значение кнопки от пульта, нужно его передать через ИК (свето диод) сигнал, но не через сериал монитор, а через кнопку т.е. нажимаешь кнопку сигнал полетел.
Как прикрутить кнопку тут я в тупике, помогите решить.

#include <IRremote.h>
IRsend irsend;


unsigned long a;
void setup(){

Serial.begin(9600);
Serial.setTimeout(4);
}

void loop ()
{
if (Serial.available())
{ a = Serial.parseInt();
if (a==1) {irsend.sendNEC(0x807F807F, 32);}

}
}

мой скетч работает в мониторе нужно отправить 1 и свето диод мигнет.
 

Вложения

  • 237 байт Просмотры: 22

Старик Похабыч

★★★★★★★
14 Авг 2019
4,159
1,267
Москва
Идея такая. скачиваешь библиотеку для работы с кнопкой. хочешь гайвербатон, хочеш ванбатон. Пишешь функцию, которая будет отсылать твой сигнал в ир-передатчик, подключаешь функцию к кнопке посредством библиотеки (в ванабтон примерно так mybaton.attachClick(func); и в тело лооп добавляешь mybaton.tick();
Всё.
Проблема настолько не проблема, что местным корифеям отвечать не интересно.
 

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
#include <IRremote.h>
IRsend irsend;
unsigned long a;

void setup(){
pinMode(5, INPUT); //кнопка на D5 при нажатии к +5
}

void loop ()
{
if (DigitalRead(5)) irsend.sendNEC(0x807F807F, 32);
delay(100); //опрос 10 раз в секунду
}
 

veniamin

✩✩✩✩✩✩✩
15 Фев 2020
27
0
у меня к вам такой вопрос перерыл интернет и серавно не могу понять или найти что означают слова после send такие как NEC, Raw, Sony и тд
знаю только то что вроде - как они связаны с какимто протоколом. Оъясните пж что это все означает.
 

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
@veniamin, если просто, то - кодирование/декодирование сигнала по названию производителя устройства, а RAW - это передача в чистом(исходном) виде.
 

veniamin

✩✩✩✩✩✩✩
15 Фев 2020
27
0
@IamNikolay, Спасибо

@IamNikolay, тогда что означает 0x перед кодом передачи ??
И как узнать код декодировки того или иного производителя ?? где гуглить
 

veniamin

✩✩✩✩✩✩✩
15 Фев 2020
27
0
@Эдуард Анисимов, загуглил про шестнадцатиричный код и узнал что в нем присутствуют буквы но а мне нужно через ИК передатчик отправить типо такого кода - 1886400719 что делать в этом случае ?
Потому-что у меня никак не получается отправить ровно тот код который я прописываю в сетче, одну ардуино я запрагромировал так чтобы она при подключении питания отправляла через ИК свето-диод определенные команды, а другую ардуино прошил чтобы ардуино через приемник принимала коды и выводила в монитор порта, но когда я включаю 1вую-ардуино (с ИК светодиодом) то вторая ардуино выводит в монитор порта коды НО они не совпадают с тем что я прописал в скетче. Т.е передатчик передает не те команды которые должен, или приемник их както меняет или неправильно понимает-принимает и выводит в монитор порта не то что надо.
 
Изменено:

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,265
944
58
Марий-Эл
Товарищь. Чтобы не задавать таких вопросов, почитайте о представлении данных в микропроцессорных системах и компьютерах. Это лекция не на пять минут, но это основа всего. Это нужно знать на 5 с плюсом.
А ваш код в шестнадцатеричном виде с представлением каждой цифры будет выглядеть так 0x01, 0x08, 0x08, 0x06, 0x04, 0x00, 0x00, 0x07, 0x01, 0x09
Чисто в шестнадцатеричном. 0x707030CF в 32 разрядном представлении.
 

veniamin

✩✩✩✩✩✩✩
15 Фев 2020
27
0
@Эдуард Анисимов, если не трудно, можете предложить сайт на которм читать или смотреть про "представлении данных в микропроцессорных системах и компьютерах" ??
 

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
@IamNikolay, тогда что означает 0x перед кодом передачи ??
И как узнать код декодировки того или иного производителя ?? где гуглить
В гугле и искать по производителю и девайсу или считать с пульта самой ардуиной.
Т.е передатчик передает не те команды которые должен, или приемник их както меняет или неправильно понимает-принимает и выводит в монитор порта не то что надо.
вот видео (первое с гугла) где 2 ардуины общаются по ir и код там есть
 
  • Лойс +1
Реакции: Артем09

kalobyte

★★★✩✩✩✩
1 Янв 2020
726
146
Это лекция не на пять минут, но это основа всего.
ну тут я не соглашусь
если учиться в быдловузах, то простые темы можно жевать месяцами, я уже это проходил
нигде и никто ему не объяснит мелкие нюансы, это только можно самому понять, потратив не один день

@veniamin,
тут все просто
есть числа, а есть "знаки" (которые компутер тоже видит как числа)
в качестве знака # комутер видит число 35 или 0х23
точно так же твой набор цифр 1886400719 это не число, а набор знаков, за которыми скрываются реальные числа согласно таблице

знаку 1 из твоего набора соответствует 0х49



когда мы используем терминал, то он понимает по умолчанию все в ascii символах, а не в чистых цифрах
когда мы принимает данные из терминала, то их надо конвертировать в числа при помощи функции atoi(), что означает ascii to integer

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

veniamin

✩✩✩✩✩✩✩
15 Фев 2020
27
0
@kalobyte, спасибо то что надо как-рас кстате, а про функцию atoi(), можно поподробней ато я не нашол четких примеров и описаний использования