Ambilight PC

(Chioveanu Stelian 332CA)

Introducere

Acest proiect implica crearea un sistem de ambilight pentru laptop/PC utilizand o placa Arduino si LED-uri RGB. Scopul este de a crea o experienta mai captivanta pentru utilizatorii de laptop/PC, prin iluminarea peretelui din spatele dispozitivului în functie de culorile din ecran. Acest lucru se realizeaza prin utilizarea unui program care citeste culorile de pe ecran si trimite informatiile la Arduino pentru a controla culorile LED-urilor. Proiectul este o combinatie de hardware si software, oferind o experienta unica si personalizata pentru utilizatorii de laptop/PC

Descriere generală

La momentul pornirii, ledurile vor afisa un ciclu de culori(mov→turcoaz→mov). La fiecare apasare a butonului se va modifica modul de afisaj dupa cum urmeaza: dupa prima apasare se activeaza modul Bluetooth; dupa cea de-a doua apasare se activeaza modul ambilight; dupa cea de-a treia apasare se va intoarce la primul mod, cel cu ciclul de culori.

Schema bloc contine urmatoarele elemente:

  • Modulul Bluetooth – primeste date(o culoare in format RGB) si o transmite mai departe la arduino
  • Buton switch mode – face switch intre moduri(Bluetooth, spectrum sau ambilight)
  • Banda led – afiseaza culorile primate de la arduino

Hardware Design

Lista de piese:

  • Breadboard
  • Fire Colorate Tata-Tata
  • Modul Bluetooth Serial HC06
  • Buton
  • Rezistente de 1k si 2k
  • Sursa 5V 8A
  • Banda led programabila WS2812B
  • Arduino

Pentru modulul Bluetooth am utilizat un divisor de tensiune(acesta avea nevoie de 3.3V in loc de 5V cat ofera arduino). Pentru conectarea benzii led am utilizat 3 rezistente de 1k in paralele(330ohm).

Software Design

Software-ul dezvoltat pentru acest algoritm utilizeaza mediul de dezvoltare Arduino IDE și biblioteca Fastled.h pentru a controla o banda LED cu 43 de LED-uri.

In acest algoritm, culorile sunt obtinute prin intermediul unei conexiuni Bluetooth/serial si sunt utilizate pentru a da fiecarui LED o valoare anume. Algoritmul parcurge toate cele 43 de LED-uri si le atribuie valori corespunzatoare, in functie de culorile primite.

In esenta, software-ul functioneaza ca un intermediar intre dispozitivul Bluetooth/serial si banda LED, permitand utilizatorului sa controleze culorile afisate pe banda LED.

Pentru partea de ambilight va fi nevoie de un program extern pe nume Prismatik care preia culorile de pe ecran si le trimite prin interfata seriala.

S-a utilizat o intrerupere pe pinul 2, care la apasarea butonului va incrementa variabila “mode” care reprezinta modul de functionare(bluetooth, ambilight, spectrum). Am utilizat un debouncer.

ISR(INT0_vect) {
  if((long)(micros() - lastDebounceTime) >= debounceDelay) {
    mode++;
    lastDebounceTime = micros();
  }
}

In functie de variabila “mode” modul de functionare va fi altul:

void loop() {
  if(mode % 3 == 0){
    TIMSK1 |= (1 << OCIE1A);
    spectrum();
    TIMSK1 &= ~(1 << OCIE1A);
  }
  if(mode % 3 == 1){
    bluetooth();
  }
  if(mode % 3 == 2){
    ambi();
  }
}

Am utilizat un timer pentru o functie delay custom. Acest timer incrementeaza o valoare, asteptand modificarea valorii intr-un while acolo unde aveam nevoie de delay.

ISR(TIMER1_COMPA_vect) {
  if (counter_time > 20000) {
    counter_time = 0;
  }
  counter_time++;
}

Functia “Light_RGB_LED” parseaza culorile primite prin bluetooth:

void Light_RGB_LED(){
  int SP1 = RGB_string.indexOf('.');
  int SP2 = RGB_string.indexOf('.', SP1+1);
  int SP3 = RGB_string.indexOf('.', SP2+1);
  String R = RGB_string.substring(0, SP1);
  String G = RGB_string.substring(SP1+1, SP2);
  String B = RGB_string.substring(SP2+1, SP3);
  LEDS.showColor(CRGB(R.toInt(), G.toInt(), B.toInt()));
}

Functia “spectrum” cicleaza prin diferite culori(de la turcoaz la albastru si mov).

Functia “ambi” este cea pentru ambilight, aceasta preluand valorile de la seriala.

Pentru partea de bluetooth, se asteapta valori de genul (x.x.x) unde x este o valoare intre 0 si 255. Dupa extragerea valorilor, toate ledurile vor primi aceasta valoare.

Rezultate Obţinute

stelian_chioveanu_ambilight_rezultat2.jpeg stelian_chioveanu_final.jpeg

Concluzii

A fost un proiect interesant de care ma voi folosi pe viitor(cu aceasta idee am plecat de la inceput, de a folosi proiectul zilnic).

Download

Bibliografie/Resurse

pm/prj2023/vstoica/ambilight.txt · Last modified: 2023/05/29 00:31 by stelian.chioveanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0