RGB LED שמחליף צבעים באופן רנדומלי

עובדים על פרוייקט? ספרו לכולם על תהליך העבודה. תנו לנו ללמוד מכם!
שלח תגובה
DekelZiv
הודעות: 19
הצטרף: ג' דצמבר 13, 2011 11:56 am
מיקום: כפר סבא

RGB LED שמחליף צבעים באופן רנדומלי

שליחה על ידי DekelZiv »

שלום לכולם!
פיתחתי קוד שמבצע את הנ"ל ע"ג 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
  }


  }
סליחה שיצא מחורבש, אם תתעניינו פנו אלי בפרטי ואשלח לכם למייל גרסה מסודרת.
נ.ב. אני יודע שזה כתוב בצורה חובבנית, אז אל תרדו עלי יותר מדי :-)
DekelZiv
הודעות: 19
הצטרף: ג' דצמבר 13, 2011 11:56 am
מיקום: כפר סבא

Re: RGB LED שמחליף צבעים באופן רנדומלי

שליחה על ידי DekelZiv »

אם שמתם לב, הגבלתי את הערכים של הכחול והירוק, עשיתי זאת כי באופן טבעי הם יותר דומיננטיים. ניתן לשחק עם הערכים ולראות מה יוצא.

דרך אגב- את האיזון בין הצבעים אפשר להשיג גם דרך בחירת נגדים יותר גדולים לכחול ולירוק.
נערך לאחרונה על ידי DekelZiv ב א' ינואר 01, 2012 2:56 pm, נערך פעם 1 בסך הכל.
סמל אישי של משתמש
Alex
מנהל האתר
הודעות: 763
הצטרף: ה' ינואר 28, 2010 8:27 pm

Re: RGB LED שמחליף צבעים באופן רנדומלי

שליחה על ידי Alex »

סידרתי לך את הקוד. אתה יכול להשתמש בכפתור "Code" הנמצא מעל חלון כתיבת ההודעה כדי לסדר את הקוד בצורה יפה.
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
DekelZiv
הודעות: 19
הצטרף: ג' דצמבר 13, 2011 11:56 am
מיקום: כפר סבא

Re: RGB LED שמחליף צבעים באופן רנדומלי

שליחה על ידי DekelZiv »

יופי! תודה!.. אני עדיין לא מצליח למצוא את העמוד שלך בפייסבוק..
סמל אישי של משתמש
Alex
מנהל האתר
הודעות: 763
הצטרף: ה' ינואר 28, 2010 8:27 pm

Re: RGB LED שמחליף צבעים באופן רנדומלי

שליחה על ידי Alex »

מה זאת אומרת?
בכל העמודים של האתר חוץ מעמודי הפורום בצד שמאל למעלה יש קישורים לעמודי הפייסבוק, גוגל+ וטוויטר.
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
DekelZiv
הודעות: 19
הצטרף: ג' דצמבר 13, 2011 11:56 am
מיקום: כפר סבא

Re: RGB LED שמחליף צבעים באופן רנדומלי

שליחה על ידי DekelZiv »

מצאתי. תודה!

מוזר, אבל העמוד לא מופיע בתוצאות החיפוש בפייסבוק. לכן גם לא הצלחתי למצוא...
סמל אישי של משתמש
Alex
מנהל האתר
הודעות: 763
הצטרף: ה' ינואר 28, 2010 8:27 pm

Re: RGB LED שמחליף צבעים באופן רנדומלי

שליחה על ידי Alex »

אצלי הוא מופיע... בשם 4Project, כמו שזה צריך להיות...
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
DekelZiv
הודעות: 19
הצטרף: ג' דצמבר 13, 2011 11:56 am
מיקום: כפר סבא

Re: RGB LED שמחליף צבעים באופן רנדומלי

שליחה על ידי DekelZiv »

מוזר, חיפשתי עכשיו בדיוק את הביטוי (כולל P גדולה) וזה זורק אותי לדברים אחרים..

אבל בוא נעבור לפרטי.
DekelZiv
הודעות: 19
הצטרף: ג' דצמבר 13, 2011 11:56 am
מיקום: כפר סבא

Re: RGB LED שמחליף צבעים באופן רנדומלי

שליחה על ידי DekelZiv »

לאחר רכישת LCD הוספתי תצוגה של הצבעים RGB ב-RT. מצורף הקוד

קוד: בחירת הכל

/* RANDOM CONTINOUS MOVMENT BETWEEN RGB LED COLORS*/
/* writen & debuged by Dekel Ziv 27/12/11 */
/* the circuit: GND of led to GND of uno
   r leg throught 330 ohm resistor to PWM 9 leg of uno
   g leg throught 330 ohm resistor to PWM 10 leg of uno
   b leg throught 330 ohm resistor to PWM 11 leg of uno
*/
#include <stdlib.h>	// for itoa() call 
#include <LiquidCrystal.h> 
LiquidCrystal lcd(7, 6, 2, 3, 4, 5);
void setup() { 
 lcd.begin(16,2);              // start the library  
lcd.setCursor(0,0); 
 
}  

void loop() {

int vec2[3]={random(255),random(130),random(99)};//random vec2
int vec1[3]={random(255),random(130),random(99)};//random vec1
int vec3[3]={234,100,20};//reff vector-random, but constant
int vec4[3]={random(255),random(130),random(99)};//random vec4
int vec5[3]={random(255),random(130),random(99)};//random vec5
int vec6[3]={random(255),random(130),random(99)};//random vec6
char cr;
char cg;
char cb;

            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(11,b);
   analogWrite(10,g);
   analogWrite(9,r);  
  char bufr[5];
	// convert 123 to string [buf]
	;
char bufg[5];
	// convert 123 to string [buf]
	itoa(g, bufg, 10);
char bufb[5];
	// convert 123 to string [buf]
	itoa(b, bufb, 10);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("R:");
   lcd.print(itoa(r, bufr, 10));
   lcd.print (" G:");
   lcd.print(itoa(g, bufg, 10));
   lcd.print (" B:");
   lcd.print(itoa(b, bufb, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer value to a string  
   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(11,b);
   analogWrite(10,g);
   analogWrite(9,r);  
   
  char bufr[5];
	// convert 123 to string [buf]
	;
char bufg[5];
	// convert 123 to string [buf]
	itoa(g, bufg, 10);
char bufb[5];
	// convert 123 to string [buf]
	itoa(b, bufb, 10);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("R:");
   lcd.print(itoa(r, bufr, 10));
   lcd.print (" G:");
   lcd.print(itoa(g, bufg, 10));
   lcd.print (" B:");
   lcd.print(itoa(b, bufb, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer vlue to a string  
  
   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(11,b);
   analogWrite(10,g);
   analogWrite(9,r);  
   
  char bufr[5];
	// convert 123 to string [buf]
	;
char bufg[5];
	// convert 123 to string [buf]
	itoa(g, bufg, 10);
char bufb[5];
	// convert 123 to string [buf]
	itoa(b, bufb, 10);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("R:");
   lcd.print(itoa(r, bufr, 10));
   lcd.print (" G:");
   lcd.print(itoa(g, bufg, 10));
   lcd.print (" B:");
   lcd.print(itoa(b, bufb, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer vlue to a string  
  
   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(11,b);
   analogWrite(10,g);
   analogWrite(9,r);  
   
  char bufr[5];
	// convert 123 to string [buf]
	;
char bufg[5];
	// convert 123 to string [buf]
	itoa(g, bufg, 10);
char bufb[5];
	// convert 123 to string [buf]
	itoa(b, bufb, 10);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("R:");
   lcd.print(itoa(r, bufr, 10));
   lcd.print (" G:");
   lcd.print(itoa(g, bufg, 10));
   lcd.print (" B:");
   lcd.print(itoa(b, bufb, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer vlue to a string  
  
   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(11,b);
   analogWrite(10,g);
   analogWrite(9,r);  
   
 char bufr[5];
	// convert 123 to string [buf]
	;
char bufg[5];
	// convert 123 to string [buf]
	itoa(g, bufg, 10);
char bufb[5];
	// convert 123 to string [buf]
	itoa(b, bufb, 10);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("R:");
   lcd.print(itoa(r, bufr, 10));
   lcd.print (" G:");
   lcd.print(itoa(g, bufg, 10));
   lcd.print (" B:");
   lcd.print(itoa(b, bufb, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer vlue to a string  
   
   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(11,b);
   analogWrite(10,g);
   analogWrite(9,r);  
   
   
  char bufr[5];
	// convert 123 to string [buf]
	;
char bufg[5];
	// convert 123 to string [buf]
	itoa(g, bufg, 10);
char bufb[5];
	// convert 123 to string [buf]
	itoa(b, bufb, 10);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("R:");
   lcd.print(itoa(r, bufr, 10));
   lcd.print (" G:");
   lcd.print(itoa(g, bufg, 10));
   lcd.print (" B:");
   lcd.print(itoa(b, bufb, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer vlue to a string  
   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
  }


  }


 
זה דורש מעט עריכה-ואולי השמטה של כמה שורות מיותרות, אבל היי, זה עובד! :-)
שימו לב להשמה של הפורט לLCD- הסדר קובע מן הסתם, ואני לא יודע אם זה משהו קבוע אצל כל הLCDs
DekelZiv
הודעות: 19
הצטרף: ג' דצמבר 13, 2011 11:56 am
מיקום: כפר סבא

Re: RGB LED שמחליף צבעים באופן רנדומלי

שליחה על ידי DekelZiv »

עוד שיפור קטן: הוספתי חיישן אור- מראה את עוצמת האור כאשר יש אור (על ה-LCD) וכשאין מדליק את הלד (בזמן שהלד דולק הוא מראה בנוסף גם את וקטור המטרה). יש לציין שבשביל ה-VCC של הלד הוצאתי "1" לוגי מאחת היציאות הדיגיטליות והשתמשתי בו כ- VCC- להלן הקוד:

קוד: בחירת הכל

/* RANDOM CONTINOUS MOVMENT BETWEEN RGB LED COLORS*/
/* writen & debuged by Dekel Ziv 27/12/11 */
/* the circuit: GND of led to GND of uno
   r leg throught 330 ohm resistor to PWM 9 leg of uno
   g leg throught 330 ohm resistor to PWM 10 leg of uno
   b leg throught 330 ohm resistor to PWM 11 leg of uno
*/
#include <stdlib.h>	// for itoa() call 
#include <LiquidCrystal.h> 
LiquidCrystal lcd(7, 6, 2, 3, 4, 5);

int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4 
#define btnNONE   5   // read the buttons 
int read_LCD_buttons() {  
  adc_key_in = analogRead(0);      // read the value from the sensor   
  // my buttons when read are centered at thesevalies: 0, 144, 329, 504, 741 
  // we add approx 50 to those values and check to see if we are close  
if (adc_key_in < 10)return btnNONE;  
if ((adc_key_in < 195)&& (adc_key_in> 50))return btnRIGHT;  
if ((adc_key_in < 500)&& (adc_key_in > 195))return btnUP;  
if ((adc_key_in < 700)&& (adc_key_in >500))return btnDOWN;  
if ((adc_key_in < 900)&& (adc_key_in >700))return btnLEFT;  
if ((adc_key_in < 1023)&& (adc_key_in >900))return btnSELECT;  
}  
void setup() { 
 lcd.begin(16,2);              // start the library  
lcd.setCursor(0,0); 
 
}  

void loop() {
  int power=150;
   
beg:analogWrite(11,0);
   analogWrite(10,0);
   analogWrite(9,0);

digitalWrite(8,HIGH);// providing ref V
  int a;
 a=analogRead(A5);//read the value


char bufg[5];
	// convert a to string [buf]
	itoa(a,bufg, 10);
   lcd.print(itoa(a, bufg, 10));//print value
 delay(1000);//delay
 lcd.clear();// clear LCD for next iteration
  if (a>power) {goto beg;} else {goto next;}// check whether there is light
next:
int vec2[3]={random(255),random(130),random(30)};//random vec2
int vec1[3]={random(255),random(130),random(30)};//random vec1
int vec3[3]={234,100,20};//reff vector-random, but constant
int vec4[3]={random(255),random(130),random(30)};//random vec4
int vec5[3]={random(255),random(130),random(30)};//random vec5
int vec6[3]={random(255),random(130),random(30)};//random vec6

            int r=vec3[0];
            int g=vec3[1];
            int b=vec3[2];//initiation of the RGB to reff vec
 while (1) {
    char bufr1[5];
	// convert 123 to string [buf]
	;
char bufg1[5];
	// convert 123 to string [buf]
	itoa(vec1[0], bufg1, 10);
char bufb1[5];
	// convert 123 to string [buf]
	itoa(vec1[1], bufb1, 10);
lcd.clear();
lcd.setCursor(0,1);
lcd.print ("R:");
   lcd.print(itoa(vec1[0], bufr1, 10));
   lcd.print (" G:");
   lcd.print(itoa(vec1[1], bufg1, 10));
   lcd.print (" B:");
   lcd.print(itoa(vec1[2], bufb1, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer value to a string 
                                delay(10); 
          
            
   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(11,b);
   analogWrite(10,g);
   analogWrite(9,r);  
  char bufr[5];
	// convert 123 to string [buf]
	;
char bufg[5];
	// convert 123 to string [buf]
	itoa(g, bufg, 10);
char bufb[5];
	// convert 123 to string [buf]
	itoa(b, bufb, 10);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("R:");
   lcd.print(itoa(r, bufr, 10));
   lcd.print (" G:");
   lcd.print(itoa(g, bufg, 10));
   lcd.print (" B:");
   lcd.print(itoa(b, bufb, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer value to a string  
   delay (10);
      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)
 digitalWrite(8,HIGH);// providing ref V
  
 a=analogRead(A5);//read 
  if (a>power) {analogWrite(11,0);
   analogWrite(10,0);
   analogWrite(9,0);

  goto beg;}  
}
            
 while (1) {
   
    char bufr1[5];
	// convert 123 to string [buf]
	;
char bufg1[5];
	// convert 123 to string [buf]
	itoa(vec2[0], bufg1, 10);
char bufb1[5];
	// convert 123 to string [buf]
	itoa(vec2[1], bufb1, 10);
lcd.clear();
lcd.setCursor(0,1);
lcd.print ("R:");
   lcd.print(itoa(vec2[0], bufr1, 10));
   lcd.print (" G:");
   lcd.print(itoa(vec2[1], bufg1, 10));
   lcd.print (" B:");
   lcd.print(itoa(vec2[2], bufb1, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer value to a string  
          
            delay(10);
   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(11,b);
   analogWrite(10,g);
   analogWrite(9,r);  
   
  char bufr[5];
	// convert 123 to string [buf]
	;
char bufg[5];
	// convert 123 to string [buf]
	itoa(g, bufg, 10);
char bufb[5];
	// convert 123 to string [buf]
	itoa(b, bufb, 10);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("R:");
   lcd.print(itoa(r, bufr, 10));
   lcd.print (" G:");
   lcd.print(itoa(g, bufg, 10));
   lcd.print (" B:");
   lcd.print(itoa(b, bufb, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer vlue to a string  
  
   delay (10);
      if (r==vec2[0] && g==vec2[1] && b==vec2[2]) break;
 digitalWrite(8,HIGH);// providing ref V
  
 a=analogRead(A5);//read 
  if (a>power) {analogWrite(11,0);
   analogWrite(10,0);
   analogWrite(9,0);

  goto beg;}  

  }
  
            
 while (1) {
   
    char bufr1[5];
	// convert 123 to string [buf]
	;
char bufg1[5];
	// convert 123 to string [buf]
	itoa(vec4[0], bufg1, 10);
char bufb1[5];
	// convert 123 to string [buf]
	itoa(vec4[1], bufb1, 10);
lcd.clear();
lcd.setCursor(0,1);
lcd.print ("R:");
   lcd.print(itoa(vec4[0], bufr1, 10));
   lcd.print (" G:");
   lcd.print(itoa(vec4[1], bufg1, 10));
   lcd.print (" B:");
   lcd.print(itoa(vec4[2], bufb1, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer value to a string  
          delay(10);
            
   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(11,b);
   analogWrite(10,g);
   analogWrite(9,r);  
   
  char bufr[5];
	// convert 123 to string [buf]
	;
char bufg[5];
	// convert 123 to string [buf]
	itoa(g, bufg, 10);
char bufb[5];
	// convert 123 to string [buf]
	itoa(b, bufb, 10);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("R:");
   lcd.print(itoa(r, bufr, 10));
   lcd.print (" G:");
   lcd.print(itoa(g, bufg, 10));
   lcd.print (" B:");
   lcd.print(itoa(b, bufb, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer vlue to a string  
  
   delay (10);
      if (r==vec4[0] && g==vec4[1] && b==vec4[2]) break;
digitalWrite(8,HIGH);// providing ref V
  
 a=analogRead(A5);//read 
  if (a>power) {analogWrite(11,0);
   analogWrite(10,0);
   analogWrite(9,0);

  goto beg;}  

  }         
  
           
 while (1) {
   
    char bufr1[5];
	// convert 123 to string [buf]
	;
char bufg1[5];
	// convert 123 to string [buf]
	itoa(vec5[0], bufg1, 10);
char bufb1[5];
	// convert 123 to string [buf]
	itoa(vec5[1], bufb1, 10);
lcd.clear();
lcd.setCursor(0,1);
lcd.print ("R:");
   lcd.print(itoa(vec5[0], bufr1, 10));
   lcd.print (" G:");
   lcd.print(itoa(vec5[1], bufg1, 10));
   lcd.print (" B:");
   lcd.print(itoa(vec5[2], bufb1, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer value to a string  
          
            delay(10);
   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(11,b);
   analogWrite(10,g);
   analogWrite(9,r);  
   
  char bufr[5];
	// convert 123 to string [buf]
	;
char bufg[5];
	// convert 123 to string [buf]
	itoa(g, bufg, 10);
char bufb[5];
	// convert 123 to string [buf]
	itoa(b, bufb, 10);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("R:");
   lcd.print(itoa(r, bufr, 10));
   lcd.print (" G:");
   lcd.print(itoa(g, bufg, 10));
   lcd.print (" B:");
   lcd.print(itoa(b, bufb, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer vlue to a string  
  
   delay (10);
      if (r==vec5[0] && g==vec5[1] && b==vec5[2]) break;
 digitalWrite(8,HIGH);// providing ref V
  
 a=analogRead(A5);//read 
  if (a>power) {analogWrite(11,0);
   analogWrite(10,0);
   analogWrite(9,0);

  goto beg;}  

  }
           
 while (1) {
   
    char bufr1[5];
	// convert 123 to string [buf]
	;
char bufg1[5];
	// convert 123 to string [buf]
	itoa(vec6[0], bufg1, 10);
char bufb1[5];
	// convert 123 to string [buf]
	itoa(vec6[1], bufb1, 10);
lcd.clear();
lcd.setCursor(0,1);
lcd.print ("R:");
   lcd.print(itoa(vec6[0], bufr1, 10));
   lcd.print (" G:");
   lcd.print(itoa(vec6[1], bufg1, 10));
   lcd.print (" B:");
   lcd.print(itoa(vec6[2], bufb1, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer value to a string  
          
            delay(10);
   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(11,b);
   analogWrite(10,g);
   analogWrite(9,r);  
   
 char bufr[5];
	// convert 123 to string [buf]
	;
char bufg[5];
	// convert 123 to string [buf]
	itoa(g, bufg, 10);
char bufb[5];
	// convert 123 to string [buf]
	itoa(b, bufb, 10);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("R:");
   lcd.print(itoa(r, bufr, 10));
   lcd.print (" G:");
   lcd.print(itoa(g, bufg, 10));
   lcd.print (" B:");
   lcd.print(itoa(b, bufb, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer vlue to a string  
   
   delay (10);
      if (r==vec6[0] && g==vec6[1] && b==vec6[2]) break;
digitalWrite(8,HIGH);// providing ref V
  
 a=analogRead(A5);//read 
  if (a>power) {analogWrite(11,0);
   analogWrite(10,0);
   analogWrite(9,0);

  goto beg;}  
  
}


 while (1) {
   
    char bufr1[5];
	// convert 123 to string [buf]
	;
char bufg1[5];
	// convert 123 to string [buf]
	itoa(vec3[0], bufg1, 10);
char bufb1[5];
	// convert 123 to string [buf]
	itoa(vec3[1], bufb1, 10);
lcd.clear();
lcd.setCursor(0,1);
lcd.print ("R:");
   lcd.print(itoa(vec3[0], bufr1, 10));
   lcd.print (" G:");
   lcd.print(itoa(vec3[1], bufg1, 10));
   lcd.print (" B:");
   lcd.print(itoa(vec3[2], bufb1, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer value to a string  
          
            delay(10);
   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(11,b);
   analogWrite(10,g);
   analogWrite(9,r);  
   
   
  char bufr[5];
	// convert 123 to string [buf]
	;
char bufg[5];
	// convert 123 to string [buf]
	itoa(g, bufg, 10);
char bufb[5];
	// convert 123 to string [buf]
	itoa(b, bufb, 10);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("R:");
   lcd.print(itoa(r, bufr, 10));
   lcd.print (" G:");
   lcd.print(itoa(g, bufg, 10));
   lcd.print (" B:");
   lcd.print(itoa(b, bufb, 10));// prins the values of rgb led by usinf "itoa" function
                                 //itoa can convert an integer vlue to a string  
   delay (10);
      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
digitalWrite(8,HIGH);// providing ref V
  
 a=analogRead(A5);//read 
  if (a>power) {analogWrite(11,0);
   analogWrite(10,0);
   analogWrite(9,0);

  goto beg;}  

  }
goto next;
  }
  
  



 
הקוד אולי קצת מחורבש ויש בו אולי כמה קטעים מיותרים (עקב השילד LCD בו אני משתמש.
תהנו!!
שלח תגובה