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

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

если нужно светить даьше 10см - желателен

 

Но проблему с тем, как кнопки работают - это не сиправит, код все равно надо переписывать.

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

нет к сожалению, да их у меня несколько. один очень мелкий мм1.5 в диаметре от китайского пульта плоский такой. другой от пульта на руль . третий от Aver-Media RM-KS пульт, тоже очень мелкий.

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

пульт будет работать в 5 см максимум.  наверное возникнет вопрос, а для чего?, так надо!

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

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

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

brigadir218 пишет:

пульт будет работать в 5 см максимум.  наверное возникнет вопрос, а для чего?, так надо!

Для прямого подключения к пину резистор 100 Ом мал, надо бы раза в 2 больше. Но диод будет светится едва-едва.

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

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

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

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

brigadir218 пишет:

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

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

Подключив ИК-светик напрямую к пину ардуины - вы почти наверняка сожгли или светик или пин. Или и то и другое.

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

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

http://wiki.iarduino.ru/page/ik-peredatchik/?      вот подключал этой библиотекой, там можно к разным пинам подключать. перепробовал на дух ардуинках, больше нету. так тоже результатов ноль. Ик-диод целый, проверял ( ток выробатывает ). думал может есть какая то неизвестная мне причина из за которой все это не работает.

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

brigadir218 пишет:

Ик-диод целый, проверял ( ток выробатывает )

это что-то новенькое...

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

Еще один нерисователь схем :(

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

о , любитель схем :)

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

проверка на целостность ик-диода. мультиметром.

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

brigadir218 пишет:

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

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

Что и где еще вы неправильно подключили, припаяли или запрограммировали - предположить очень сложно.

 

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

вы точно ИК-диод взяли? Может это ИК-приемник?

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

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

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

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

brigadir218 пишет:

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

идиотов и на ютубе много... я бы сказал большинство.

Думайте своими мозгами, а не копируйте безграмотные "видосики"

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

ОК, а скажите , можно ли каким то образом проверить пины возможно спаленые?

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

brigadir218 пишет:

ОК, а скажите , можно ли каким то образом проверить пины возможно спаленые?

Например, подключаете между пином и GND резистор на 300-500 Ом и измеряете падение напряжения на резисторе при подаче на пин высокого уровня. Должно быть не менее 4.5-4.7в при питании 5в

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

понял спасибо!

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

brigadir218 пишет:
про подключение ик-диодов на прямую без резистора , так полно видео в ютюбе
Так, дураков-то, слава Богу, ни сеять, ни жать не надо - они сами родятся.

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

b707]</p> <p>[quote=brigadir218 пишет:

 

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

и снова здравствуйте.

 вот пришла новая ардуинка и подключил ИК-диод к 3 пину через резистор 220ом и нифига.

програмировал через программу flprog так как сам скетчи писать неумею.

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

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

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Никто в нем разбираться не будет. Или пишите сами , или закажите в «Ищу исполнителя».

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

Ну, можно еще на форуме flprog спросить

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

Народ, может кто подскажет что дальше делать. вот взял из IRremote примера скетча. добавил сюда кнопки в сетап и в loop коды пульта. так как сам в написании кода полный ноль, экспериментирую таким способом. Так вот, при таком раскладе ик диод светится постоянно, а что нужно прописать в скетче чтобы при нажатии кнопок коды передавались? перелазил уже почти весь интернет, но ничего подобного не нашел. Arduino nano 168.

#include <IRremote.h>

IRsend irsend;

void setup()
{
  pinMode(7,INPUT); // button 1
  pinMode(8,INPUT); // button 2
  pinMode(9,INPUT); // button 3
  pinMode(10,INPUT); // button 4
}

void loop() {
	
if (digitalRead(7) == HIGH){
    
   delay(50);
  irsend.sendSony(0x490, 12);}

if (digitalRead(8) == HIGH){
    
   delay(50);
  irsend.sendSony(0xC90, 12);}
  
if (digitalRead(9) == HIGH){
    
   delay(50);
  irsend.sendSony(0x90, 12);}

if (digitalRead(10) == HIGH){
    
   delay(50);
  irsend.sendSony(0x890, 12);}
  delay;
}

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

не может быть, выводи в серийный порт и смотри

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Два пути решения:

В первом нужно сделать так:

1) Вместо INPUT использовать INPUT_PULLUP

2) Кнопками прижимать выводы к GND (оно же минус питания)

3) Соответственно, вместо HIGH использовать в скетче LOW

Во втором пути - притянуть выводы, используемые для кнопок, через резисторы 5...10кОм к GND, кнопками прижимать выводы к «+» питания. В скетче ничего менять не нужно.

ЗЫ: В 34й строке херня написана.

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

спасибо тебе хороший человек! все заработало.

  вот рабочий скетч который получился. может кому пригодится.

#include <IRremote.h>

IRsend irsend;

void setup()
{
  pinMode(7,INPUT_PULLUP); // button 1
  pinMode(8,INPUT_PULLUP); // button 2
  pinMode(9,INPUT_PULLUP); // button 3
  pinMode(10,INPUT_PULLUP); // button 4

}

void loop() {
	
if (digitalRead(7) == LOW){
    
   delay(50);
  irsend.sendSony(0x490, 12);}

if (digitalRead(8) == LOW){
    
   delay(50);
  irsend.sendSony(0xC90, 12);}
  
if (digitalRead(9) == LOW){
    
   delay(50);
  irsend.sendSony(0x90, 12);}

if (digitalRead(10) == LOW){
    
   delay(50);
  irsend.sendSony(0x890, 12);}
}
	

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Ну ты все равно учись дальше. Например, чтобы не путаться в коде какой пин к какой кнопке относится объяви его так:

#define  button1  7

или так:

const uint8_t button1 = 7;

И так все 4 кнопки.
Второе объявление более «правильно», но проще первое (особенно если типизацию плохо знаешь)...

Тогда в самом коде:

if (digitalRead(button1) ==  LOW) {   // Понятно, что считываем состояние первой кнопки

 

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

BOOM пишет:

Ну ты все равно учись дальше. Например, чтобы не путаться в коде какой пин к какой кнопке относится объяви его так:

#define  button1  7

или так:

const uint8_t button1 = 7;

И так все 4 кнопки.
Второе объявление более «правильно», но проще первое (особенно если типизацию плохо знаешь)...

Тогда в самом коде:

if (digitalRead(button1) ==  LOW) {   // Понятно, что считываем состояние первой кнопки

 

В принципе скетч и так работает отлично, даже долгое нажатие кнопки поддерживает. ОК, учту на будущее. И большое спасибо за помощь.

[/quote]