Arduino для начинающих. Урок 7. Подключение фоторезистора

Share Button

Продолжаем серию уроков “Arduino для начинающих”. Сегодня подключаем фоторезистор (фотоэлемент) к плате Arduino. Фоторезисторы используются в роботах как датчики освещенности. В статье видео-инструкция, листинг программы, схема подключения и необходимые компоненты.

Фоторезистор — резистор, сопротивление которого зависит от яркости света, падающего на него. В нашей модели светодиод горит, только если яркость света над фоторезистором меньше определенной, эту яркость можно регулировать программно.

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

Видео-инструкция сборки модели Arduino с фоторезистором:

Для сборки модели с сервоприводом нам потребуется:

  • плата Arduino
  • 6 проводов “папа-папа”
  • фоторезистор
  • светодиод
  • резистор на 220 Ом
  • резистор на 10 кОм
  • программа Arduino IDE, которую можно скачать с сайта Arduino.
Необходимые компоненты для подключения фоторезистора на Arduino

Необходимые компоненты для подключения фоторезистора на Arduino

Схема подключения модели Arduino с фоторезистором:

7схема

Схема подключения фоторезистора на Arduino

Для работы этой модели подойдет следующая программа (программу вы можете просто скопировать в Arduino IDE):

int led = 13; //переменная с номером пина светодиода
int ldr = 0; //и фоторезистора
void setup() //процедура setup
{
pinMode(led, OUTPUT); //указываем, что светодиод - выход
}
void loop() //процедура loop
{
if (analogRead(ldr) < 800) digitalWrite(led, HIGH);
//если показатель освещенности меньше 800, включаем светодиод
else digitalWrite(led, LOW); //иначе выключаем
}

Так выглядит собранная модель Arduino с фоторезистором:

готово

Готовая модель подключения фоторезистора на Arduino

Если светодиод не реагирует на изменение освещенности, то попробуйте поменять число 800 в программе, если он все время горит  — уменьшите, если не горит — увеличьте.

Смотрите также:

Учебный курс «Arduino для начинающих»: главная страница.

Посты по урокам:

  1. Первый урок: Светодиод
  2. Второй урок: Кнопка
  3. Третий урок: Потенциометр
  4. Четвертый урок: Сервопривод
  5. Пятый урок: Трехцветный светодиод
  6. Шестой урок: Пьезоэлемент
  7. Седьмой урок: Фоторезистор
  8. Восьмой урок: Датчика движения (PIR) и E-mail
  9. Девятый урок: Подключение датчика температуры и влажности DHT11 или DHT22

Все посты сайта «Занимательная робототехника» по тегу Arduino.

Наш YouTube канал, где публикуются видео-уроки.

Не знаете, где купить Arduino? Все используемые в уроке комплектующие входят в большинство готовых комплектов Arduino, их также можно приобрести по отдельности. Подробная инструкция по выбору здесь. Низкие цены, спецпредложения и бесплатная доставка на сайтах AliExpress и DealExtreme. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазины Амперка и DESSY. Низкие цены и быструю доставку предлагает интернет-магазин ROBstore. Смотри также список магазинов.

Автор: Александр Гагарин.

Share Button

17 комментариев к статье “Arduino для начинающих. Урок 7. Подключение фоторезистора”

  1. Александр

    14.11.2014

    Правильно ли определена связь между именем переменной и ножкой контроллера:
    int ldr = 0; //и фоторезистора
    Ведь фоторезистор подключен не к ножке «0», а к «A0».
    Быть может надо написать так:
    int ldr = A0; //и фоторезистора

    Ответить на этот комментарий
    • Занимательная робототехника

      15.11.2014

      Переменная типа int (integer) может содержать только число. В свою очередь функция analogRead() принимает аргумент в формате x или Ax, где x — номер аналогового пина. То есть использовать можно как analogRead(0) так и analogRead(A0), но переменная типа int не может содержать A0. В случае если требуется считывать данные с цифрового пина следует использовать функцию digitalRead(x), где x — номер цифрового порта.

      Ответить на этот комментарий
  2. Иван

    25.12.2014

    Не могу понять зачем нужен резистор на 10 кОм.
    Фоторезистор сам по себе уже резистор. Аналоговый порт держит 5 вольт. Объясните пожалуйста…

    Ответить на этот комментарий
    • Алексей

      28.12.2014

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

      Ответить на этот комментарий
  3. sameza

    08.02.2015

    Всем привет ) У меня был залит скетч для отлавливания событий на кнопке (на цифровых пинах), воткнул вместо кнопки фоторезюк и всё работает … т,е. для него нет разницы в аналоговый или цифровой пин ?

    const int buttonPin = 2; // the number of the pushbutton pin
    const int ledPin = 13; // the number of the LED pin

    // variables will change:
    int buttonState = 0; // variable for reading the pushbutton status

    void setup() {
    // initialize the LED pin as an output:
    pinMode(ledPin, OUTPUT);
    // initialize the pushbutton pin as an input:
    pinMode(buttonPin, INPUT);
    //
    Serial.begin(9600) ;
    }

    void loop(){
    // read the state of the pushbutton value:
    buttonState = digitalRead(buttonPin);

    // check if the pushbutton is pressed.
    // if it is, the buttonState is HIGH:
    if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
    Serial.println(«Button ON») ;
    delay (300) ;
    }
    else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
    //Serial.println(«Button OFF») ;
    }
    }

    Ответить на этот комментарий
    • Занимательная робототехника

      08.02.2015

      Да, но тогда разумеется порог между HIGH и LOW не сможет быть установлен программно.

      Ответить на этот комментарий
  4. эд

    29.04.2015

    как сделать чтобы светодиод при отсутствии освещения включался а при появлении не отключался???

    Ответить на этот комментарий
    • Александр

      30.04.2015

      Эд, уточни задачу…. А то немного похоже на то, что нужно чтобы светодиод горел всегда ….. Т.е. купить ардуино и купить датчики зачеркиваем.)

      Ответить на этот комментарий
  5. Михаил

    11.08.2015

    Почему при инициализации переменных в setup не указан фоторезистор ldr, как вход INPUT? Ведь он же по аналогии с уроком про кнопку работает. Или почему так?

    И что такое 800 в примере — люксы? Или просто некое цифровое значение, особого физического смысла не имеющее?

    Ответить на этот комментарий
    • Антон

      13.08.2015

      По сути это коэффициент передачи делителя напряжения. где «0» соответствует «0», а «1» — «1024».

      Ответить на этот комментарий
    • Денис

      13.08.2015

      Фоторезистор подключается к портам analog in, что заранее говорит о том, что это input, поэтому не прописывается.
      800 — ток, который зависит от освещения и используемого резистора и фоторезистора.

      Ответить на этот комментарий
  6. Александр

    23.10.2015

    а какова должна быть мощность резистора 10 кОм?

    Ответить на этот комментарий
  7. Foxxxof

    20.10.2016

    У меня ни как не хочет работать на Arduino nano.
    При значении 0 — не горит, при 1 и больше всегда горит.
    Это как то связано с тем, что у меня нано?

    Ответить на этот комментарий

Оставить комментарий

© 2014-2017 Занимательная робототехника, Гагарина Д.А., Гагарин А.С., Гагарин А.А. All rights reserved / Все права защищены. Копирование и воспроизведение в любой форме запрещено.
Наверх
Яндекс.Метрика