(Chioveanu Stelian 332CA)
Schema bloc contine urmatoarele elemente:
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).
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.
Prismatik: https://github.com/psieg/Lightpack/releases