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

    Цветовая палитра с функцией рандом на Arduino


    С помощью этой самоделки можно сделать любой цвет в системе RGB с помощью пяти кнопок

    1 - добавить красного
    2 - Добавить Зелёного
    3 - Добавить Синего
    4 - Рандом ( случайный цвет )
    5 - Сброс

    Что нам понадобится:


    1. Arduino ( в моём случае arduino mega )
    2. Макетная плата
    3. Перемычки типа: папа-мама и папа-папа
    4. LCD 1602 ( 2 строки по 16 символов )
    5. Кнопки 5 штук
    6. SMD RGB светодиод
    7. Резистор на 10 Ком 5 штук


    Для начала ма присоединяем RGB светодиод ( при отсутствии резистора поставить резистор на 220 ом ).
    Далее ставим 5 кнопок : одну ножку кнопки к контакту 5В, а другую через резистор 10 Ком к земле и эту же ножку к arduino.
    Подключаем дисплей LCD 1602 к SDA и SCL ( I2C ) .
    Всё это подключаем к arduino контактам ( GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) как на картинке.
    Спереди
    Сзади


    Ну и собственно сам скетч



    #include "LiquidCrustal_I2C.h" // подключаем библиотеку для работы с дисплеем по I2C
    #include "Wire.h"   //Подключаем библиотеку для работы с I2C
    int R = 9;  
    int G = 10;
    int B = 11;
    // RGB цвета
    int BR = 0; 
    int BG = 0;
    int BB = 0;
    // переменные для сохранения значения
    int KR = 2;   // кнопка красный
    int KG = 3;   // кнопка зелёный
    int KB = 4;   // кнопка синий
    int C = 13;   // кнопка сброс
    int RS = 12;    // кнопка рандом
    LiquidCrystal_I2C lcd(0x27,16,2);   // Подключаем дисплей (адрес, столбцы, стороки)
    void setup() {    // выполняем один раз
        pinMode(R, OUTPUT);
        pinMode(G, OUTPUT);
        pinMode(B, OUTPUT);
    // подключаем RGB светодиод
        } 
    void loop() {       // повторяем бесконечно
        delay(10);       // задержка 10 мс
            lcd.init();      // определяем дисплей
    lcd.backlight();     // включаем подсветку дисплея
        lcd.clear();    // очищаем дисплей
    lcd.setCursor(5, 0);    // ставим курсор на 6 столбец и 0 строку
    lcd.print("Color");    // пишем color
    lcd.setCursor(0, 1);
    lcd.print("R"); // пишем R
    lcd.setCursor(6, 1); 
    lcd.print("G"); / пишем G
    lcd.setCursor(12, 1); 
    lcd.print("B"); пишем B
    lcd.print(BB);   // выводим значение синего цвета
        lcd.setCursor(2, 1);
    lcd.print(BR);    // выводим значение красного цвета
        lcd.setCursor(8, 1);
    lcd.print(BG);    // выводим значение зелёного цвета
        lcd.setCursor (13 , 1);
        if (digitalRead(KR) == HIGH) { BR += 15; }   // если кнопка R нажата то значение R +15
        if (digitalRead(KG) == HIGH) { BG += 15; }  // если кнопка G нажата то значение G +15
        if (digitalRead(KB) == HIGH) { BB += 15; }  // если кнопка B нажата то значение B +15
         if (digitalRead(C) == HIGH) { BR -= 254; } // если кнопка C нажата то значение R -254
        if (digitalRead(C) == HIGH) { BG -= 254; } // если кнопка C нажата то значение G -254
        if (digitalRead(C) == HIGH) { BB -= 254; } // если кнопка C нажата то значение B -254
        if (digitalRead(RS) == HIGH) { BR = random (0, 254); }    // если кнопка RS нажата то значение R от 0 до 254
         if (digitalRead(RS) == HIGH) { BG = random (0, 254); }  // если кнопка RS нажата то значение G от 0 до 254
         if (digitalRead(RS) == HIGH) { BB = random (0, 254); }  // если кнопка RS нажата то значение B от 0 до 254
        
      BR = constrain(BR, 0, 254);   // BR = (значение , от, до)
        analogWrite(R, BR);   // с помощью ШИМ модуляции выстраиваем яркость от 0 до 254
          
    
      BG = constrain(BG, 0, 254);  //BG = (значение , от, до)
        analogWrite(G, BG);   // с помощью ШИМ модуляции выстраиваем яркость от 0 до 254
         
        
      BB = constrain(BB, 0, 254);  //BB = (значение , от, до)
        analogWrite(B, BB);   // с помощью ШИМ модуляции выстраиваем яркость от 0 до 254
         
        }


    Скачать скетч: sketch_feb07a2_ino.zip [587 b] (скачиваний: 86)

    Вот что должно получится!




    Пишите в комментариях что непонятно я на все вопросы отвечу
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
    Опрос
    Получилось ли у вас?
    Всего проголосовало: 15

    Домашняя метеостанция на GY-BMP280-3.3 и Ds18b20

    Очень точный ультразвуковой дальномер

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

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

    4 комментария
    Гость Роман #41949
    есть ли хотя бы примерная принципиальная схема.
    Nruter #16230
    Ок, понятно.
    Антон Мартьянов #16228 Автор
    Эта палитра нужна для выбора определённого оттенка для проектов с подсветкой
    Nruter #16208
    Что это и для чего?

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


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

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

    Войти

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

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

    Онлайн чат

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

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