Какой датчик определяет свет?
У меня есть комплект из 37 датчиков, как описано здесь:
- http://www.instructables.com/id/ Arduino-37-в-1-комплект-датчиков-объяснение/?ВСЕ ШАГИ
- https://tkkrlab.nl/wiki/Arduino_37_sensors
Я хочу создать простую схему:
- при обнаружении света — мигать светодиодом.
- если нет света — ничего не делайте
Среди 37 датчиков я не нашел ничего, связанного со светом/яркостью/люменами...
Можете ли вы посоветовать мне, какой датчик приобрести?
Мне нужен фотоэлемент (светозависимый резистор), как описано здесь: https:/ /learn.adafruit.com/adafruit-arduino-lesson-9-sensing-light/parts ?
@Mars Robertson, 👍1
4 ответа
Под номером 23 в списке стоит фоторезистор, соответствующий модулю KY-018 в вашем комплекте, который вы назвали фотоэлементом (фотоэлемент – это еще один тип датчика, который мои знания). Как следует из названия, фоторезистор — это устройство, изменяющее свое сопротивление в зависимости от количества света, которое оно обнаруживает/получает.
Фоторезистор обычно выглядит так:
Чтобы получить значимые показания от LDR, вам необходимо преобразовать сопротивление в напряжение, которое может считывать АЦП Arduino. Самый простой способ — использовать делитель напряжения: соединение между LDR (фоторезистором) и R1 является узлом для подключите аналоговый контакт, чтобы получить показания, которые будут представлять собой напряжение, пропорциональное напряжению питания (5 В), определяемому соотношением двух сопротивлений.
Упомянутый выше модуль KY-018 уже обеспечивает все необходимое и предоставляет вам 3 контакта: 5V
, ANALOG
и GND
.
Вам нужен «Модуль фоторезистора KY-018». Это номер № 23 «Фоторезистор» на веб-странице instructables.com.
Модуль содержит светозависимый резистор (LDR).
Дополнительную информацию о модуле можно найти по адресу https://tkkrlab.nl/wiki/Arduino_KY-018_Photo_resistor_module.
Используйте фоторезистор, известный как фотоэлемент. Это переменные резисторы, значения которых меняют в зависимости от интенсивности источника света.
Это датчик KY-018: модуль фоторезистора KY-018.
Вот полезный код:
const int sensor = A0; //declare photocell pin
const int led = 13;
void setup()
{
pinMode(sensor, INPUT);
pinMode(led, OUTPUT);
}
void loop()
{
int val = analogRead(sensor);
if(val > 512)
{
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
}
}
Нет, я бы посоветовал вам не заморачиваться с фотоэлементами, фототранзисторами и светозависимыми резисторами.
Лучшим ответом является модуль обнаружения и измерения света 1750.
Он подключается через I2C и считывает числовое значение, соответствующее количеству воспринимаемого света (люкс).
Очень легко настроить.
Я использую его для измерения освещенности неба, чтобы сравнить его с мощностью моих солнечных батарей.
Вот крутой проект люксметра (в комплекте с инструкциями по подключению и кодом), который использует его для определения света и отображает результаты на 7-сегментном дисплее:
СОЗДАНИЕ ПРОСТОГО ЦИФРОВОГО ИЗМЕРИТЕЛЯ ОСВЕЩЕНИЯ ИСПОЛЬЗОВАНИЕ ARDUINO И ДАТЧИКА BH1750FVI
У ОП уже есть светочувствительный датчик. Если вы их не продаете, нет смысла советовать ОП купить еще один модуль., @Edgar Bonet
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
- Получение BPM из данного кода
- DS18B20 дает высокие показания. Как заставить его вернуть правильную температуру?
- Какой тип разъема использует система GROVE?
- Улавливают ли ультразвуковые датчики прозрачные материалы?
- Как подключить более 10 датчиков к Arduino uno r3
- В чем разница между акселерометром, гироскопом и датчиком магнитометра?
Ваш последний абзац полная чушь., @Majenko
Почему ты так говоришь @Маженко? Если он подключит LDR напрямую к 5 В и GND и поместит установку под лампу мощностью 50 Вт, он создаст короткое замыкание, при этом сопротивление LDR быстро станет незначительным при сильном освещении., @Roberto Lo Giacco
Если он подключит LDR напрямую к 5 В и GND, как он вообще сможет получить от него какие-либо показания?, @Majenko
@Маженко, где я упоминал о прочтении? И вообще, имеет ли теперь смысл мой последний абзац? Кроме того, сможет ли он получить показания со своей установки с помощью делителя напряжения? Не говоря уже о том, сколько раз я видел, как новички удивлялись, что их аналоговые показания постоянно получали «1023» или «0» только потому, что они подключили свой вывод к линиям 5 В или GND. В любом случае, я собираюсь обновить этот абзац, но расслабьтесь!, @Roberto Lo Giacco
Нет, это ничуть не лучше. Это не имеет абсолютно ничего общего с потреблением или источником слишком большого тока, а связано с тем фактом, что АЦП Arduino считывает напряжение, а делитель напряжения — это самый простой способ получить переменное напряжение от переменного сопротивления., @Majenko
Я еще раз отредактировал свой ответ, чтобы удалить часть «абсолютно ничего» **нарушающую** права, которая вас, кажется, так волнует, но я считаю, что это по-прежнему действительный общий совет. Тем не менее, у вас нет причин быть настолько агрессивным по отношению ко мне, я пытаюсь помочь людям здесь, и мой совет был не таким, как «засовывайте свои толстые пальцы в розетку», так что остыньте и будьте более добры к своим коллегам-соавторам! Я ценю комментарии и исправления, однако это не оправдывает агрессивных формулировок., @Roberto Lo Giacco
Давайте [продолжим обсуждение в чате](http://chat.stackexchange.com/rooms/46245/discussion-between-roberto-lo-giacco-and-majenko)., @Roberto Lo Giacco