RGB LED שמחליף צבעים באופן רנדומלי
נשלח: ו' דצמבר 30, 2011 11:28 am
שלום לכולם!
פיתחתי קוד שמבצע את הנ"ל ע"ג UNO. הרעיון מאוד פשוט: לקבוע וקטור רפרנס אליו הלד חוזר אחרי כל איטרציה ובין לבין ליצור עוד מספר וקטורים אקראיים שהלד מתביית עליהם כחלק מהתוכנית. מצורף הקוד למעוניינים:
סליחה שיצא מחורבש, אם תתעניינו פנו אלי בפרטי ואשלח לכם למייל גרסה מסודרת.
נ.ב. אני יודע שזה כתוב בצורה חובבנית, אז אל תרדו עלי יותר מדי![Smile :-)](./images/smilies/icon_e_smile.gif)
פיתחתי קוד שמבצע את הנ"ל ע"ג UNO. הרעיון מאוד פשוט: לקבוע וקטור רפרנס אליו הלד חוזר אחרי כל איטרציה ובין לבין ליצור עוד מספר וקטורים אקראיים שהלד מתביית עליהם כחלק מהתוכנית. מצורף הקוד למעוניינים:
קוד: בחירת הכל
/* RANDOM CONTINOUS MOVMENT BETWEEN RGB LED COLORS*/
/* the circuit: GND of led to GND of uno
r leg throught 330 ohm resistor to PWM 3 leg of uno
g leg throught 330 ohm resistor to PWM 5 leg of uno
b leg throught 330 ohm resistor to PWM 6 leg of uno
*/
void setup() {
// no setup is needed
}
void loop() {
int vec2[3]={random(255),random(148),random(40)};//random vec2
int vec1[3]={random(255),random(148),random(40)};//random vec1
int vec3[3]={234,126,56};//reff vector-random, but constant
int vec4[3]={random(255),random(148),random(40)};//random vec4
int vec5[3]={random(255),random(148),random(40)};//random vec5
int vec6[3]={random(255),random(148),random(40)};//random vec6
int r=vec3[0];
int g=vec3[1];
int b=vec3[2];//initiation of the RGB to reff vec
while (1) {
if (r>vec1[0]) {r--;} else
if (r<vec1[0]) {r++;} else { r=r;}
if (g>vec1[1]) {g--;} else
if (g<vec1[1]) {g++;} else { g=g;}
if (b>vec1[2]) {b--;} else
if (b<vec1[2]) {b++;} else { b=b;}
analogWrite(6,b);
analogWrite(5,g);
analogWrite(3,r);
delay (15);
if (r==vec1[0] && g==vec1[1] && b==vec1[2]) break;//this loop zooms the RGB integers to the target vector &output the change with delay
//(repeats for all vectors one after the other)
}
while (1) {
if (r>vec2[0]) {r--;} else
if (r<vec2[0]) {r++;} else { r=r;}
if (g>vec2[1]) {g--;} else
if (g<vec2[1]) {g++;} else { g=g;}
if (b>vec2[2]) {b--;} else
if (b<vec2[2]) {b++;} else { b=b;}
analogWrite(6,b);
analogWrite(5,g);
analogWrite(3,r);
delay (15);
if (r==vec2[0] && g==vec2[1] && b==vec2[2]) break;
}
while (1) {
if (r>vec4[0]) {r--;} else
if (r<vec4[0]) {r++;} else { r=r;}
if (g>vec4[1]) {g--;} else
if (g<vec4[1]) {g++;} else { g=g;}
if (b>vec4[2]) {b--;} else
if (b<vec4[2]) {b++;} else { b=b;}
analogWrite(6,b);
analogWrite(5,g);
analogWrite(3,r);
delay (15);
if (r==vec4[0] && g==vec4[1] && b==vec4[2]) break;
}
while (1) {
if (r>vec5[0]) {r--;} else
if (r<vec5[0]) {r++;} else { r=r;}
if (g>vec5[1]) {g--;} else
if (g<vec5[1]) {g++;} else { g=g;}
if (b>vec5[2]) {b--;} else
if (b<vec5[2]) {b++;} else { b=b;}
analogWrite(6,b);
analogWrite(5,g);
analogWrite(3,r);
delay (15);
if (r==vec5[0] && g==vec5[1] && b==vec5[2]) break;
}
while (1) {
if (r>vec6[0]) {r--;} else
if (r<vec6[0]) {r++;} else { r=r;}
if (g>vec6[1]) {g--;} else
if (g<vec6[1]) {g++;} else { g=g;}
if (b>vec6[2]) {b--;} else
if (b<vec6[2]) {b++;} else { b=b;}
analogWrite(6,b);
analogWrite(5,g);
analogWrite(3,r);
delay (15);
if (r==vec6[0] && g==vec6[1] && b==vec6[2]) break;
}
while (1) {
if (r>vec3[0]) {r--;} else
if (r<vec3[0]) {r++;} else { r=r;}
if (g>vec3[1]) {g--;} else
if (g<vec3[1]) {g++;} else { g=g;}
if (b>vec3[2]) {b--;} else
if (b<vec3[2]) {b++;} else { b=b;}
analogWrite(6,b);
analogWrite(5,g);
analogWrite(3,r);
delay (15);
if (r==vec3[0] && g==vec3[1] && b==vec3[2]) break;//the last loop returns the RGB integers to the refference vector-this is critical
// so their won't be any "jumps" in colors
}
}
נ.ב. אני יודע שזה כתוב בצורה חובבנית, אז אל תרדו עלי יותר מדי
![Smile :-)](./images/smilies/icon_e_smile.gif)