Подключение датчика освещенности к arduino: Страница не найдена — РоботоТехника Ардуино

Содержание

Подключение датчика освещенности APDS 9930 RGB / датчика жестов APDS 9960 с микроконтроллером — Схемы

Это бесконтактный датчик жестов HMI (человеко-машинный интерфейс), проводящий рукой по сенсору, который управляет компьютером, микроконтроллером, роботами или домом, автомобилем, промышленным переключателем жестов или измерением окружающего света и цвета и обнаружением близости. Плата датчиков RGB и жестов Avago / Broadcom APDS 9930/9960 RBS и разъемы предназначены для удобного использования в различных проектах вместе с SBC и MCU.

APDS-9930 APDS 9930 обеспечивает цифровое восприятие окружающего света, инфракрасный светодиод и полную систему обнаружения приближения в одном кристалле. Функция приближения предлагает обнаружение подключи и играй до 100 мм без переднего стекла. Функция обнаружения близости работает хорошо от яркого солнечного света до темной области. Широкий динамический диапазон также позволяет работать с возможностью перевода устройства в режим пониженного энергопотребления между ALS (Ambient Light Sense) и измерением близости.

APDS 9930 особенно полезен для управления дисплеем с целью продления срока службы батареи и обеспечения оптимального просмотра в различных условиях освещения. APDS-9960 APDS 9960 — это усовершенствованный датчик обнаружения жестов, а также датчик приближения, датчик окружающего освещения и RGBC (датчик цвета). Обнаружение жестов использует четыре направленных фотодиода для измерения отраженной инфракрасной энергии (источник встроенным светодиодом) для преобразования информации о физическом движении (например, скорость, направление и расстояние) в цифровые данные. Архитектурный дизайн механизма жестов включает автоматическую активацию, основанную на бесконтактном механизме, который приводит к вычитанию окружающего света, подавлению перекрестных помех, двухбитным преобразователям данных, задержке преобразования между энергосбережениями, 32 FIFO набора данных и шине i2C, управляемой прерываниями. коммуникации. Механизм жестов вмещает большое количество мобильных устройств, оснащенных жестовым оборудованием для управления функцией ВВЕРХ-ВНИЗ-ВПРАВО-ВЛЕВО, или же можно точно определить более сложный жест.

Расходные материалы:

Шаг 1: Схема подключения

Обязательный компонент

Микроконтроллеры Arduino, Teensy (Teensyduino Integrated), ESP8266 (ESP8266 Arduino IDE Integrated), DigiSpark, STM32, AVRAPDS-9930 / APDS-9960 Breakout Board / Chip (см. Схематическое представление) Перемычка / DuPont WireSolder-менее макетная плата

Шаг 2: Схематическая диаграмма / Исходный код

Скачать исходный код Arduino | Код

Исходный код и библиотеки кодов можно найти здесь …

http://www.14core.com/wiring-the-apds-9930-ambient-light-sense-apds-9960-rgb-gesture-sensor-with-microcontroller/

  • Загрузить ADPS-9930 Code Libraries | застежка-молния
  • Загрузить ADPS-9960 Code Libraries | застежка-молния
  • Загрузить ADPS-9930 Лист данных | PDF
  • Загрузить ADPS-9960 Лист данных | PDF

Библиотека Bh2750.h | SMDX.RU | SmartModules.

ru
Библиотека Bh2750.h | SMDX.RU | SmartModules.ru

РАЗДЕЛЫ БЛОГА

Доставлять товары во все регионы России нам помогает Яндекс.Доставка Яндекс.Доставка объединяет основные службы доставки посылок: Boxberry, MaxiPost, PickPoint, СДЭК, СТРИЖ Стоимость доставки рассчитывается автоматически при оформлении заказа на сайте. Вы можете оплатить заказ онлайн или выбрать оплату при получении. Доставить товар можно курьером до адреса, в пункты самовывоза и автоматизированные постаматы. Более 20000 пунктов выдачи по всей России.

12.
01.2020 23:08

Библиотека Bh2750.h предназначена для работы с датчиком освещенности Bh2750 (GY-302)


Скачать | Страница на GitHub


Сенсор Bh2750 представляет собой цифровой 16-битный цифровой датчик освещённости. Диапазон измерений: от 1 до 65535 люкс. Датчик Bh2750 чувствителен к видимому свету и практически не подвержен влиянию инфракрасного излучения, реагирует примерно на тот же спектральный диапазон, что и человеческий глаз.

Подключение модуля производится по двухпроводному интерфейсу I2C. Интерфейс I2C в платах Arduino реализован на аналоговых пинах A4 (SDA — шина данных) и A5 (SCL — шина тактирования).

 

Подключение датчика Bh2750 к Arduino

 

  • VCC -> питание 5 вольт, допускается 3.3V
  • GND -> GND земля
  • SCL -> SCL аналоговый контакт A5 на Arduino Uno
  • SDA -> SDA аналоговый контакт A4 на Arduino Uno
     

 

Пример использования библиотеки Bh2750
#include <Bh2750. h> 
// подключаем библиотеку

Bh2750 lightMeter;
// объявляем объект

lightMeter uint16_t lux;
// задаем переменную Unsigned Int
// с диапазоном значения 0..65535

void setup() { 
  Serial.begin(9600);
  lightMeter.begin(); 
  // запускаем датчик 
}
void loop() { 
  lux = lightMeter.readLightLevel(); 
  // считываем показания датчика

  Serial.print("Освещение : ");
  Serial.print(lux);
  // выводим показания в консоль

  Serial.println(" люкс"); 
  delay(1000); // задержка 1 сек
}

 

Теги:

Вернуться к списку

При полном или частичном использовании материалов с сайта, ссылка на источник обязательна.

Сколько датчиков будет работать одновременно в Arduino для домашней автоматизации?



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

Но мой вопрос заключается в том, сколько датчиков будет работать одновременно на плате Arduino?
И можно ли управлять Arduino с помощью PIC или i.MX6 Dual Lite/Solo?

arduino microcontroller sensor pic home-automation
Поделиться Источник Narthan L     15 декабря 2014 в 05:56

3 ответа


  • Каковы предпосылки домашней автоматизации?

    Я хочу разработать систему домашней автоматизации. Я хочу включить в эту систему некоторые основные функции, такие как 1. Light on/off 2. Fan on/off and speed control 3. AC on/off 4. Water pump on/off 5. CCTV camera monitor Какие основные вещи я должен изучить, прежде чем начать? Я решил…

  • SDK для умных холодильников для домашней автоматизации

    Есть ли у каких-либо интеллектуальных холодильников (например, у продуктов LG Thinq или Samsung) SDK, с помощью которых мы можем использовать их для интеграции с каким-либо продуктом домашней автоматизации?



1

Если датчики используют I2C, то предел составляет 128 устройств на шине, но каждый из них должен иметь уникальный адрес, который иногда «hard-coded» на устройстве производителя. Проводная библиотека Arduino используется для чтения/записи I2C, и для этого требуется всего два контакта. I2C также иногда называют TWI (двухпроводной интерфейс). PIC может делать I2C, не так уверен насчет i.MX6, но я контролировал Arduino над I2C, используя Raspberry Pi.

Поделиться John Grover     07 января 2015 в 22:36



0

Для Arduino Uno перейдите сюда, чтобы найти спецификации дизайна с открытым исходным кодом:

http://arduino.cc/en/Main/arduinoBoardUno

Там вы прочтете, что Arduino Uno имеет 14 цифровых и 6 аналоговых контактов ввода-вывода.

Обратите внимание, что вы не ограничены количеством датчиков, основанных на количестве контактов ввода-вывода.

Пример:

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

Например, предположим, что процессор имеет 4 вывода ввода-вывода. Вы можете выделить 3 для управления мультиплексором, выбрав 1 из 8 сигналов для маршрутизации на 4-й вывод ввода-вывода процессора. Таким образом, удваивается количество входов, которые вы можете выбрать.

Поделиться st2000     04 января 2015 в 17:05



0

Вы можете использовать любое количество датчиков по своему усмотрению. Но ваша плата должна иметь столько контактов ввода-вывода. Постарайтесь, чтобы получить мега доска Arduino. Arduino Mega 2560 имеет всего 54 контакта. Таким образом, в мега-плате можно подключить множество датчиков.

Вы также можете управлять доской по PIC, Arduino эскизу и так далее.

Поделиться user3647272     06 января 2015 в 05:49



Похожие вопросы:


Настройка страницы панели дистанционного управления для домашней автоматизации

У меня есть долгосрочный проект для целей обучения, который заключается в создании виртуального помощника, такого как Siri или Google Now, но для управления моей домашней автоматизацией. У меня…


Подсчет с помощью датчиков IR на Arduino

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


Сбор/считывание данных с датчиков на двух различных скоростях передачи данных с помощью Arduino

Я хочу использовать Arduino для сбора данных с двух датчиков. Это кажется простым, когда требуемая скорость передачи данных для двух датчиков одинакова. Однако я в тупике, как это сделать, когда…


Каковы предпосылки домашней автоматизации?

Я хочу разработать систему домашней автоматизации. Я хочу включить в эту систему некоторые основные функции, такие как 1. Light on/off 2. Fan on/off and speed control 3. AC on/off 4. Water pump…


SDK для умных холодильников для домашней автоматизации

Есть ли у каких-либо интеллектуальных холодильников (например, у продуктов LG Thinq или Samsung) SDK, с помощью которых мы можем использовать их для интеграции с каким-либо продуктом домашней. ..


Внедрение Домашней Автоматизации Zigbee

Существуют ли какие-либо библиотеки с открытым исходным кодом для реализации профиля домашней автоматизации для zigbee? Конечное устройство не обязательно принадлежит конкретному разработчику.


Графический интерфейс для проекта домашней автоматизации с использованием Raspberry и arduino

Я работаю над проектом домашней автоматизации, который включает в себя raspberry pi, подключенный к arduino через I2C, а arduino управляет 8-канальным реле. Может ли кто-нибудь предложить мне…


Доступ к двум индексам массива одновременно (Arduino)

Я создаю для себя небольшую систему домашней автоматизации, используя arduino uno, wifi shield и relay shield. Я все еще нахожусь на ранних стадиях, но прямо сейчас мне в основном нужно знать,…


Сколько редукторов может работать одновременно?

Изучая большие данные в университете, я немного запутался в теме MapReduce. Мне было интересно, сколько редукторов может работать одновременно. Например, предположим, что если бы у нас было 864…


Подключение нескольких датчиков IMU к arduino DUE

Мне нужно подключить 5 IMU 9250 к Arduino Due. Я использовал библиотеку на этой веб-странице, и она хорошо работает только для одного датчика. https://www.switch-science.com/catalog/2845 / Мне нужно…

Tweaking4All.com — Arduino — Игра со светочувствительным резистором (LDR)

Чтение окружающего света с LDR

Первое, что мы должны знать, это то, что LDR (светозависимый резистор или фоторезистор) в основном представляет собой резистор, который меняет сопротивление в зависимости от света. Больше света означает меньшее сопротивление. Меньше света — больше сопротивления.

LDR существуют очень давно (в детстве я уже играл с LDR) и дешевы. Не говоря уже о том, что довольно прочный и очень дешевый.

Теперь при подключении LDR к Arduino автоматически выбирается один из аналоговых выводов, но аналоговые выводы работают медленно, когда дело доходит до их считывания. Поэтому в этой статье мы также покажем вам, как подключить их для использования с цифровым выводом, который дает нам состояние ВКЛ / ВЫКЛ вместо значения.

Измерительный светильник и LDR

Обратите внимание, что фраза «измерение света» — это не совсем то, что я бы назвал. LDR
— не совсем точный способ измерения света как таковой.

Однако это отличный инструмент для определения окружающего света… грубо.

LDR на аналоговом выводе Arduino

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

В этой настройке мы сделаем так, чтобы значение, считываемое с аналогового вывода, фактически увеличивалось с увеличением освещенности. Для этого мы используем крошечную схему, которая пропускает питание через LDR. Поскольку LDR уменьшает свое сопротивление по мере увеличения света, больше «мощности» будет проходить через него на аналоговый вывод, что приводит к тому, что Arduino «считывает» более высокое значение.

Аналоговый вывод будет считывать значения от 0 до 1023, поэтому он преобразует аналоговый сигнал в цифровое представление — также называемое аналогово-цифровым преобразователем (AD или ADC), встроенным в Arduino.

Все, что нам нужно, это:

  • Arduino (я использовал Uno, в последнее время сообщалось, что клоны иногда вызывают проблемы)
  • USB-кабель для подключения Arduino к нашему компьютеру
  • Arduino IDE (скачать бесплатно)
  • и LDR (да!)
  • a Резистор 100 кОм (коричнево-черно-желтый, или см. Наш калькулятор резисторов)
  • 3 провода
  • малая макетная

Настройка очень проста:

Прописью:

Подключите + 5V Arduino к одному контакту LDR (контакты LDR можно поменять местами, поэтому не беспокойтесь о полярности здесь).
Подключите другой вывод LDR к A0 (аналоговый вывод Arduino) и к одному выводу резистора 100 кОм .
Подключите другой вывод резистора 100 кОм к GND Arduino.

Схема (выполнено с помощью Fritzing) :

Arduino — LDR подключен к аналоговому выводу

Макетный чертеж (выполненный с помощью Fritzing):

Arduino — LDR подключен к аналоговому выводу

Скетч также прост и отображает считываемое аналоговое значение через последовательный порт, чтобы мы могли видеть, что происходит.

 

1
2
3
4
5
6
7
8
9
10
11
12
13

#define LDRpin A0 // pin, где мы подключили LDR и резистор

int LDRValue = 0; // результат чтения аналогового вывода

void setup () {
Serial. begin (9600); // устанавливает последовательный порт для связи
}

void loop () {
LDRValue = analogRead (LDRpin); // считываем значение из LDR
Serial.println (LDRValue); // выводим значение на последовательный порт
delay (100); // подождите немного
}

Подключите Arduino к компьютеру с помощью кабеля USB.

Запустите Arduino IDE и убедитесь, что вы выбрали правильную плату и последовательный порт.
Для выбора правильной платы перейдите в «Инструменты» «Плата» «Arduino Uno» (если вы используете Arduino Uno), а для правильного порта перейдите в «Инструменты» «Порт» “/ dev / cu.usbmodem1411 (Arduino Uno) »(это на моем Mac, ваш Mac или ПК может отображать что-то другое).

Скопируйте и вставьте эскиз выше в среду разработки Arduino (либо вставьте существующий пустой код, либо откройте новый эскиз — «Файл» «Новый») и нажмите кнопку «Загрузить», которая на рисунке ниже является кнопкой « B ».

Программное обеспечение Arduino — Полезные ярлыки

Затем запустите «Инструменты» «Serial Monitor», чтобы мы могли увидеть результат, который будет примерно таким:

... 

949
945
943
917
838
837
832
796
748
709
706
704
692
689
698

...

Если ничего не делать, значение, кажется, колеблется в районе 917… 950, однако, проведя рукой над датчиком (ограничение света), оно упадет ниже 800.

Обратите внимание, что эти значения, вероятно, будут другими в вашей среде.
Поиграйте с ним и посмотрите, что делают значения.

LDR на цифровом выводе Arduino

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

Имейте в виду, что цифровой вывод возвращает только 1 или 0 (ноль), в отличие от аналогового вывода, который полезен, если что-то нужно включить или выключить, например, свет.

Похоже, что для Arduino порог напряжения 2,2 В запускает либо 1, либо 0. Также обратите внимание, что чтение этого значения происходит намного быстрее, чем чтение аналогового вывода, что имеет решающее значение для приложений, где скорость имеет существенное значение (например, Приложение Boblight).
Итак, давайте проверим это.

Для этой цели я буду использовать потенциометр, который представляет собой переменный резистор, чтобы я мог точно настроить, когда он достаточно светлый, чтобы включиться (1), и достаточно темный, чтобы выключиться (0).Основная причина этого в том, что ваш окружающий свет (среда) будет отличаться от моего. Не говоря уже о том, что где бы вы ни собирались это применить, это может быть более темное или более светлое место, чем то, где вы строите свою установку Arduino.

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

Потенциометр обычно имеет 3 контакта. Тот, что посередине, — это переменная шкала, а те, что слева и справа, в основном резисторы. Переменная шкала скользит по этому резистору и «отводит» сопротивление между нулем и максимальным сопротивлением резистора.

Может быть, этот рисунок лучше объясняет:

R — «полный» резистор. Он имеет два контакта: R 1 и R 2 .
Если вы использовали мультиметр и измеряли сопротивление между контактами R 1 и R 2 , то вы считали сопротивление резистора R .

Стеклоочиститель ( V ) создает «ярлык», поэтому, если вы измеряете сопротивление между R 1 и V , вы измеряете только сопротивление R , которое находится между штифты R 1 и V . Или, если вы измерили сопротивление между R 2 и В , вы бы измерили сопротивление R между R 2 и В .

Таким образом, перемещение дворника изменит расстояние, например, между R 1 и V — чем больше расстояние между этими двумя выводами, тем выше сопротивление между выводами R 1 и V . Имеет смысл?

В нашей настройке мы используем только 2 из 3 контактов, средний и один справа или слева.

Как работает потенциометр

Все, что нам нужно, это:

  • Arduino (я использовал Uno, в последнее время сообщалось, что клоны иногда вызывают проблемы)
  • USB-кабель для подключения Arduino к нашему компьютеру
  • Arduino IDE (скачать бесплатно)
  • и LDR (да!)
  • a потенциометр 10 кОм (не стесняйтесь пробовать более высокие или более низкие значения)
  • 3 провода
  • малая макетная

Прописью:

Подключите + 5V к одному контакту LDR (контакты LDR можно поменять местами, поэтому не беспокойтесь о полярности здесь).
Соедините другой вывод LDR с цифровым выводом 8 (Arduino) и внешний вывод потенциометра 10 кОм (левый или правый).
Подключите средний контакт потенциометра 10 кОм к GND Arduino.

Следующие рисунки могут сильно отличаться, но на самом деле они не сильно отличаются от аналогового примера.
Мы заменяем резистор 100 кОм на потенциометр 10 кОм, а вместо аналогового вывода A0 мы используем цифровой вывод 8.

Схема (выполнено с помощью Fritzing) :

Arduino — LDR подключен к цифровому выводу

Макетный чертеж (выполненный с помощью Fritzing):

Arduino — LDR подключен к цифровому выводу

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13

#define LDRpin 8 // pin, где мы подключаем LDR и резистор

int LDRValue = 0; // результат чтения аналогового вывода

void setup () {
Serial. begin (9600); // устанавливает последовательный порт для связи
}

void loop () {
LDRValue = digitalRead (LDRpin); // считываем значение из LDR
Serial.println (LDRValue); // выводим значение на последовательный порт
delay (100); // подождите немного
}

Подключите Arduino к компьютеру с помощью кабеля USB.

Запустите Arduino IDE и убедитесь, что вы выбрали правильную плату и последовательный порт.
Для выбора правильной платы перейдите в «Инструменты» «Плата» «Arduino Uno» (если вы используете Arduino Uno),
И для правильного порта перейдите в «Инструменты» «Порт. » « / dev / cu.usbmodem1411 (Arduino Uno) »(это на моем Mac, ваш Mac или ПК может отображать что-то другое).

Скопируйте и вставьте скетч выше в IDE Arduino (либо вставьте существующий пустой код, либо откройте новый скетч — «Файл» «Новый») и нажмите кнопку «Загрузить».

Затем запустите «Инструменты» «Serial Monitor», чтобы мы могли увидеть результат, который будет примерно таким:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14

1
1
1
1
1
1
1
1
1
1
1
1
1
1

Это также может быть загрузка нулей.

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

После того, как вы нашли золотую середину, протяните руку LDR, и вы увидите, как он изменится. Если нет: настройте потенциометр еще немного, пока он не наступит.

LDR на цифровом выводе Arduino с расширением

Теперь, имея один LDR на цифровом выводе, мы можем считывать только состояние ON и OFF, что может быть не так уж и хорошо, если вы хотите более двух интервалов (диапазон OFF и диапазон ON).

Допустим, нам нужно 3 уровня освещенности, тогда 2 LDR на каждом собственном цифровом выводе могут помочь — все в предположении, что чтение аналоговых выводов, конечно, слишком медленное. Ниже показан пример того, как это можно сделать. Вы можете расширить эту идею, добавив столько LDR, сколько захотите, и ваш Arduino сможет справиться с этим.

По сути, мы переводим один LDR в положение ON быстрее, чем другой LDR. Для этой цели у них обоих есть собственный потенциометр, так что мы можем настроить их так, как сочтем нужным для каждого «уровня».

Для второго LDR мы используем вывод 7 (в эскизе) — можете использовать другой вывод, но не забудьте соответствующим образом скорректировать эскиз.

Схема (выполнено с помощью Fritzing) :

Arduino — двойной LDR, подключенный к цифровому выводу

Макетный чертеж (выполненный с помощью Fritzing):

Arduino — двойной LDR, подключенный к цифровому выводу

Эскиз для этой установки:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

#define LDRpin1 7 // контакт, на котором мы подключаем LDR и резистор
#define LDRpin2 8 // контакт, где мы подключаем LDR и резистор

int LDRValue1 = 0; // результат чтения цифрового пина
int LDRValue2 = 0; // результат чтения цифрового вывода

void setup () {
Serial. begin (9600); // устанавливает последовательный порт для связи
}

void loop () {
LDRValue1 = digitalRead (LDRpin1); // считываем значение из LDR
LDRValue2 = digitalRead (LDRpin2); // считываем значение из LDR

Serial.print (LDRValue1); // выводим значение LDR1 на последовательный порт
Serial.print (""); // выводим пробел
Serial.println (LDRValue2); // выводим значение LDR2 на последовательный порт

delay (100); // подождите немного
}

В зависимости от настроек потенциометра и вашего окружающего освещения вы увидите пролетающие наборы «0 0», «1 0», «0 1» или «1 1».
Сначала поверните оба потенциометра на дальний конец.

Установка «низкого» уровня:
Уменьшите окружающий свет до точки, которую вы считаете «темной».
Поворачивайте оба потенциометра, пока не увидите только наборы «0 0». Это будет наш «темный» уровень.

Установка «среднего» уровня:
Установите для окружающего освещения то, что вы считаете «средним».
Очень медленно увеличивайте только один из потенциометров, скажем LDR1, пока не начнет появляться установка «1 0».
(если вы сделали это с LDR2, должны появиться наборы «0 1»)

Установка «высокого» уровня:
Теперь увеличьте окружающий свет до того, что вы считаете «высоким» (все более яркое также будет считаться «высоким»).
Очень медленно перемещайте потенциометр LDR2 вверх, пока не начнут появляться наборы «1 1».

Поиграйте с этим немного, и вы научитесь тонкой настройке.

Следующий пример кода дает вам представление о том, что вы можете с этим сделать:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

#define LDRpin1 7 // контакт, на котором мы подключаем LDR и резистор
#define LDRpin2 8 // контакт, где мы подключаем LDR и резистор

int LDRValue1 = 0; // результат чтения цифрового пина
int LDRValue2 = 0; // результат чтения цифрового вывода

void setup () {
Serial. begin (9600); // устанавливает последовательный порт для связи
}

void loop () {
LDRValue1 = digitalRead (LDRpin1); // считываем значение из LDR
LDRValue2 = digitalRead (LDRpin2); // считываем значение из LDR

Serial.print (LDRValue1); // выводим значение LDR1 на последовательный порт
Serial.print (""); // выводим пробел
Serial.print (LDRValue2); // выводим значение LDR2 на последовательный порт

if ((LDRValue1 == 1) && (LDRValue2 == 1)) {
Serial.печать ("-> ВЫСОКИЙ"); }
иначе, если ((LDRValue1 == 1) && (LDRValue2 == 0)) {
Serial.print ("-> MEDIUM"); }
иначе, если ((LDRValue1 == 0) && (LDRValue2 == 0)) {
Serial.print ("-> LOW"); }

Serial.println («освещение»);

задержка (100); // подождите немного
}

Пример вывода (в более темной комнате при медленном перемещении фонарика в сторону обоих LDR) после настройки потенциометров может выглядеть следующим образом:

 

1
2
3
4
5
6
7
8
9
10
11
12

0 0 -> НИЗКОЕ освещение
0 0 -> НИЗКОЕ освещение
0 0 - > НИЗКОЕ освещение
0 0 -> НИЗКОЕ освещение
0 0 -> НИЗКОЕ освещение
1 0 -> СРЕДНЕЕ освещение
1 0 -> СРЕДНЕЕ освещение
1 0 -> СРЕДНЕЕ освещение
1 0 -> СРЕДНЕЕ освещение
1 1 -> ВЫСОКОЕ освещение
1 1 -> ВЫСОКОЕ освещение
1 1 -> ВЫСОКОЕ освещение

Чтобы применить это, например, в проекте Boblight (непроверенный), вы можете попробовать что-то вроде кода ниже.
Это просто пример, и чтобы упростить сравнение, я добавил оба LDRValue, где я умножил второе LDRvalue на 10.
Итак, теоретически мы можем получить такие результаты, как 0, 1, 10 и 11. Как упоминалось ранее, из-за перекрытие одного значения (10) не произойдет, поэтому у нас есть {0, 1, 11} как возможные результаты.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

#define LDRpin1 7 // контакт, где мы подключаем LDR и резистор
#define LDRpin2 8 // контакт, где мы подключаем LDR и резистор

... // какой-либо другой код вашего проекта

void loop () {
... // ваш цикл проекта

AdjustBrightness ();

... // Дополнительный код проекта
}

void AdjustBrightness () {
int LDRValue = 0; // результат чтения цифрового вывода

LDRValue = digitalRead (LDRpin1); // считываем значение из LDR
LDRValue = LDRValue + (digitalRead (LDRpin2) * 10); // Добавляем значение из следующего LDR

if (LDRValue == 0) {
// Темный, поэтому установите яркость светодиода, например, на 50%
}
else if (LDRValue == 10 {
// Средний, поэтому установите яркость светодиода, например, на 70%
}
else if (LDRValue == 11) {
// Яркий свет, установите яркость светодиода, например, на 100%
}
}

Заключение

С помощью LDR мы можем считывать окружающий свет, даже если он не на 100% точен и не подходит для измерения. Это скорее инструмент для обнаружения окружающего света.

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

Использование аналогового вывода дает вам диапазон от 0 до 1023 для результатов измерения.
Такое измерение дает вам диапазон, с которым можно работать, но он относительно медленный и в определенных ситуациях (например, Boblight) этого недостаточно для практического использования.

Подход с цифровым выводом намного быстрее, и его можно расширить, добавив еще один LDR на второй вывод и точно настроив потенциометр этого второго LDR на другую чувствительность, так что, по сути, у вас может быть 3 «значения» или уровня освещенности… ( будет перекрытие, поэтому 4-го значения не будет)

Arduino Uno и датчик внешней освещенности ALS-PT19

В этом примере мы подключаем датчик внешней освещенности ALS-PT19 к Arduino Uno.Это датчик, который я использовал для этого.


Сначала рассмотрим некоторую информацию о датчике

Описание

ALS-PT19-315C / L177 / TR8 — это недорогой датчик внешней освещенности, состоящий из фототранзистора в миниатюрном корпусе SMD. Продукты серии EVERLIGHT ALS — хорошее эффективное решение для энергосбережения подсветки дисплея мобильных устройств, таких как мобильные телефоны, ноутбуки и КПК. Из-за высокого коэффициента подавления инфракрасного излучения спектральная характеристика датчика внешней освещенности близка к характеристикам человеческого глаза

Характеристики

Чувствительность к спектру человеческого глаза
От света к току, аналоговый выход
Хорошая линейность выходного сигнала в широком диапазоне освещенности
Низкое изменение чувствительности при различных источниках света
Гарантированные температурные характеристики, от -40 ° C до 85 ° C
Широкий диапазон напряжения питания, 2.От 5 В до 5,5 В

Приложения

Обнаружение окружающего света для управления подсветкой дисплея
Мобильные устройства — мобильные телефоны, КПК
Вычислительное устройство — ЖК-монитор TFT для ноутбука
Бытовое устройство — ЖК-телевизор TFT, плазменный телевизор, видеокамера, цифровая камера, игрушки

Автоматическое управление жилым и коммерческим сектором
Автоматическое повышение контрастности для электронной вывески
Устройство контроля внешнего освещения для дневного и искусственного освещения
— Уличный свет, CCD / CCTV

Необходимые детали

Схема / подключение

Датчик прост в подключении, подключил выход на А0

Arduino и макет ALS-PT19

Пример кода

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

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

 void setup ()
{
  // инициализируем последовательную связь со скоростью 9600 бит в секунду:
  Serial.begin (9600);
}


пустой цикл ()
{
  // считываем вход аналогового вывода 0:
  int sensorValue = аналоговое чтение (A0);
  // распечатываем прочитанное вами значение:
  Serial.println (sensorValue);
  задержка (500); // задержка между чтениями для стабильности
} 

Выход

Вот что я увидел в окне серийного монитора

38
34
15
7
8
7
9
9
963
961
961

Ссылки

http: // www.everlight.com/file/ProductFile/201407061531031645.pdf

Задание 1: Простой датчик света и напряжения

Представьте, что ваш BOE Shield-Bot движется по курсу, и в конце его светится яркий свет. Последняя задача вашего робота — остановиться под ярким светом. Вы можете использовать простую схему фототранзистора, которая позволяет Arduino узнать, что он обнаружил яркий свет с двоичной единицей или окружающий свет с двоичной единицей. Лампы накаливания в настольных лампах и фонариках являются лучшими источниками яркого света.Компактные люминесцентные и светодиодные источники света не так легко распознать цепи в этой деятельности.

Ambient означает «существующий или присутствующий со всех сторон» согласно словарю Merriam Webster. Что касается уровня освещенности в комнате, подумайте об окружающем свете как об общем уровне яркости.

Список деталей

(1) фототранзистор
(2) перемычки
(1) резистор, 2 кОм (красный-черный-красный)
(1) лампа накаливания или флуоресцентный фонарик или настольная лампа

После некоторых испытаний и в зависимости от в условиях освещенности в вашей области робототехники вы можете в конечном итоге заменить резистор 2 кОм одним из этих резисторов, поэтому держите их под рукой: резистор

(1), резистор 220 Ом (красно-красно-коричневый)
(1) , 470 Ом (желто-фиолетово-коричневый)
(1) резистор, 1 кОм (коричнево-черный-красный)
(1) резистор, 4. 7 кОм (желто-фиолетовый-красный)
(1) резистор, 10 кОм (коричнево-черный-оранжевый)

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

Создание детектора яркого света

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

  • Отсоедините аккумуляторную батарею и кабель программирования от Arduino и установите переключатель BOE Shield на 0.
  • Удалите схемы усов, но оставьте схему пьезодинамика на месте.
  • Создайте показанную схему, используя резистор 2 кОм.
  • Еще раз проверьте, чтобы убедиться, что вы подключили вывод эмиттера фототранзистора (плоской точкой) к резистору, а его коллектор — к 5В.
  • Также еще раз убедитесь, что выводы фототранзистора не соприкасаются друг с другом.

Arduino Tutorial: Light sensing — DumbleBots

Удивительный мир автоматической яркости поражает и зовет вас, но вы не знаете, с чего начать? Не беспокойтесь об этом, в этом блоге я покажу вам, как использовать Arduino для измерения уровня окружающего освещения. Давайте начнем!

С чем именно мы имеем дело?

Яркость или тусклость — это не что иное, как измерение количества света в области.Чтобы измерить это, нам нужно использовать так называемый фотоэлемент / фоторезистор / LDR (светозависимый резистор). Это наиболее распространенный тип используемого датчика освещенности, который намного лучше, чем инфракрасный датчик или датчик цвета (хотя у этих двух есть свои преимущества).

Маленький фоторезистор Большой фоторезистор цифровой фоторезистор

Из самого названия видно, что это резистор, и он тоже работает довольно просто. Сопротивление между двумя контактами LDR уменьшается по мере увеличения интенсивности света, падающего на его поверхность, и наоборот.LDR не поляризован, и ориентация его контактов не имеет значения, то есть он позволяет току течь в обоих направлениях (в отличие от светодиода или диода). Цифровой LDR (третье изображение) также является LDR, но вместо этого он подключен к небольшой печатной плате с дополнительной электроникой, которая преобразует выходной сигнал в цифровые сигналы. Вместо измерения «аналогового» сопротивления в этом случае мы измеряем состояние третьего вывода, который большую часть времени удерживается на низком уровне (или 0 В), но изменяется на высокий (или 5 / 3,3 В), когда количество света становится выше определенный порог.Этим порогом можно управлять, поворачивая потенциометр (синий с белой шкалой в центре) и регулируя.

Шаг 1: Сбор деталей

На этом этапе я перечислю все части, которые вам понадобятся для проекта (возможно, они у вас уже есть, если вы читали другие мои руководства). Ссылки на покупку этих деталей можно найти в конце.

  • Arduino UNO (подойдет любой Arduino или аналог, но этот лучше всего подходит для начинающих)
Arduino UNO
  • USB-кабель (он должен быть в комплекте с Arduino)
USB-кабель для Arduino Цифровой LDR Обычный LDR
  • Резистор 220 кОм (подойдет любое значение от 100 кОм до 300 кОм)
резистор 220 кОм 5 мм светодиод
  • Мини-макет (опция)

Как я уже упоминал выше, любой Arduino будет работать, но если вы новичок, то лучше всего использовать UNO из-за его удобной компоновки, поддержки и менее отвлекающих функций.

Что касается LDR, разные типы и размеры могут выглядеть по-разному, но на самом деле есть только две разные категории, цифровые и аналоговые (обычные), которые нужно рассматривать по-разному. Все размеры в каждом из двух могут использоваться одинаково. В этом уроке, я покажу, как использовать их оба, а также различные способы их использования.

Светодиод и макетная плата не являются обязательными. Используя макетную плату, вам будет намного проще подключить все, а затем отключиться (как только вы закончите).Светодиод предназначен только для визуального вывода.

Просто помните, что для того, чтобы проект заработал, вам не нужно ограничиваться ровно 200 кОм, просто найдите что-нибудь от 100 кОм до 300 кОм, и он будет работать. Вы можете найти ссылки для покупки в конце.

Шаг 2а: Подключение всего

На этом этапе я покажу два способа подключения обычного LDR к Arduino. Если вам нужны соединения и код для цифровой версии, перейдите к шагам 2b и 3b. Светодиод может использоваться дополнительно для визуального вывода.

Начните с подключения одного из выводов датчика к 5 В / VCC, а другой — к одному из аналоговых выводов (от A0 до A5) на Arduino. Помните, что если вы не используете аналоговые контакты, ваш код не будет работать! Я объясню причину этого в конце следующего шага. Затем подключите светодиод к одному из контактов Arduino, поддерживающих ШИМ. Если вы не знакомы с использованием светодиодов с Arduino, перейдите к моему руководству по началу работы с Arduino (это хорошо, поверьте мне), а если вы никогда раньше не слышали о ШИМ, перейдите к моему руководству по ШИМ и управлению яркостью светодиодов (это стоит Это).Наконец, возьмите резистор и подключите его между LDR и контактом GND на Arduino.

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

Шаг 3а: Кодирование и загрузка

На этом этапе я напишу код, необходимый для чтения значений, поступающих из обычного LDR без платы. Если вы не знакомы с написанием и загрузкой кода в Arduino, я сначала связал свое руководство для начинающих. шаг (вы также можете нажать здесь).

Во-первых, вам нужно создать две константы вне цикла и дать им значения выводов, которые вы собираетесь использовать для подключения светодиода и LDR.

В этом случае я назвал их sensePin и ledPin и дал им значения A5 и 5, но вы можете называть их как хотите. Просто убедитесь, что имена и значения действительны и вы используете их во всей программе. Также помните, что вы должны использовать контакты между A0 и A5 для sensePin. Я объясню причину этого в конце этого шага.

Затем в настройке установите соответствующие режимы контактов для контактов и начните последовательную связь с вашим ПК.

sensePin вводится, а ledPin выводится. Скорость передачи, которую я выбрал для последовательной связи, составляет 9600, потому что она наиболее часто используется, но вы можете выбрать любую скорость. Просто не забудьте выбрать тот же самый в последовательном мониторе, который будет использоваться для отображения значений, которые мы получаем после считывания показаний датчика. Если вы не знакомы с последовательным интерфейсом, ознакомьтесь с моим руководством по использованию последовательного порта с Arduino.

Если вы никогда раньше не использовали датчики с Arduino, вы, должно быть, взволнованы и, возможно, нервничаете. Как вы прочитаете состояние LDR? На самом деле это очень просто, и Arduino предоставляет для этого встроенные функции. Введите этот код в цикл.

После использования analogRead () у вас может возникнуть вопрос о существовании digitalRead () и, конечно же, он действительно существует. для чтения требуется вывод, как и analogRead, но вместо этого считывает напряжение вывода (от 0 до 5 В), если оно выше 3.3v, он возвращает логическое значение 1, в противном случае — логическое значение 0. Наконец, ваш код должен выглядеть так.

Задержка в конце предназначена для того, чтобы уменьшить количество раз, когда Arduino считывает и печатает значение. Без него Arduino будет выполнять код в цикле МНОГО МНОГО ТЫСЯЧ раз в секунду. По сути, это дает вам некоторую передышку и время для реакции.

Теперь, когда вы закончили писать и понимать код, пора скомпилировать и загрузить его в Arduino. Убедитесь, что вы все подключили правильно, ваша плата и COM-порт выбраны правильно, и они загрузили это. У вас также должен быть способ легко изменять количество света, падающего на датчик (ВАЖНО).

Откройте монитор последовательного порта, выберите правильную скорость передачи в нижнем правом углу и начните изменять количество света, падающего на датчик, освещая его фонариком, прикрывая его рукой, направляя его в сторону и от различных источников света. Вы также можете изменить поворот потенциометра (с помощью отвертки или гвоздя) и посмотреть, как он изменяет чувствительность LDR.Вот и все, датчик яркости у вас исправен! Легко, правда?

Шаг 2b: подключение всего

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

Подключите вывод VCC или 5 В датчика к выводу 5 В или 3,3 В Arduino, а вывод GND датчика к любому выводу GND на Arduino. Это обеспечит питание цепи и самого главного датчика.Затем подключите выходной контакт модуля к любому контакту на Arduino, который может выполнять цифровое чтение (что могут делать все контакты, поэтому подойдет любой контакт). Светодиод может быть подключен к любому выводу на Arduino (без ШИМ, потому что датчик не выдает цифровых значений и отправляет только максимумы и минимумы). Если вы не знакомы с использованием светодиода с Arduino, прочтите мой учебник по началу работы с Arduino (это будет полезно), а если вы никогда раньше не слышали о ШИМ, прочтите мой учебник по управлению яркостью светодиода и ШИМ (оно того стоит , Поверьте мне).

Шаг 3b: Кодирование и загрузка

На этом этапе я напишу код, необходимый для управления цифровым фоторезистором. Если вы не знакомы с написанием и загрузкой кода Arduino, я уже связал свое руководство для начинающих на предыдущем шаге (вы также можете щелкнуть здесь).

Во-первых, создайте две константы вне установки и дайте им значения выводов, которые вы собираетесь использовать для подключения фоторезистора и светодиода (что необязательно).

Я назвал их sensePin и ledPin и присвоил им значения 2 и 13 (встроенный светодиод) соответственно. Вы можете использовать любые имена и значения, которые захотите, просто убедитесь, что они действительны, и используете их на протяжении всей программы.

Затем установите режимы выводов каждого из выводов соответствующим образом, а также начните последовательную связь с вашим ПК. Если вы не знакомы с последовательным интерфейсом, щелкните здесь, чтобы прочитать мое руководство по использованию последовательного порта с Arduino.

sensePin вводится, а ledPin выводится.Я использовал скорость передачи 9600 бод для последовательного порта, поскольку она является наиболее распространенной, но вы выбираете, какую скорость вы хотите. Последовательный монитор будет использоваться для отображения значений, которые мы получаем после считывания состояния фоторезистора.

Если вы никогда раньше не использовали датчики с Arduino, вы, должно быть, взволнованы и, возможно, нервничаете. Как вы прочитаете состояние LDR? На самом деле это очень просто, и Arduino предоставляет для этого встроенные функции. Введите этот код в цикл.

Сначала мы создаем логическую переменную с именем senseVal (значение датчика).Затем мы выполняем цифровое считывание на sensePin, а затем помещаем значение в senseVal. Это значение печатается на последовательном мониторе, а затем отправляется на светодиод. Поскольку senseVal является логической переменной, ее можно напрямую записать в светодиод без каких-либо операторов if или преобразований. Если он равен 1, светодиод включается, а если 0, он гаснет. Ваш код должен, наконец, выглядеть так.

После использования digitalRead () у вас может возникнуть вопрос о существовании analogRead () и, конечно же, он действительно существует.ему нужен вывод для выполнения чтения, как и digitalRead, но вместо этого он считывает напряжение вывода (от 0 до 5 В), а затем выдает число от 0 до 1023. Это то же самое, что и analogWrite, но вместо этого считывает значение булавки, а не писать ее (очевидно).

Задержка в конце предназначена для того, чтобы уменьшить количество раз, когда Arduino считывает и печатает значение. Без него Arduino будет выполнять код в цикле МНОГО МНОГО ТЫСЯЧ раз в секунду. По сути, это дает вам некоторую передышку и время для реакции.

Теперь, когда вы закончили писать и понимать код, пора скомпилировать и загрузить его в Arduino. Убедитесь, что вы все подключили правильно, ваша плата и COM-порт выбраны правильно, и они загрузили это. У вас также должен быть способ легко изменять количество света, падающего на датчик (ВАЖНО).

Откройте монитор последовательного порта, выберите правильную скорость передачи в нижнем правом углу и начните изменять количество света, падающего на датчик, освещая его фонариком, прикрывая его рукой, направляя его в сторону и от различных источников света.Вы также можете изменить поворот потенциометра (с помощью отвертки или гвоздя) и посмотреть, как он изменяет чувствительность LDR. Вот и все, датчик яркости у вас исправен! Легко, правда?

Шаг 6: Что теперь?

Несмотря на то, что вы успешно использовали LDR с Arduino, вам еще предстоит многое попробовать, и самое интересное только начинается. Попробуйте наклеить прозрачную тонированную бумагу на верхнюю часть датчика, а затем посветить светом разных цветов, но с одинаковой интенсивностью (вы только что узнали, как работают датчики цвета).Попробуйте изменить номиналы резисторов (если вы использовали второй способ для безплатного фоторезистора).

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

Дополнительные ресурсы (дайте им тоже прочитать)

  1. Справочник по Arduino — digitalRead
  2. Справочник по Arduino — AnalogRead

Ссылки для покупки

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

  1. Arduino UNO
  2. Модуль LDR
  3. Датчик LDR
  4. Пакет резисторов

Как это:

Нравится Загрузка . ..

Связанные

Arduino — LDR (светозависимый резистор) — Robo India || Учебники || Изучите Arduino |

В этом руководстве объясняется концепция и объясняется, как использовать LDR (светозависимый резистор) с Arduino.Включен пример, в котором светодиод управляется на основе LDR.
1. Введение:

Пошаговое иллюстрированное руководство по использованию LDR на Arduino.

Это руководство создано на оригинальной Arduino UNO и R-Board от Robo India (совместимо с UNO).

1,1 LDR:

LDR (светозависимый резистор) или фоторезистор — это фотопроводящий датчик. Это переменный резистор, который меняет свое сопротивление пропорционально падающему на него свету.Его сопротивление уменьшается с увеличением интенсивности света.

2. Необходимое оборудование

Для выполнения этой схемы LDR потребуется следующее оборудование.

3. Строительный контур

Сделайте следующую схему с помощью вышеупомянутых компонентов. Некоторые ключевые моменты для понимания схемы —

LDR подключен к 10 резисторам последовательно. +5 К этой схеме приложено напряжение. При изменении интенсивности света изменяется значение LDR, таким образом, падение напряжения на LDR будет изменяться, и мы собираемся измерить это изменение напряжения.

3.1 Вы можете использовать R-Board от Robo India (совместим с UNO) —

Вот схема этой схемы —

или

3.2 Вы можете использовать оригинальную плату Arduino UNO —

Вот схема этой схемы —

4. Программирование:

Как только мы закончили с частью схемы, вот наша программа для этой схемы.Каждая команда следующей программы объяснена в разделе комментариев. Несколько моментов, которые следует учитывать при создании этого эскиза.

1. Он считывает значение LDR и печатает их на последовательном мониторе. После того, как вы загрузите эту программу на свою плату Arduino, откройте последовательный монитор и посмотрите, как значения меняются с изменением интенсивности света.

2. Подключенный светодиод светится в аналоговом режиме в соответствии со значениями LDR.

3. Есть состояние порога; Подключенный светодиод остается выключенным для всех значений ниже порогового значения.Вы можете установить свой собственный порог. В этой программе мы указали 800 в качестве порога. Вы можете установить порог t на любое значение от 0 до 1023.

Вы можете скачать этот код (Arduino Sketch) отсюда.

// Учебник Robo India по LDR.
//  http://roboindia.com/ 


int LDR = A0; // Вход LDR на выводе A0.
int LED = 3; // Светодиод подключен к выводу 3 ШИМ.
int LDRReading = 0; // сохранить входное значение LDR
int lEDBrightness = 0; // сохранить значение яркости светодиода
int threshold_val = 800; // Проверьте свой порог и измените его. void setup () {
  Серийный номер .begin (9600); // инициализация serail связи.
 pinMode (светодиод, ВЫХОД); // Определение вывода светодиода как выхода.
}

void loop () {
 LDRReading = аналоговое чтение (LDR); // Чтение ввода LDR.
  Серийный  .println (LDRReading); // Печать входного значения LDR.
 
 if (LDRReading> threshold_val) {// Условие включения светодиода.
 lEDBrightness = map (LDRReading, 0, 1023, 0, 255); // Преобразование LDR в яркость светодиода.
 analogWrite (LED, lEDBrightness); // Запись яркости светодиода.}
 еще{
 analogWrite (светодиод, 0); // Если LDR ниже порога, выключите светодиод.
 }
 
 задержка (300); // задержка для чтения вывода на последовательном мониторе.
}

 
5. вывод:

Вот результат этого руководства —

6. Последовательный выход:

Этот эскиз дает показания LDR на последовательном мониторе. Вот скриншот последовательного вывода.

Если у вас есть какие-либо вопросы, напишите нам по адресу [email protected]

Благодарности и приветы
Команда разработки контента
Robo India
http://roboindia.com

Управление линейными приводами с помощью слабозависимого резистора

Легкозависимые резисторы

Светозависимые резисторы (LDR) или фоторезисторы — это переменные резисторы, значение сопротивления которых изменяется в зависимости от количества света, обнаруживаемого фотоэлектрическим элементом. Как правило, чем больше света попадает на фоторезистор, тем ниже значение сопротивления фоторезистора [1]. Это может быть весьма полезно, так как это изменяющееся значение сопротивления можно считать показателем количества присутствующего света и использоваться микроконтроллером для выполнения соответствующего действия. LDR часто встречаются как недорогой и базовый элемент, как показано ниже, но вы также можете найти датчики света, специально разработанные для обнаружения солнечного или ультрафиолетового света. В зависимости от того, какой датчик вы выберете, вам может потребоваться свериться с его таблицей данных, чтобы узнать, как подключить его к микроконтроллеру.

Фоторезисторы — оптические датчики?

Короткий ответ — да, фоторезисторы — это оптические датчики. Но не все оптические датчики работают как фоторезисторы. Оптические датчики — это семейство датчиков, которые используют свет различными способами. Некоторые оптические датчики используют свет для обнаружения объекта или даже используются для обратной связи в линейных исполнительных механизмах, в то время как фоторезисторы показывают, сколько света присутствует. При поиске светочувствительного датчика важно знать разницу между фоторезисторами и другими оптическими датчиками.

Возможные варианты использования с линейными приводами

LDR могут использоваться вместе с линейными приводами для двух основных целей; во-первых, чтобы активатор реагировал на слишком много света, а во-вторых, чтобы исполнительный механизм двигался, чтобы максимизировать количество света, видимого LDR. Первый вариант использования полезен для приложений, в которых вы хотите минимизировать количество света, например, для защиты светочувствительных растений или для автоматизации навеса над патио или крыльцом.Второй вариант использования полезен в таких приложениях, как солнечные панели, где вы пытаетесь расположить их так, чтобы максимально увеличить количество света, видимого панелями.

Использование LDR для управления линейным приводом

К счастью, обратная связь от LDR не изменится в зависимости от варианта использования, поэтому подключение и чтение обратной связи от LDR могут быть реализованы идентично. Чтобы настроить фоторезистор, вам просто нужно подключить положительную сторону фоторезистора к соответствующему источнику питания, а отрицательную сторону — к аналоговому выводу микроконтроллера, например, Arduino, для чтения вывода.Вы также можете подключить резистор, который подключен к земле, к выходной стороне фоторезистора, как показано ниже, для защиты аналоговых выводов микроконтроллера.

Вы можете управлять линейным приводом с помощью микроконтроллера, используя либо пару реле, либо драйвер двигателя. Чтобы узнать, как это сделать, вы можете посетить наш блог «Как управлять линейным приводом с помощью Arduino». Расположение датчика LDR будет зависеть от вашего варианта использования; если вы пытаетесь защитить область от света, вам понадобится LDR со всем, что вы пытаетесь защитить, но если вы хотите максимизировать освещенность, вам понадобится датчик, чтобы перемещаться вместе с объектом, который вы подвергаете воздействию свет.Считывание обратной связи от LDR в любом случае будет идентичным, поскольку вы просто считываете аналоговое напряжение с выходной стороны датчика.

То, как вы используете эту обратную связь для управления линейным приводом, будет зависеть от вашего приложения и варианта использования. Для первого варианта использования, когда вы сводите к минимуму воздействие света, вы можете либо переместить линейный привод в известное положение, если обнаружено определенное количество света, либо вы можете управлять линейным приводом, пока фоторезистор не обнаружит меньшее количество света.Первый показан в примере кода ниже. Хотя это базовая реализация, вы можете найти гораздо больше творческих решений, используя это решение в качестве отправной точки. Например, вы можете расположить тень над светочувствительным растением только в светлое время суток и только в солнечную погоду. Используя фоторезистор, вы можете определить, достаточно ли солнечно, чтобы нужно было переместить привод и установить штору.

Во втором варианте использования, когда вы увеличиваете экспозицию света, вам нужно будет определить, в каком положении максимизировать свет, попадающий на LDR. Чтобы сделать это эффективно, вам нужно будет использовать линейный привод с обратной связью, чтобы отслеживать положение привода. Вы можете найти инструкции по использованию различных вариантов обратной связи для линейных приводов на нашей странице руководства. В приведенном ниже примере кода показано, как это можно сделать, используя линейный привод с обратной связью с потенциометром. Вы просто отслеживаете наименьшее значение сопротивления от LDR, которое является наибольшим значением напряжения, и соответствующее положение привода. Сначала вы захотите выдвинуть привод на максимальную длину, а затем втянуть его, чтобы измерить выход LDR по всей длине привода.Как только привод переместится через весь диапазон, вы просто переместитесь в положение, которое имело самый высокий соответствующий выходной сигнал от LDR. Чтобы реализовать это на практике, вы, вероятно, захотите запустить приведенный ниже код на таймере, чтобы периодически в течение дня находить новую позицию.

Существует множество творческих способов использования фоторезисторов с линейными исполнительными механизмами, и мы хотели бы увидеть, что вы сделали. Благодаря широкому выбору линейных приводов и принадлежностей Firgelli Automation вы можете сделать свой следующий проект с регулируемым освещением легким делом.

Ссылки:

  1. Электроника Примечания. Светозависимый резистор LDR: Фоторезистор. Получено с https://www.electronics-notes.com/articles/electronic_components/resistors/light-dependent-resistor-ldr.php

Управление яркостью лампы с помощью светового датчика — — Проект модульной электроники Arduino

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

! Важная информация

Каждая простая вещь с дополнительным штрихом может быть фантастической.Добавив LDR, мы можем сделать так, чтобы свет лампы соответствовал потребностям окружающей среды. Когда он темнее, нам нужно больше света, а когда он ярче, меньше света.

LDR, Светозависимый резистор , представляет собой пассивный электронный компонент, который представляет собой переменный резистор. В частности, это резистор, сопротивление которого изменяется в зависимости от интенсивности падающего на него света.

! Идентификация компонентов

Резистор (слева) и LDR (справа)

Чтобы собрать схему, выполните следующие действия:

  • Подключите одну из клемм LDR к контакту 5V
  • Подключите другую клемму LDR к контакту A3
  • Подключите один из выводов резистора к контакту A3
  • Подключите другую клемму резистора к контакту GND

Когда вы закончите сборку, это будет выглядеть так:

Окончательный вид (щелкните, чтобы увеличить)

! Код компоненты

Давайте использовать специальную функцию, которая получает считываемое значение от датчика и возвращает значение, относящееся к яркости.

Интенсивность int (int sensorValue)
{
 интенсивность плаванияReturn;
 float bright = (sensorValue / 4);
 интенсивностьReturn = 255 - яркий;
  Серийный .  Печать (интенсивность возврата);
 интенсивность возврата
}
 

! Работает на Arduino

int lamp = 3;
int ldr = A3;
int button = A0;
int light;

Интенсивность int (int sensorValue)
{
 интенсивность плаванияReturn;
 float bright = (sensorValue / 4);
 интенсивностьReturn = 255 - яркий;
  Серийный .печать (интенсивность возврата);
 интенсивность возврата
}

интервал getButtonState ()
{
 int value = analogRead (кнопка);
 if (значение <69) {
 возврат 1;
 } else if (значение> = 69 && значение <= 230) {
 возврат 2;
 } else if (значение> = 231 && значение <= 407) {
 возврат 3;
 } else if (значение> = 408 && значение <= 630) {
 возврат 4;
 } else if (значение> = 631 && значение <= 896) {
 возврат 5;
 } еще {
 возврат 0;
 }
}

int readButton ()
{
 int состояние = getButtonState ();
 int count = 1;

 while (count <5) {
 задержка (5);
 int newState = getButtonState ();
 if (newState == state) {
 count ++;
 } еще {
 count = 1;
 }
 состояние = newState;
 }

 вернуть состояние;
}

установка void ()
{
 pinMode (лампа, ВЫХОД);
 analogWrite (лампа, 0);
}

пустой цикл ()
{
 // --- состояние: лампа горит, кнопка отпущена
 // Лампа горит, пока кнопка не нажата
 int btn;
 while ((btn ​​= readButton ())! = 5) {
 int sensorValue = аналоговое чтение (ldr);
 свет = интенсивность (значение датчика);
 analogWrite (лампа, свет);
 }

 // --- состояние: лампа выключена, кнопка нажата
 // Выключает лампу
 analogWrite (лампа, 0);

 // Ожидает отпускания кнопки
 пока (readButton ()! = 0);

 // --- состояние: лампа выключена, кнопка отпущена
 // ждем нажатия кнопки
 пока (readButton ()! = 5);

 // --- состояние: лампа горит, кнопка нажата
 // Ожидает отпускания кнопки
 пока (readButton ()! = 0);
}

 

! Ты поворачиваешься!

Измените приведенный выше код, чтобы светодиоды отображали работоспособность системы.

Ответ

int lamp = 3;
int ldr = A3;
int button = A0;
int light;
int ledAmarelo = A1;
int ledVerde = A2;

Интенсивность int (int sensorValue)
{
 интенсивность плаванияReturn;
 float bright = (sensorValue / 4);
 интенсивностьReturn = 255 - яркий;
  Серийный . Печать (интенсивность возврата);
 интенсивность возврата
}

интервал getButtonState ()
{
 int value = analogRead (кнопка);
 if (значение <69) {
 возврат 1;
 } else if (значение> = 69 && значение <= 230) {
 возврат 2;
 } else if (значение> = 231 && значение <= 407) {
 возврат 3;
 } else if (значение> = 408 && значение <= 630) {
 возврат 4;
 } else if (значение> = 631 && значение <= 896) {
 возврат 5;
 } еще {
 возврат 0;
 }
}

int readButton ()
{
 int состояние = getButtonState ();
 int count = 1;

 while (count <5) {
 задержка (5);
 int newState = getButtonState ();
 if (newState == state) {
 count ++;
 } еще {
 count = 1;
 }
 состояние = newState;
 }

 вернуть состояние;
}

установка void ()
{
 pinMode (лампа, ВЫХОД);
 pinMode (ledAmarelo, ВЫХОД);
 pinMode (ledVerde, ВЫХОД);
 analogWrite (лампа, 0);
}

пустой цикл ()
{
 // --- состояние: лампа горит, кнопка отпущена
 // Лампа горит, пока кнопка не нажата
 int btn;
 while ((btn ​​= readButton ())! = 5) {
 int sensorValue = аналоговое чтение (ldr);
 свет = интенсивность (значение датчика);
 analogWrite (лампа, свет);
 digitalWrite (ledVerde, HIGH);
 }

 // --- состояние: лампа выключена, кнопка нажата
 // Выключает лампу
 analogWrite (лампа, 0);

 // Ожидает отпускания кнопки
 пока (readButton ()! = 0);
 digitalWrite (ledVerde, LOW);
 digitalWrite (ledAmarelo, ВЫСОКИЙ);

 // --- состояние: лампа выключена, кнопка отпущена
 // ждем нажатия кнопки
 пока (readButton ()! = 5);

 // --- состояние: лампа горит, кнопка нажата
 // Ожидает отпускания кнопки
 пока (readButton ()! = 0);
 digitalWrite (ledAmarelo, LOW);
}

 
.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *