|
Main Links:
Final Projects
|
Main /
GroupLuminous
Concept
A dress that changes color. We are using fiber optics and tri-color LEDs to modulate the color of the dress according to input from a thermistor. ![]() ![]()
int redpin=9; int greenpin=10; int bluepin=11; int redP=3; int greenP=6; int blueP=5; int thermistorswitch=7; int spectrumswitch=12; int onswitch=13; int redVal=255; int greenVal=0; int blueVal=0; int redVal2=255; int greenVal2=0; int blueVal2=0; void setup(){ pinMode(redpin,OUTPUT); pinMode( bluepin,OUTPUT); pinMode(greenpin,OUTPUT); pinMode(thermistorswitch,INPUT); pinMode(spectrumswitch,INPUT); pinMode(spectrumswitch,OUTPUT); thermistor=analogRead(3); Serial.begin(9600); } void loop(){ if (digitalRead(spectrumswitch)==HIGH){
i += 1; // Increment counter
if (i < 256) // First phase of fades
{
greenVal += 1; // Green up, resulting color: yellow
}
else if (i < 511) // Second phase of fades
{
redVal -= 1; // Red down, resulitng color: green
}
else if (i < 766) // Third phase of fades
{
blueVal += 1; // Blue up, resulitng color: cyan
}
else if (i<1021)
{
greenVal -=1; //Green down, resulting color: blue
}
else if (i<1276)
{
redVal +=1; //red up, resulting color: magenta
}
else if (i<1531)
{
greenVal +=1;
}
else if (i<1785)
{
blueVal -=1;
greenVal -=1;
}
else // Re-set the counter, and start the fades again
{
i = 0;
redVal = 255;
blueVal = 0;
greenVal = 0;
}
analogWrite(redP,redVal);
analogWrite(blueP,blueVal);
analogWrite(greenP,greenVal);
}
if(digitalRead(thermistorswitch)==HIGH){
thermistor=analogRead(3);
redVal2 = intRanger(85,107,100,255,thermistor);
blueVal2=255-redVal2;
analogWrite(redP,redVal2);
analogWrite(blueP,blueVal2);
analogWrite(greenP,greenVal2);
}
if(digitalRead(thermistorswitch)==LOW){
redVal2=120;
blueVal2=0;
greenVal2=120;
}
if (digitalRead(onswitch)==HIGH){
analogWrite(redP,redVal);
analogWrite(blueP,blueVal);
analogWrite(greenP,greenVal);
}
} int intRanger( int originalMin, int originalMax, int newMin, int newMax, int currentValue) { long zeroRefOriginalMax =0;
long zeroRefNewMax = 0;
long zeroRefCurVal = 0;
int rangedValue = 0;
// Check for out of range currentValues
if (currentValue < originalMin) {
currentValue = originalMin;
}
if (currentValue > originalMax) {
currentValue = originalMax;
}
// Zero Refference the values
zeroRefOriginalMax = originalMax - originalMin;
zeroRefNewMax = newMax - newMin;
zeroRefCurVal = currentValue - originalMin;
// Check for negative values and 0 max ranges
if ( (zeroRefNewMax < 1) || (zeroRefOriginalMax < 1) || (originalMin < 0) || (originalMax < 1) || (newMin < 0) || (newMax < 1) || (currentValue < 0) ) {
return 0;
}
rangedValue = ( (zeroRefCurVal * zeroRefNewMax) / zeroRefOriginalMax ) + newMin ;
return rangedValue;
}
![]()
![]()
![]()
![]()
![]() |