Добрый день.
Помогите написать скетч в разделе "void loop {…}, который проверяет наличие сигнала от ИК-передатчика (диода) и при отсутствии сигнала (обрыве) включает диод. Дело в том, чтобы я ни пробовал, у меня всегда загорается диод и не зависимо от сигнала не гаснет. Значение сигнала не важно. Важен факт присутствия или отсутствия. IRrecv.decode не помог. Подскажите хотя бы идею. Спасибо
Подсказываю идею, даже две, выбирайте:
- заказать в коммерческом разделе за плату;
- попытаться сделать самому, а если не получится, выложить получившийся скетч, вместе со схемой сборки и подробным описанием (что за ардуина, что за передатчик и т.п.) и задать конкретные вопросы по этому скетчу.
Выражения типа
не работают, т.к. мы не видели ни что бы Вы там “не пробовали”, ни что “пробовали”, а в таких случаях на 99% Вы не пробовали ничего, просто нужна халява. Оно, конечно попытка зачётная, только “дурнів немає”.
Для очень невнимательных: ОБРАТНЫЙ апостроф!!! ОБРАТНЫЙ, это такой, который, млеать, не прямой. Он над буквой Ё на клавиатуре.
Пардон, новичок. Не хотел засорять “эфир”.
#include <IRremote.hpp>
int IKPRIEM = A1;//Контакт приемника
int letter = A3;//Контакт индикатора письма
int batt = A5;//Контакт индикатора батареи
int led = A2;
IRrecv irrecv(IKPRIEM); // указываем вывод, к которому подключен приемник
decode_results results;
float analogValue;
float input_voltage;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // запускаем прием*/
pinMode(led, OUTPUT);
pinMode(letter, OUTPUT);
pinMode(batt, OUTPUT);
digitalWrite(letter, LOW);
digitalWrite(batt, LOW);
}
void loop() {
digitalWrite(led, HIGH);
delay(200);
if ( irrecv.decode( &results )) { // если данные пришли
Serial.println(results.value);
irrecv.resume();
digitalWrite(letter, LOW);
}
else {
digitalWrite(letter, HIGH);
}
irrecv.resume(); // принимаем следующую команду
digitalWrite(led, LOW);
delay(5000);
analogValue = analogRead (A4);
delay (1000);
input_voltage = (analogValue * 5.0) / 1024.0;
Serial.println(input_voltage);
delay(100);
if (input_voltage < 1 && input_voltage >= 0.00 )
{
digitalWrite(batt, HIGH);
}
else {
digitalWrite(batt, LOW);
}
}
или без бонусов
#include <IRremote.hpp>
int IKPRIEM = A1;//Контакт приемника
int letter = A3;//Контакт индикатора письма
int led = A2;//контакт передатчика
IRrecv irrecv (IKPRIEM); // указываем вывод, к которому подключен приемник
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // запускаем прием
pinMode(led, OUTPUT);
pinMode(letter, OUTPUT);
pinMode(IKPRIEM, INPUT);
digitalWrite (led, 1);
digitalWrite (letter, 0);
}
void loop() {
digitalWrite (led, 1);
if (Serial.decode(&results)) {
digitalWrite(letter, 0);}
else digitalWrite (letter, 1);
delay(5000);
irrecv.resume(); // принимаем следующую команду
}
Походу с программированием надо подождать
Друзья, поясните, подключил обычный ик-диод (как в пульте), но на него IRReciver не реагирует, только если очень близко поднести, менее 1см. При этом если нажать на пульте от ТВ, то срабатывает с любого расстояния.
Ик-диод как в пульте, только подключен к Ардуино на А3 и GND. ИК работает (через камеру видно). В чем может может быть проблема.
Сам скетч выкладывать нет смысла, не в нем дело, он рабочий, т.к. от пульта все ловит и выполняет
ну тогда и пояснять нет смысла.
первое что бросается в глаза
а там, может быть еще вагон и маленькая тележка.
Да что у вас за ответы? (Я же в песочнице для новичков). Скетч выкладывал выше, он оказался рабочий, дело в ИК-диоде. От телика работает, а отдельный на маленьком расстоянии только
Ну и чего тут отвечать? Ты сам всё знаешь
какой диод, как подключен, в какой строке в скетче идет отправка на ик-диод?
диод он бывает фото и свето, да еще на разный спектр, это хоть в твоей голове укладывается?
Обычный ИК-диод в радио магазине. Подключен к порту А2 Ардуино.
В void setup прописал pinMode (A2, OUTPUT).
Командой digitalWrite (A2, HIGH) , в цикле void loop его включил.
Неужели специальные или определенные диоды к Ардуино нужны? Нельзя ли обычные подключать?
какой из них, они все и радио магазина?
только что было А3…
дело даже не в этом, резистор т хоть есть?
и что от должен сделать по этой команде?
засветится как вырви глаз (в камере)?
Диод 5мм 940нм
А3 поменял (думал в это дело)
Светиться в глаз не надо, но синал он посылает, что видно на камеру.
Резистор К22 стоит
Что?
Что?
Обычным бывает стиральный порошок. ИК-диоды бывают разные - очень разные. У Вашего диода название есть?
А раньше было сказано, что
Когда и с какой целью Вы збрехали? Тогда или сейчас?
Диод работает, светит в ИК спектре, что видно через камеру телефона.
Он подключен через резистор К22 одним контактом к порту А3 (не важно А2, я их меняю из-за близости соседних с заменой в скетче конечно), другим к GND.
Но приемник его видит лишь при расстоянии менее 1см.
Когда нажимаю пульт, то приемник видит аж за 2 метра и код выполняется. Вот в чем дело
приемник видит только посылки, на зажженный ик-диод ему похер.
С каких пор ик-диод подключают напрямую? Может я что-то пропустил,но раньше сигнал ещё усилить надо.
В этот и суть, пока диод горит, индикатор должен молчать, когда появляется препятствие и приемник не видит диод, индикатор должен загореться. Но это работает только с пультом. А с подключенным диодом на маленьком расстоянии
не надо
Возможно в токе светодиода? От ноги МК его просто не хватает. Посмотри в сети схемы ИК пультов. Там на выходе транзисторы стоят. И резисторы несколько меньше номиналом. Вот первая попавшаяся.