PDA

Volledige versie bekijken : HEX naar RGB


Maxcim
%Europe/Berlin %671 %2010, 16:07
Hallo,

Wij zijn op school bezig met een project waarbij we met de webcam iemands emotie aflezen.
Dit gebeurt allemaal in AS3

Nu hebben we er een Arduino aan gekoppeld die aan de hand van de emotie een 3 color LED aanstuurd.
Dus bijvoorbeeld als je boos bent is die rood en als je blij bent blauw.

Het enige wat we nu nog moeten doen is de Hex kleur naar RGB omzetten en doorsturen naar de LED.

Hier staan de kleuren die gebruikt worden bij de emoties:


var happyKleuren:Array = ["090230", "162D22", "020D19", "282635", "064411"];
var sadKleuren:Array = ["D2E1F7", "CAF3FF", "91EBED", "279393", "B9EAE9"];
var angryKleuren:Array = ["990499", "600453", "B28AAF", "AA3F87", "7C0E5D"];
var suprisedKleuren:Array = ["3EFF55", "00FF00", "FFA300", "F9FF00", "FFD400"];
var ambientKleuren:Array = ["224172", "728287", "1E3838", "B9B9BA", "4E6D6B"];
var kleur:String = "00FF00";


Hieronder bevat "kleur" een Hex getal,
hoe krijg ik dit omgezet naar de RGB code?


//verander licht
function changeColor(emotie):void{
//kies kleur
var randomNumber2:int = Math.round(Math.random() * (5 - 0)) + 0;

switch (emotie) {
case "happy":
// "kleur" hieronder bevat dus een Hex getal dat naar RGB moet
kleur = happyKleuren[randomNumber2];

ledState9=0; // hier moet ipv de "0" de RGB code
ledState10=0; // hier moet ipv de "0" de RGB code
ledState11=0; // hier moet ipv de "0" de RGB code

break;

case "sad":
kleur = sadKleuren[randomNumber2];

ledState9=0; // hier moet ipv de "0" de RGB code
ledState10=0; // hier moet ipv de "0" de RGB code
ledState11=0; // hier moet ipv de "0" de RGB code

break;

case "suprised":
kleur = suprisedKleuren[randomNumber2];

ledState9=0; // hier moet ipv de "0" de RGB code
ledState10=0; // hier moet ipv de "0" de RGB code
ledState11=0; // hier moet ipv de "0" de RGB code

break;

case "angry":
kleur = angryKleuren[randomNumber2];

ledState9=0; // hier moet ipv de "0" de RGB code
ledState10=0; // hier moet ipv de "0" de RGB code
ledState11=0; // hier moet ipv de "0" de RGB code

break;

case "ambient":
kleur = ambientKleuren[randomNumber2];

ledState9=0; // hier moet ipv de "0" de RGB code
ledState10=0; // hier moet ipv de "0" de RGB code
ledState11=0; // hier moet ipv de "0" de RGB code

break;

default:
kleur = ambientKleuren[randomNumber2];
}

//interface aanpassen
var doorstuurKleur = "0x" + kleur;
var tintEffect:Color = new Color();
tintEffect.setTint(doorstuurKleur, 1);
hoofdMenu.kleurMonitor.transform.colorTransform = tintEffect;
//arduino.writeDigitalPin(ledPin9, ledState9);
arduino.writeAnalogPin(ledPin9, ledState9);
arduino.writeAnalogPin(ledPin10, ledState10);
arduino.writeAnalogPin(ledPin11, ledState11);
colorToFile()
}


Wij komen er echt niet uit.

Alvast bedankt voor de hulp,
Maxcim

Nidd
%Europe/Berlin %675 %2010, 16:12
Hey!

rood = kleur >> 16 & 0xFF;
groen = kleur >> 8 & 0xFF;
blauw = kleur & 0xFF;

Grtz,
Niels.

Maxcim
%Europe/Berlin %691 %2010, 16:36
Het wil ons maar niet lukken om de code goed te krijgen

kleur = happyKleuren[randomNumber2];

// hoe krijgen we de Hex code die hierboven in "kleur" staat op de goede plek hieronder?

ledState9=0; // hier moet ipv de "0" de RGB code
ledState10=0; // hier moet ipv de "0" de RGB code
ledState11=0; // hier moet ipv de "0" de RGB code

Nidd
%Europe/Berlin %692 %2010, 16:37
Hey,

Welke waarden wil je precies in de ledState properties hebben? Geef 'ns een voorbeeld.

Grtz,
Niels.

Maxcim
%Europe/Berlin %698 %2010, 16:45
Hey,

Welke waarden wil je precies in de ledState properties hebben? Geef 'ns een voorbeeld.

Grtz,
Niels.

Oke,

stel dat "kleur" de eerste waarde van de "happykleuren" bevat, dus 090230.

Dan moeten de ledStates de volgende RGB codes doorkrijgen :

ledState9=9;
ledState10=2;
ledState11=48;

Elke ledState verstuurd de waarde naar een LED via Arduino.
De 3 LEDs samen maken dan de kleur.

9, 10 & 11 staan overigs voor de poortnummers van arduino die we gebruiken.

Net zoals deze converter eigenlijk doet maar dan automatisch in AS3:
http://www.translatum.gr/converter/hexadecimal.htm

Nidd
%Europe/Berlin %702 %2010, 16:51
Dat gaf ik toch aan?

ledState9 = kleur >> 16 & 0xFF;
ledState10 = kleur >> 8 & 0xFF;
ledState11 = kleur & 0xFF;
Of begrijp ik het verkeerd?

Niels.

Maxcim
%Europe/Berlin %709 %2010, 17:01
Ohja sorry, ik las het niet goed.

Morgen als ik op school ben ga ik het meteen proberen.

Hoop dat het werkt, dan heb je ons echt geholpen :)

Bedankt alvast en ik laat het weten morgen,

Groet,
Maxcim

Maxcim
%Europe/Berlin %426 %2010, 10:14
Jow het werkt!!

Ik moest er alleen dit van maken:


ledState9 = happyKleuren[randomNumber2] >> 16 & 0xFF;
ledState10 = happyKleuren[randomNumber2] >> 8 & 0xFF;
ledState11 = happyKleuren[randomNumber2] & 0xFF;

Bedankt voor je hulp! :D
We hebben ons project hiermee voldoende afgerond:D:D:D