Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Arduino » Скетч: Чтение аналогового входа (показания с датчика освещенности)

    Скетч: Чтение аналогового входа (показания с датчика освещенности)


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


    Необходимые компоненты:

    • Arduino (Uno, Nano, Mega и т.д.)
    • Фоторезистор (LDR)
    • Резистор (10 кОм)
    • Провода для соединения


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

    • Делитель напряжения: Эта схема использует делитель напряжения для преобразования изменения сопротивления фоторезистора в изменение напряжения, которое можно измерить с помощью Arduino.
      • Один конец фоторезистора подключается к +5V на Arduino.
      • Другой конец фоторезистора подключается к резистору 10 кОм.
      • Другой конец резистора 10 кОм подключается к GND (земле) на Arduino.
      • Средняя точка между фоторезистором и резистором 10 кОм (соединение между ними) подключается к аналоговому входу Arduino (в примере используется пин A0).


    Скетч Arduino:

    #define LDR_PIN A0        // Аналоговый пин, к которому подключен фоторезистор
    
    void setup() {
      Serial.begin(9600);       // Инициализируем Serial Monitor для отладки
    }
    
    void loop() {
      // Читаем аналоговое значение с пина LDR_PIN (от 0 до 1023)
      int ldrValue = analogRead(LDR_PIN);
    
      // Выводим значение в Serial Monitor
      Serial.print("Значение датчика освещенности: ");
      Serial.println(ldrValue);
    
      // Преобразуем значение в уровень освещенности (приблизительно)
      // Чем меньше значение ldrValue, тем больше света
      // Этот диапазон может потребовать калибровки в зависимости от вашего LDR.
      int lightLevel = map(ldrValue, 0, 1023, 100, 0); // Инвертированный диапазон (100% - 0%)
    
      // Выводим примерный уровень освещенности в процентах
      Serial.print("Примерный уровень освещенности: ");
      Serial.print(lightLevel);
      Serial.println(" %");
    
      delay(100);              // Небольшая задержка
    }


    Описание кода:

    • #define LDR_PIN A0: Определяет константу LDR_PIN для аналогового пина, к которому подключен фоторезистор.
    • setup():
      • Serial.begin(9600);: Инициализирует Serial Monitor для отладки.
    • loop():
      • int ldrValue = analogRead(LDR_PIN);: Читает аналоговое значение с пина фоторезистора. Значение находится в диапазоне от 0 до 1023. Чем больше света попадает на фоторезистор, тем меньше значение ldrValue.
      • Serial.print(...)Serial.println(...): Выводит значение, считанное с датчика освещенности, в Serial Monitor.
      • int lightLevel = map(ldrValue, 0, 1023, 100, 0);: Преобразует значение ldrValue в примерный уровень освещенности в процентах. Функция map() масштабирует диапазон значений. Важно отметить, что этот диапазон инвертирован, так как чем больше света, тем меньше значение ldrValue. Диапазон может потребовать калибровки в зависимости от характеристик вашего фоторезистора.
      • Serial.print("Примерный уровень освещенности: "); Serial.print(lightLevel); Serial.println(" %");: Выводит примерный уровень освещенности в Serial Monitor.
      • delay(100);: Небольшая задержка.


    Как использовать:

    1. Загрузите скетч в Arduino.
    2. Подключите фоторезистор и резистор к Arduino в соответствии со схемой подключения.
    3. Откройте Serial Monitor (Tools -> Serial Monitor).
    4. Изменяйте освещенность фоторезистора (например, закрывая его рукой или направляя на него свет) и наблюдайте, как изменяется значение в Serial Monitor.


    Настройка:

    • LDR_PIN: Измените это значение, если вы используете другой аналоговый пин для фоторезистора.
    • map(ldrValue, 0, 1023, 100, 0): Диапазон значений в функции map() может потребовать калибровки в зависимости от вашего фоторезистора. Чтобы откалибровать, поместите фоторезистор в условия максимального освещения и запишите минимальное значение ldrValue. Затем поместите фоторезистор в полную темноту и запишите максимальное значение ldrValue. Используйте эти значения в качестве минимального и максимального диапазонов в функции map(). Например: map(ldrValue, minLdrValue, maxLdrValue, 100, 0).
    • Резистор (10 кОм): Изменение значения резистора повлияет на чувствительность схемы. Попробуйте разные значения для достижения оптимальной производительности.


    Дополнительные возможности:

    • Используйте значение освещенности для управления другими устройствами (например, включение света при наступлении темноты).
    • Используйте несколько фоторезисторов для измерения освещенности в разных точках.
    • Подключите фоторезистор к аналого-цифровому преобразователю (АЦП) с более высоким разрешением для более точных измерений.
    • Используйте значение освещенности для управления сервоприводом, двигателем или другими устройствами.
    • Визуализируйте данные об освещенности с помощью графиков в Serial Plotter (Tools -> Serial Plotter).


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

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

    Скетч: Цифровой пин как вход и выход (мигание светодиода с помощью кнопки)

    0
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    0
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    0
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 0.0 из 10 (голосов: 0 / История оценок)

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

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии