Задания и мысли

Ардуино: трехцветный светодиод — RGB

RGB светодиод — яркий представитель семейства светодиодов, с помощью которого можно сделать много интересных артефактов. Однако, в наше время на замену простому RGB-светодиоду приходят его более продвинутые версии, которые имеют на борту встроенный микроконтроллер. Например, светодиодный модуль ws2812 или модуль Пиксель APA102. О них мы поговорим на будущих уроках.

Задания

  1. Индикатор температуры. Добавим в схему термистор и подключим его к аналоговому входу. Светодиод должен менять свой цвет в зависимости от температуры термистора. Чем ниже температура, тем более синий цвет, а чем выше, тем более красный.
  2. RGB лампа с регулятором. Добавим в схему три переменных резистора и подключим их к аналоговым входам. Программа должна непрерывно считывать значения резисторов и менять цвет соответствующей компоненты RGB-светодиода.

Изменено:

Ардуино: трехцветный светодиод — RGB: 8 комментариев

  1. Не знаю, как на предыдущих версиях Arduino IDE, но на моей (1.8.5) скетч плавного изменения яркости не заработал — отладчик дюже ругался на (переменную?) dim. Немного пошукав по сети, добавил сразу после строчки [const byte rgbPins[3] = {6,5,3}; (изменил порядок под свою раскладку цветов)] такую строчку: [int dim = 1;] — всё заработало! Здесь число dim меняет шаг
    дискретности уровня свечения. Чем меньше число, тем меньше шаг и
    плавнее изменение яркости.

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

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

  3. скетч рабочий и компактный .Я применил задержку — 50,так мне кажется лучше. Уно- китайская.

  4. убрал переменную dim , работает так же вот код : const byte rgbPins[3] = {3,5,6};

    void setup() {
    for(byte i=0; i=0; i—){
    analogWrite( rgbPins[0], i );
    analogWrite( rgbPins[1], (255-i) );
    delay(10);
    }
    // гасим зеленый, параллельно разжигаем синий
    for(int i=255; i>=0; i—){
    analogWrite( rgbPins[1], i );
    analogWrite( rgbPins[2], (255-i));
    delay(10);
    }
    // гасим синий, параллельно разжигаем красный
    for(int i=255; i>=0; i—){
    analogWrite( rgbPins[2], i);
    analogWrite( rgbPins[0], (255-i) );
    delay(10);
    }

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.