Barevná RGB lampa s Arduinem a LDR

Víte, že můžeme vytvářet světlo různých barev s RGB LED diodou a pomocí toho ozvláštnit místnost? V tomto návodu uvidíte, jak jednoduše vytvořit Arduino barevnou RGB lampu, která bude měnit svoji barvu podle množství světla v místnosti.

Každá barva je ve skutečnosti složena ze tří složek – červená (Red), zelená (Green) a modrá (Blue). Pokud tedy budeme tyto barvy generovat s různou intenzitou, můžeme tak namíchat jakoukoliv barvu. A zmíněné míchání lze s Arduinem realizovat pomocí PWM řízení, pro které získáme vstupní údaje z připojeného LDR, tedy fotorezistoru.

Arduino Color Mixing Lamp using RGB and LDR

Potřebné součástky:

  • Arduino UNO deska
  • Propojovací nepájivé pole
  • 3x rezistor 220 ohmů
  • 3x rezistor 1k ohm
  • Propojovací drátky
  • 3x fotorezistor
  • 1x RGB LED dioda

Fotorezistor (LDR)

Pro snímání intenzity okolního světla budeme používat fotorezistor. Jedná se o součástku, která je vyrobená z fotocitlivého polovodiče, který zapříčiní změnu odporu na výstupu LDR s každou změnou množství dopadajícího světla.
V tomto návodu jsou použity 3 fotorezistory pro možnost ovlivnit každou ze tří složek RGB individuálně.

Various types of LDR

RGB LED dioda

Nejčastěji se využívají 2 typy RGB LED diod, kdy jeden má společnou katodu (společný záporný pól) a druhý společnou anodu (společný kladný pól). U typu CC (společná katoda, tedy společný záporný pól) pomocí zbylých tří kladných pólů řídíme kladným napětím svit každé se složek nezávisle na sobě.

RGB LEDRGB LED Common Anode pinout

Schéma zapojení

Arduino Color Mixing Lamp Circuit diagram using RGB and LDR

Popis funkce

Díky tomu, že používáme tři fotorezistory pro ovládání každé ze složek RGB, tak po zapojení obvodu a nahrání kódu do Arduino desky budeme pozorovat následující. Na začátku budou fotorezistory přijímat podobné množství světla a LED dioda tedy bude svítit bílou barvou. Pokud ale zakryjeme jeden a více fotorezistoru, barevné složky se začnou míchat a budeme pozorovat různé kombinace barev na LED diodě.

Arduino Color Mixing Lamp in action using RGB and LDR

Zdrojový kód

const byte red_sensor_pin = A0;
const byte green_sensor_pin = A1;
const byte blue_sensor_pin = A2;
const byte green_led_pin = 9;
const byte blue_led_pin = 10;
const byte red_led_pin = 11;

unsigned int red_led_value      = 0;
unsigned int blue_led_value     = 0;
unsigned int green_led_value    = 0;
unsigned int red_sensor_value   = 0;
unsigned int blue_sensor_value  = 0;
unsigned int green_sensor_value = 0;

void setup() {
    pinMode(red_led_pin,OUTPUT);
    pinMode(blue_led_pin,OUTPUT);
    pinMode(green_led_pin,OUTPUT);
    Serial.begin(9600);
}

void loop() {
    red_sensor_value = analogRead(red_sensor_pin);
    delay(50);
    blue_sensor_value = analogRead(blue_sensor_pin);
    delay(50);
    green_sensor_value = analogRead(green_sensor_pin);
    // print those values onto the serial monitor
    Serial.println("Raw Sensor Values:");
    Serial.print("\t Red: ");
    Serial.print(red_sensor_value);
    Serial.print("\t Blue: ");
    Serial.print(blue_sensor_value);
    Serial.print("\t Green: ");
    Serial.println(green_sensor_value);
    // convert from 0-1023 to 0-255
    red_led_value   = red_sensor_value / 4;   // define Red LED
    blue_led_value  = blue_sensor_value / 4;  // define Blue LED
    green_led_value = green_sensor_value / 4; // define Green LEd
    // print mapped values to serial monitor
    Serial.println("Mapped Sensor Values:");
    Serial.print("\t Red: ");
    Serial.print(red_led_value);
    Serial.print("\t Blue: ");
    Serial.print(blue_led_value);
    Serial.print("\t Green: ");
    Serial.println(green_led_value);
    // use analogWrite() to set output for RGB LED
    analogWrite(red_led_pin,red_led_value);   // indicate red LED
    analogWrite(blue_led_pin,blue_led_value);  // indicate blue LED
    analogWrite(green_led_pin,green_led_value); // indicate green 
}

Video

Převzato a přeloženo z:
https://circuitdigest.com/microcontroller-projects/arduino-color-mixing-lamp

Arduino Uno, Mega, Senzory, Moduly za

VÝHODNOU CENU

Luboš