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

עובדים על פרוייקט? ספרו לכולם על תהליך העבודה. תנו לנו ללמוד מכם!

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

הודעהעל ידי DekelZiv » ו' דצמבר 30, 2011 11:28 am

שלום לכולם!
פיתחתי קוד שמבצע את הנ"ל ע"ג 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 » ו' דצמבר 30, 2011 11:32 am

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

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

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

הודעהעל ידי Alex » ו' דצמבר 30, 2011 12:59 pm

סידרתי לך את הקוד. אתה יכול להשתמש בכפתור "Code" הנמצא מעל חלון כתיבת ההודעה כדי לסדר את הקוד בצורה יפה.
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
סמל אישי של המשתמש
Alex
מנהל האתר
 
הודעות: 726
הצטרף: ה' ינואר 28, 2010 8:27 pm

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

הודעהעל ידי DekelZiv » ו' דצמבר 30, 2011 1:04 pm

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

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

הודעהעל ידי Alex » ו' דצמבר 30, 2011 1:26 pm

מה זאת אומרת?
בכל העמודים של האתר חוץ מעמודי הפורום בצד שמאל למעלה יש קישורים לעמודי הפייסבוק, גוגל+ וטוויטר.
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
סמל אישי של המשתמש
Alex
מנהל האתר
 
הודעות: 726
הצטרף: ה' ינואר 28, 2010 8:27 pm

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

הודעהעל ידי DekelZiv » ו' דצמבר 30, 2011 1:57 pm

מצאתי. תודה!

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

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

הודעהעל ידי Alex » ו' דצמבר 30, 2011 2:13 pm

אצלי הוא מופיע... בשם 4Project, כמו שזה צריך להיות...
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
סמל אישי של המשתמש
Alex
מנהל האתר
 
הודעות: 726
הצטרף: ה' ינואר 28, 2010 8:27 pm

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

הודעהעל ידי DekelZiv » ו' דצמבר 30, 2011 2:30 pm

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

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

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

הודעהעל ידי DekelZiv » ה' אפריל 19, 2012 10:20 am

לאחר רכישת 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 » ב' אוקטובר 01, 2012 6:18 am

עוד שיפור קטן: הוספתי חיישן אור- מראה את עוצמת האור כאשר יש אור (על ה-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 בו אני משתמש.
תהנו!!
DekelZiv
 
הודעות: 19
הצטרף: ג' דצמבר 13, 2011 11:56 am
מיקום: כפר סבא


חזור אל פרוייקטים שלכם

Jump box

מי מחובר

משתמשים הגולשים בפורום זה: CCBot [Bot], Yandex [Bot]