» » » Цветовая палитра с функцией рандом на 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] (скачиваний: 63)

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




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

Устройство считывания отпечатков пальца

Парктроник своими руками

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

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

    • smilesmilesxaxaokdontknowyahoonea
      bossscratchfoolyesyes-yesaggressivesecret
      sorrydancedance2dance3pardonhelpdrinks
      stopfriendsgoodgoodgoodwhistleswoontongue
      smokeclappingcraydeclarederisivedon-t_mentiondownload
      heatirefullaugh1mdameetingmoskingnegative
      not_ipopcornpunishreadscarescaressearch
      tauntthank_youthisto_clueumnikacuteagree
      badbeeeblack_eyeblum3blushboastboredom
      censoredpleasantrysecret2threatenvictoryyusun_bespectacled
      shokrespektlolprevedwelcomekrutoyya_za
      ya_dobryihelperne_huliganne_othodifludbanclose
3 комментария
  1. Nruter
    Что это и для чего?
  2. Антон Мартьянов Автор
    Эта палитра нужна для выбора определённого оттенка для проектов с подсветкой
    1. Nruter
      Ок, понятно.

Добрый день, Гость!


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

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

Войти

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

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

Онлайн чат

Опрос
Сайту нужен форум, сообщество?

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

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