Функция digitalRead() ардуино не считывает входное значение, отправленное датчиком после обнаружения объекта
Я пытаюсь включить светодиод(встроенный/PIN13), когда фотоэлектрический датчик приближения(12 В) воспринимает любой объект. Датчик подключен на выводе 2. Назначенный вывод 2 в качестве входа, у меня есть реле 12 В spdt для переключения. выход 12 В от датчика подается на катушку, на другом конце 5 В подается на COM-pin и "Нормально открытый"(NO) pin на Arduino (с выпадающим резистором). Когда "НЕТ" подключен к свободному светодиоду, он работает правильно (показывает 5 В на вольтметре при обнаружении объекта). Но при подключении к Arduino digitalRead(), он всегда возвращает НИЗКИЙ/0.
//код
int a=0;
void setup() {
pinMode(2,INPUT);
pinMode(13,OUTPUT);
Serial.begin(9600);
}
void loop() {
a == digitalRead(2);
Serial.println(a);
if(a==HIGH){
Serial.println("Object Detected");
digitalWrite(13,HIGH);
}else{
Serial.println("There's no object");
digitalWrite(13,LOW);
}
delay(1000);
}
1 ответ
a == digitalRead(2)
должно быть a = digitalRead(2)
. Вам также лучше изменить предложение if на if(a)
, чтобы избежать путаницы true/HIGH/1
.
Если бы вы отформатировали код правильно, вы бы сохраняли некоторое время (вам просто нужно выбрать код и нажать кнопку {}
).
Вам также лучше заменить реле на делитель напряжения (как я уже упоминал в своем комментарии), потому что до тех пор, пока у вас нет схемы данных для датчика, вы не можете быть уверены, что датчик предназначен для источника такого большого тока. Если датчик должен управлять логикой TTL, он в конечном итоге выйдет из строя, так же, как вы не управляете реле с GPIO напрямую. И кроме того, вам нужен диод свободного хода через катушку реле, чтобы справиться с обратной ЭДС, которая также повредит датчику.
Я не могу себе этого простить. Я потратил около 3 дней на эту глупейшую синтаксическую опечатку. Спасибо, что обратили на это мое внимание. Спасибо за ваши предложения., @Prathamesh Konkar
о! Я попробую. Диодный материал очень полезен для меня. Спасибо., @Prathamesh Konkar
- Несколько неблокирующих таймеров обратного отсчета?
- Отправка цифрового сигнала с одного arduino на другой
- Использование значения MAX30100 SpO2 для включения светодиода
- Arduino Uno - Raspberry PI - Поплавковые датчики - Водяные насосы
- Помогите совместить цифровой и аналоговый код в программировании ардуино
- Как преобразовать мгновенную кнопку в сенсорный датчик TTP223?
- Все ли контакты Arduino Uno выводят 5 В?
- Проблема с последовательностью воздушных поршней
трудно визуализировать то, что вы описываете ... пожалуйста, нарисуйте принципиальную схему или схему подключения ... также включите код, который вы используете, @jsotola
Чтобы прочитать этот детектор: избавьтесь от реле и замените его обычным делителем напряжения., @Sim Son
Я попробовал использовать 7805, чтобы получить выход 5 В. Это не сработало, @SimSon, @Prathamesh Konkar
@jsotola да. конечно. Я загружаю схему и код., @Prathamesh Konkar
используйте резистор 1 Ком для съема, @Juraj
@Juraj Я использовал резистор 1K для снятия, он не работал., @Prathamesh Konkar
Я говорю не о регуляторе напряжения, а о простом делителе напряжения, состоящем из двух резисторов. Датчик, вероятно, есть (у вас есть техническое описание?). не в состоянии обеспечить достаточный ток, чтобы активировать реле без вреда. Просто не используйте реле, это плохая конструкция., @Sim Son
А вы уверены, что распиновка реле правильная? Реле обычно имеют первичные контакты с одной стороны и вторичные-с другой., @Sim Son
@SimSon Прямо сейчас у меня нет подходящих резисторов, чтобы сделать делитель напряжения. Это просто реле, а не релейный модуль, поэтому вывод реле правильный. Датчик должен обеспечивать достаточный ток(у меня нет данных), потому что реле переключается при обнаружении объекта также с другой стороны реле получает 4,96 вольта (измеряется многометром) при обнаружении объекта. Но Arduino pin не распознает изменение напряжения (т. е. от 0 до 4,96). Все остальное работает абсолютно нормально, но функция digitalRead (), связанная с входным выводом Arduino, возвращает НИЗКИЙ уровень даже после обнаружения 4,96 В., @Prathamesh Konkar
Спасибо всем за ответ. Проблема решена это была глупая ошибка., @Prathamesh Konkar