Категории Статей
Популярные Статьи
Arduino, ИК(IR) приемник и пульт управления
Необходимый набор электронных компонентов: Плата Arduino UNO(или любая другая) Макетная плат ...»
Плавное мигание светодиодом с использованием ШИМ порта
Необходимый набор электронных компонентов: плата Arduino UNO(или любая другая) Макетная плат ...»
Использование RGB светодиода, эффект хамелеона :)
Необходимый набор электронных компонентов: Плата Arduino UNO(или любая другая) Макетная плат ...»

Управление яркостью светодиода в зависимости от освещенности

Необходимый набор электронных компонентов:

  1. Плата Arduino UNO(или любая другая)
  2. Макетная плата breadboard
  3. Фоторезистор
  4. Светодиод
  5. Резисторы 10-100 кОм и 220 Ом
  6. Провода "папа-папа"

В конце статьи находятся ссылки на сопутствующие товары в нашем магазине.

Софт:

  1. Arduino IDE

Принципиальная схема подключения:

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

Исходный код программы:


/*
Управление яркостью светодиода в зависимости от освещенности.
*/

// Определение директивы для PWM пина №6, на который заведен светодиод
#define LED_PIN  6
// Определение директивы для аналогового пина №0(A0), на котором находится фоторезистор
#define LDR_PIN  A0

// Значения с аналогового выхода A0. Подбираются эксперементально и зависят от степени освещенности, 
// типа фоторезистора и резистора, учавствующего в делителе напряжения R1 
int MAX_BRIGHTNESS = 450; // Значение при вашей максимальной освещенности
int MIN_BRIGHTNESS = 250; // Значение при вашей минимальной освещенности.

void setup()
{
  // Инициируем последовательное соединение и задает скорость передачи данных в бит/c 
  Serial.begin(9600); 
  // Инициализируем ШИМ пин №6 как выход
  pinMode(LED_PIN, OUTPUT);
}

void loop()
{
  // Получаем занчение с аналогового входа A0
  int brightness = analogRead(LDR_PIN);
  
  // Получение тестовых значений
  // Выодим на монитор полученное значение. Открыть монитор порта можно с помощью меню Сервис->Монитор порта 
  // или комбинации клавиш ctrl+shift+M
  Serial.print("brightness = "); // Название значения для наглядного представления
  Serial.println(brightness);    // Выводим значение и используем вызов println, те переноса строки
  
  // Выставляем границы в соответствии с границами значений освещенности, полученными эксперементально ранее.
  // Функция constrain проверяет значение(brightness) и если надо задает новое, так чтобы оно была в 
  //области допустимых значений, заданной параметрами(MIN_BRIGHTNESS, MAX_BRIGHTNESS)
  brightness = constrain(brightness,MIN_BRIGHTNESS,MAX_BRIGHTNESS);
  
  // Распределяем полученное значение от 255 до 0, те при минимальной освещенности наш светодиод будет светится 
  //ярче и наоборот, при максимальной будет выключаться.
  int ldr_value = map(brightness, MIN_BRIGHTNESS, MAX_BRIGHTNESS, 255, 0);

  // и выводим его на используемый нами ШИМ выход
  analogWrite(LED_PIN, ldr_value);
}

  Отзывов: 0
Ваше Имя:


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

Оценка: Плохо           Хорошо

Введите код, указанный на картинке:



Последние Статьи
Выпущена новая модель миниатюрного компьютера Raspberry Pi Zero
Выпущена новая модель миниатюрного одноплатного компьютера Raspberry Pi Zero стоимостью около 5$ Гл ...»
16.12.2015    Просмотров: 472
Arduino, ИК(IR) приемник и пульт управления
Необходимый набор электронных компонентов: Плата Arduino UNO(или любая другая) Макетная плат ...»
11.03.2015    Просмотров: 7759
Управление RGB светодиодом с компьютера через USB порт
Необходимый набор электронных компонентов: Плата Arduino UNO(или любая другая) Макетная плат ...»
10.03.2015    Просмотров: 3545
Последние отзывы
Использование RGB светодиода, эффект хамелеона :)
Скорее всего перепутаны пины для RGB светодиода. Попробуйте поменять либо подключение светодиода, либо порядок вызова функции setFadeColor. ...»
05.04.2016    Просмотров: 5336
Администратор
Использование RGB светодиода, эффект хамелеона :)
Хм. Почему-то, всё ещё резкий переход у меня выходит. ...»
05.04.2016    Просмотров: 5336
Summerwind