Blinking LED next level ! Christmas lights ! - Arduino for beginners

Discutii despre placile de dezvoltare compatibile Arduino
User avatar
Levy
Gold User
Posts: 1541
Joined: 02 Oct 2013 15:07
Location: ABSURDISTAN

Blinking LED next level ! Christmas lights ! - Arduino for beginners

Unread postby Levy » 10 Dec 2021 00:25

M-am tot gandit cum pot acapara un copil de 14 ani sa puna mana pe letcon si sa cositoreasca diverse piese, ca sa se obisnuieasca cu folosirea acestuia si ca sa-si faca putina dexteritate, poate-i va fi de folos vreodata.
M-am gandit sa-l implic intr-un proiect care sa-i placa. Si am reusit.
I-am spus ca in acest an pe unul din geamuri o sa ne facem, o perdea luminoasa, din leduri RGB, cu un arduino.
A fost incantat de idee, asa ca punct ochit, punct lovit. :haha: :haha:

phpBB [video]


Lipirea a aproape 100 de leduri RGB, care fiecare are 4 terminale, de firicele subtiri scoase din cablu UTP vechi nefolosit, nu e chiar un lucru simplu pentru un copil, insa acesta l-a si ambitionat. Bineinteles nu a facut el toate cele aproape 400 de lipituri, iar partea electronica am lipit-o eu, pentru ca am vrut sa-l fac destul de inghesuit, lucru pe care l-am si reusit in final.

Problema montajului in acest moment este faptul ca este controlat de un arduino nano, in momentul in care o sa am putin timp liber o sa-l schimb cu un mega, si acesta are doar 6 pini PWM, cu care putem face efecte de fade down/up, insa pentru primul test este ok.

Nu am reusit sa fac acest efect pe pinii analogici, desii credeam ca va functiona si pe acelea. :haha:

Spor la bricolat, si daca nu apar pana la Craciun pe aici, va doresc Craciun Fericit !
Dacă ai tăiat și ultimul copac, ai otrăvit și ultimul râu și ai prins și ultimul pește, ai să fi uimit să constați că banii nu sunt comestibili !

Image
User avatar
Levy
Gold User
Posts: 1541
Joined: 02 Oct 2013 15:07
Location: ABSURDISTAN

Re: Blinking LED next level ! Christmas lights ! - Arduino for beginners

Unread postby Levy » 11 Dec 2021 14:15

Materialele folosite pentru acest mic proiect sint urmatoarele.

- Cablu UTP vechi pe care l-am recuperat din vechea retea locala a casei.
- 12 siruri a 8 leduri pe sir, care inseamna 8x12 leduri RGB, cumparate de pe aliexpress. 100 de bucati cumparate la

Image

- Un arduino Nano, dar acesta in functie de timpul liber am sa-l inlociesc cu un mega, probabil intre sarbatori sau dupa, pana atunci nu o sa am timp de nimic.

Image

- Alimentare de 5V pentru Arduino

Image

- 12 x bucati IRF530N tranzistori mosfet, 20 de bucat cumparate la

Image

- o placa de prototipare fara cositorire, (breadboard) acesta va fi inlocuit cu un pcb universal, i-l folosesc doar pana fac versiunea finala

Image

- 12 bucati rezistoare de 680 ohmi, 100 de bucati cumparate la

Image

- 2 bucati placa prototipare 2x8 cm, modelul care se cositoreste, momentan folosit doar 1 bucata pentru mosfeti, cealalta va inlocui breadboardul

Image

- 6 bucati capete terminale cu 2 poli, 20 de bucati cumparate la

Image


Codul care se incarca in Arduino via arduino IDE este urmatorul:

Code: Select all

//String 1
#define pinR1 11
#define pinG1 10
#define pinB1 9
 
//String 2
#define pinR2 6
#define pinG2 5         
#define pinB2 3
 
//String 3
#define pinR3 A0
#define pinG3 A1
#define pinB3 A2
 
//String 4
#define pinR4 A3
#define pinG4 A4         
#define pinB4 A5
 
 
void setup() {
 
  pinMode(pinR1, OUTPUT);
  pinMode(pinG1, OUTPUT);
  pinMode(pinB1, OUTPUT);
  pinMode(pinR2, OUTPUT);
  pinMode(pinG2, OUTPUT);
  pinMode(pinB2, OUTPUT);
  pinMode(pinR3, OUTPUT);
  pinMode(pinG3, OUTPUT);
  pinMode(pinB3, OUTPUT);
  pinMode(pinR4, OUTPUT);
  pinMode(pinG4, OUTPUT);
  pinMode(pinB4, OUTPUT);
}
 
void loop()
{
  Anim1(150,15);
  Anim2(200,40);
  Anim3(250,40);
  Anim4(200,40);
  Anim5(250,20);
  Anim6(3,3);
  Anim7(5,1);
}                   
 
 
void Anim1(int wait, int durata)
{
  for(int d = 1; d < durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,255,0,0);
         delay(wait);
         Led(r,0,0,0);
       }
     }
  for(int d = 1; d <= durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,0,255,0);
         delay(wait);
         Led(r,0,0,0);
       }
     }
  for(int d = 1; d <= durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,0,0,255);
         delay(wait);
         Led(r,0,0,0);
       }
     }
  for(int d = 1; d <= durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,255,0,255);
         delay(wait);
         Led(r,0,0,0);
       }
     }
  for(int d = 1; d <= durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,0,255,255);
         delay(wait);
         Led(r,0,0,0);
       }
     }
  for(int d = 1; d <= durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,255,255,0);
         delay(wait);
         Led(r,0,0,0);
       }
     }
  for(int d = 1; d <= durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,255,255,255);
         delay(wait);
         Led(r,0,0,0);
       }
     }
}
 
void Anim2(int wait, int rep)
{
  for(int i = 0; i < rep; i++)
  {
  int str = rand() % 5;
  int r = rand() % 256;
  int g = rand() % 256;
  int b = rand() % 256;
  Led(str, r, g, b);
  delay(wait);
  } 
}
 
void Anim3(int wait, int rep)
{
  for(int i = 0; i < rep; i++)
  {
  int str = rand() % 5;
  int r = rand() % 256;
  int g = rand() % 256;
  int b = rand() % 256;
  Led(1, r, g, b);
  Led(2, r, g, b);
  Led(3, r, g, b);
  Led(4, r, g, b);
  delay(wait);
  } 
}
 
void Anim4(int wait, int durata)
{
  int comparator;
  int comparator2;
  int comparator3;
  for(int d = 1; d < durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,255,0,0);
 
         comparator = r-1;
         if (comparator < 1) comparator = comparator + 4;
         Led(comparator,0,255,0);
 
         comparator2 = r-2;
         if (comparator2 < 1) comparator2 = comparator2 + 4;
         Led(comparator2,0,0,255);
 
         comparator3 = r-3;
         if (comparator3 < 1) comparator3 = comparator3 + 4;
         Led(comparator3,255,255,255);
         delay(wait);
         Led(r,0,0,0);
       }
     }
}
 
void Anim5(int wait, int durata)
{
  int comparator;
  int comparator2;
  int comparator3;
  for(int d = 1; d < durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,255,0,0);
 
         comparator = r-1;
         if (comparator < 1) comparator = comparator + 4;
         Led(comparator,255,0,0);
 
         comparator2 = r-2;
         if (comparator2 < 1) comparator2 = comparator2 + 4;
         Led(comparator2,0,0,255);
 
         comparator3 = r-3;
         if (comparator3 < 1) comparator3 = comparator3 + 4;
         Led(comparator3,0,0,255);
         delay(wait);
         Led(r,0,0,0);
         delay(wait);
       }
     }
}
 
void Anim6(int wait, int durata)
{
  Led(1,0,0,0);
  Led(2,0,0,0);
  Led(3,0,0,0);
  Led(4,0,0,0);
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,0,0);
                  Led(2,i,0,0);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,0,i,0);
                  Led(2,0,i,0);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,0,0,i);
                  Led(2,0,0,i);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,0,i);
                  Led(2,i,0,i);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,i,0);
                  Led(2,i,i,0);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,i,i);
                  Led(2,i,i,i);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
}
 
void Anim7(int wait, int durata)
{
  Led(1,0,0,0);
  Led(2,0,0,0);
  Led(3,0,0,0);
  Led(4,0,0,0);
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,0,0);
                  Led(2,i,0,0);                 
                  Led(3,i,0,0);
                  Led(4,i,0,0);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,0,i,0);
                  Led(2,0,i,0);
                  Led(3,0,i,0);
                  Led(4,0,i,0);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,0,0,i);
                  Led(2,0,0,i);
                  Led(3,0,0,i);
                  Led(4,0,0,i);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,0,i);
                  Led(2,i,0,i);
                  Led(3,255,0,i);
                  Led(4,255,0,i);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,i,0);
                  Led(2,i,i,0);
                  Led(3,i,i,0);
                  Led(4,i,i,0);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,i,i);
                  Led(2,i,i,i);
                  Led(3,i,i,i);
                  Led(4,i,i,i);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
}
 
 
 
void Led(int Number, int Red, int Green, int Blue)
{
  if(Number == 1)
  {
    analogWrite(pinR1, Red);
    analogWrite(pinG1, Green);
    analogWrite(pinB1, Blue);
  }
  if(Number == 2)
  {
    analogWrite(pinR2, Red);
    analogWrite(pinG2, Green);
    analogWrite(pinB2, Blue);
  }
    if(Number == 3)
  {
    analogWrite(pinR3, Red);
    analogWrite(pinG3, Green);
    analogWrite(pinB3, Blue);
  }
  if(Number == 4)
  {
    analogWrite(pinR4, Red);
    analogWrite(pinG4, Green);
    analogWrite(pinB4, Blue);
  }
}
 


si pleaca de la BLINK LED, doar ca a fost putin mai adaugat, pentru a avea diverse animatii cu cele 12 siruri.

Schemele sirurilor, si legaturile la Arduino le puteti vedea in aceasta schema

Image

Iar schema bloc a sirurilor este cea din imaginea urmatoare

Image

In momentul in care o sa schimb microcontrolerul si rescriu codul, o sa revin cu detalii.

Spor la bricolat ! :drink2:
Dacă ai tăiat și ultimul copac, ai otrăvit și ultimul râu și ai prins și ultimul pește, ai să fi uimit să constați că banii nu sunt comestibili !

Image
User avatar
Levy
Gold User
Posts: 1541
Joined: 02 Oct 2013 15:07
Location: ABSURDISTAN

Re: Blinking LED next level ! Christmas lights ! - Arduino for beginners

Unread postby Levy » 25 Dec 2021 21:59

Dupa cum am promis, am schimbat Arduino Nano cu un Arduino Mega.
Motivul schimbarii, find numarul de pini PWM, doar 6 la Arduino Nano, cea ce nu-mi ajungea sa controlez 4 stringuri de leduri RGB cu 3 alimentari.
Fiecare LED in parte are un catod comun care se leaga de polaritatea negativa (la minus, sau ground), iar celelalte 3 picioruse ale diodei luminoscente RGB sint fiecare una din culori, respectiv rosu, verde si albastru. Astfel pentru a crea efecte de estompare a luminii, respectiv a culorilor, in jos sau in sus am nevoie de 4 x 3 pini PWM.

Aici a intervenit Arduino Mega.
Conectarea pinilor la mega, i-l gasiti in codul de pe pastebin.
sau si aici:

Code: Select all

//Leds
//String 1
#define pinR1 13
#define pinG1 12
#define pinB1 11
 
//String 2
#define pinR2 10
#define pinG2 9         
#define pinB2 8
 
//String 3
#define pinR3 7
#define pinG3 6
#define pinB3 5
 
//String 4
#define pinR4 4
#define pinG4 3         
#define pinB4 2
 
void setup() {
  Serial.begin(9600);
  pinMode(pinR1, OUTPUT);
  pinMode(pinG1, OUTPUT);
  pinMode(pinB1, OUTPUT);
  pinMode(pinR2, OUTPUT);
  pinMode(pinG2, OUTPUT);
  pinMode(pinB2, OUTPUT);
  pinMode(pinR3, OUTPUT);
  pinMode(pinG3, OUTPUT);
  pinMode(pinB3, OUTPUT);
  pinMode(pinR4, OUTPUT);
  pinMode(pinG4, OUTPUT);
  pinMode(pinB4, OUTPUT);
}
 
void loop()
{
   Anim1(150,15);
   Anim2(200,40);
   Anim3(250,40);
   Anim4(200,40);
   Anim5(250,20);
  ///Anim6(3,3);
   Anim7(5,2);
 /// Anim8(8, 6);
   Anim9(1, 6);
   Anim10(2, 6, 2);
   Anim11(2, 40, 1);
   Anim12(2, 40, 1);
}                   
 
void Anim1(int wait, int durata)
{
  for(int d = 1; d < durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,255,0,0);
         delay(wait);
         Led(r,0,0,0);
       }
     }
  for(int d = 1; d <= durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,0,255,0);
         delay(wait);
         Led(r,0,0,0);
       }
     }
  for(int d = 1; d <= durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,0,0,255);
         delay(wait);
         Led(r,0,0,0);
       }
     }
  for(int d = 1; d <= durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,255,0,255);
         delay(wait);
         Led(r,0,0,0);
       }
     }
  for(int d = 1; d <= durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,0,255,255);
         delay(wait);
         Led(r,0,0,0);
       }
     }
  for(int d = 1; d <= durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,255,255,0);
         delay(wait);
         Led(r,0,0,0);
       }
     }
  for(int d = 1; d <= durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,255,255,255);
         delay(wait);
         Led(r,0,0,0);
       }
     }
}
 
void Anim2(int wait, int rep)
{
  for(int i = 0; i < rep; i++)
  {
  int str = rand() % 5;
  int r = rand() % 256;
  int g = rand() % 256;
  int b = rand() % 256;
  Led(str, r, g, b);
  delay(wait);
  } 
}
 
void Anim3(int wait, int rep)
{
  for(int i = 0; i < rep; i++)
  {
  int str = rand() % 5;
  int r = rand() % 256;
  int g = rand() % 256;
  int b = rand() % 256;
  Led(1, r, g, b);
  Led(2, r, g, b);
  Led(3, r, g, b);
  Led(4, r, g, b);
  delay(wait);
  } 
}
 
void Anim4(int wait, int durata)
{
  int comparator;
  int comparator2;
  int comparator3;
  for(int d = 1; d < durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,255,0,0);
 
         comparator = r-1;
         if (comparator < 1) comparator = comparator + 4;
         Led(comparator,0,255,0);
 
         comparator2 = r-2;
         if (comparator2 < 1) comparator2 = comparator2 + 4;
         Led(comparator2,0,0,255);
 
         comparator3 = r-3;
         if (comparator3 < 1) comparator3 = comparator3 + 4;
         Led(comparator3,255,255,255);
         delay(wait);
         Led(r,0,0,0);
       }
     }
}
 
void Anim5(int wait, int durata)
{
  int comparator;
  int comparator2;
  int comparator3;
  for(int d = 1; d < durata; d++)
     {
     for(int r = 1; r <= 4; r++)
       {
         Led(r,255,0,0);
 
         comparator = r-1;
         if (comparator < 1) comparator = comparator + 4;
         Led(comparator,255,0,0);
 
         comparator2 = r-2;
         if (comparator2 < 1) comparator2 = comparator2 + 4;
         Led(comparator2,0,0,255);
 
         comparator3 = r-3;
         if (comparator3 < 1) comparator3 = comparator3 + 4;
         Led(comparator3,0,0,255);
         delay(wait);
         Led(r,0,0,0);
         delay(wait);
       }
     }
}
 
void Anim6(int wait, int durata)
{
  Led(1,0,0,0);
  Led(2,0,0,0);
  Led(3,0,0,0);
  Led(4,0,0,0);
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,0,0);
                  Led(2,i,0,0);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,0,i,0);
                  Led(2,0,i,0);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,0,0,i);
                  Led(2,0,0,i);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,0,i);
                  Led(2,i,0,i);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,i,0);
                  Led(2,i,i,0);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,i,i);
                  Led(2,i,i,i);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
}
 
void Anim7(int wait, int durata)
{
  for(int a = 0; a <= durata; a++)
  {
  Led(1,0,0,0);
  Led(2,0,0,0);
  Led(3,0,0,0);
  Led(4,0,0,0);
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,0,0);
                  Led(2,i,0,0);                 
                  Led(3,i,0,0);
                  Led(4,i,0,0);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,0,i,0);
                  Led(2,0,i,0);
                  Led(3,0,i,0);
                  Led(4,0,i,0);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,0,0,i);
                  Led(2,0,0,i);
                  Led(3,0,0,i);
                  Led(4,0,0,i);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,0,i);
                  Led(2,i,0,i);
                  Led(3,255,0,i);
                  Led(4,255,0,i);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,i,0);
                  Led(2,i,i,0);
                  Led(3,i,i,0);
                  Led(4,i,i,0);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
 
  for(int d = 0; d < durata; d++)
     {
       int x = 1;
           for (int i = 0; i > -1; i = i + x)
               {
                  Led(1,i,i,i);
                  Led(2,i,i,i);
                  Led(3,i,i,i);
                  Led(4,i,i,i);
                  if (i == 255) x = -1;             
                  delay(wait);
               }
     }
  }
}
void Anim8(float wait, int rep)
{
  for(int a = 0; a <= rep; a++)
  {
  Led(1,0,0,0);
  Led(2,0,0,0);
  Led(3,0,0,0);
  Led(4,0,0,0);
 
      for(int c = 0; c < 255; c++)
      {
        Led(1,c,0,0);
        Led(2,c,0,0);
        Led(3,c,0,0);
        Led(4,c,0,0);
 
        delay(wait);
      }
      for(int c = 255; c >= 0; c--)
      {
        Led(1,c,0,0);
        Led(2,c,0,0);
        Led(3,c,0,0);
        Led(4,c,0,0);
 
        delay(wait);
      }
      for(int c = 0; c < 255; c++)
      {
        Led(1,0,c,0);
        Led(2,0,c,0);
        Led(3,0,c,0);
        Led(4,0,c,0);
 
        delay(wait);
      }
      for(int c = 255; c >= 0; c--)
      {
        Led(1,0,c,0);
        Led(2,0,c,0);
        Led(3,0,c,0);
        Led(4,0,c,0);
 
        delay(wait);
      };
      for(int c = 0; c < 255; c++)
      {
        Led(1,0,0,c);
        Led(2,0,0,c);
        Led(3,0,0,c);
        Led(4,0,0,c);
 
        delay(wait);
      }
      for(int c = 255; c >= 0; c--)
      {
        Led(1,0,0,c);
        Led(2,0,0,c);
        Led(3,0,0,c);
        Led(4,0,0,c);
 
        delay(wait);
      }
  }
}
 
void Anim9(int wait, int rep)
{
  for(int a = 0; a <= rep; a++)
  {
    for(int r = 0; r < 256; r++)
    {
    Led(1, r, 0, 0);
    int r2 = 255 - r;
    Led(4, r2, 0, 0);
   
    delay(wait);
    }
    for(int r = 0; r < 256; r++)
    {
    Led(2, r, 0, 0);
    int r2 = 255 - r;
    Led(1, r2, 0, 0);
   
    delay(wait);
    }
    for(int r = 0; r < 256; r++)
    {
    Led(3, r, 0, 0);
    int r2 = 255 - r;
    Led(2, r2, 0, 0);
   
    delay(wait);
    }
    for(int r = 0; r < 256; r++)
    {
    Led(4, r, 0, 0);
    int r2 = 255 - r;
    Led(3, r2, 0, 0);
   
    delay(wait);
    }
  }
  for(int a = 0; a <= rep; a++)
  {
    for(int r = 0; r < 256; r++)
    {
    Led(1, 0, r, 0);
    int r2 = 255 - r;
    Led(4, 0, r2, 0);
   
    delay(wait);
    }
    for(int r = 0; r < 256; r++)
    {
    Led(2, 0, r, 0);
    int r2 = 255 - r;
    Led(1, 0, r2, 0);
   
    delay(wait);
    }
    for(int r = 0; r < 256; r++)
    {
    Led(3, 0, r, 0);
    int r2 = 255 - r;
    Led(2, 0, r2, 0);
   
    delay(wait);
    }
    for(int r = 0; r < 256; r++)
    {
    Led(4, 0, r, 0);
    int r2 = 255 - r;
    Led(3, 0, r2, 0);
   
    delay(wait);
    }
  }
  for(int a = 0; a <= rep; a++)
  {
    for(int r = 0; r < 256; r++)
    {
    Led(1, 0, 0, r);
    int r2 = 255 - r;
    Led(4, 0, 0, r2);
   
    delay(wait);
    }
    for(int r = 0; r < 256; r++)
    {
    Led(2, 0, 0, r);
    int r2 = 255 - r;
    Led(1, 0, 0, r2);
   
    delay(wait);
    }
    for(int r = 0; r < 256; r++)
    {
    Led(3, 0, 0, r);
    int r2 = 255 - r;
    Led(2, 0, 0, r2);
   
    delay(wait);
    }
    for(int r = 0; r < 256; r++)
    {
    Led(4, 0, 0, r);
    int r2 = 255 - r;
    Led(3, 0, 0, r2);
   
    delay(wait);
    }
  }
}
 
void Anim10(float wait, int rep, int step)
{
  for(int r = 0; r < rep; r++)
  {
    for(int r = 0; r < 256; r = r + step)
    {
      Led(3, r, 0, 0);
      Led(1, 255 - r, 0, 0);
      delay(wait);
    }
    for(int r = 0; r < 256; r = r + step)
    {
      Led(4, r, 0, 0);
      Led(2, 255 - r, 0, 0);
      delay(wait);
    }
    for(int r = 0; r < 256; r = r + step)
    {
      Led(1, r, 0, 0);
      Led(3, 255 - r, 0, 0);
      delay(wait);
    }
    for(int r = 0; r < 256; r = r + step)
    {
      Led(2, r, 0, 0);
      Led(4, 255 - r, 0, 0);
      delay(wait);
    }
  }
 
  for(int r = 0; r < rep; r++)
  {
    for(int r = 0; r < 256; r = r + step)
    {
      Led(3, 0, r, 0);
      Led(1, 0, 255 - r, 0);
      delay(wait);
    }
    for(int r = 0; r < 256; r = r + step)
    {
      Led(4, 0, r, 0);
      Led(2, 0, 255 - r, 0);
      delay(wait);
    }
    for(int r = 0; r < 256; r = r + step)
    {
      Led(1, 0, r, 0);
      Led(3, 0, 255 - r, 0);
      delay(wait);
    }
    for(int r = 0; r < 256; r = r + step)
    {
      Led(2, 0, r, 0);
      Led(4, 0, 255 - r, 0);
      delay(wait);
    }
  }
 
  for(int r = 0; r < rep; r++)
  {
    for(int r = 0; r < 256; r = r + step)
    {
      Led(3, 0, 0, r);
      Led(1, 0, 0, 255 - r);
      delay(wait);
    }
    for(int r = 0; r < 256; r = r + step)
    {
      Led(4, 0, 0, r);
      Led(2, 0, 0, 255 - r);
      delay(wait);
    }
    for(int r = 0; r < 256; r = r + step)
    {
      Led(1, 0, 0, r);
      Led(3, 0, 0, 255 - r);
      delay(wait);
    }
    for(int r = 0; r < 256; r = r + step)
    {
      Led(2, 0, 0, r);
      Led(4, 0, 0, 255 - r);
      delay(wait);
    }
  }
}
 
void Anim11(int wait, int rep, int step)
{
int Pr1,Pg1,Pb1,Pr2,Pg2,Pb2,Pr3,Pg3,Pb3,Pr4,Pg4,Pb4,r,g,b;
  Pr1 = Pr2 = Pr3 = Pr4 = 125;
  Pg1 = Pg2 = Pg3 = Pg4 = 125;
  Pb1 = Pb2 = Pb3 = Pb4 = 125;
 
  for(int d = 1; d < rep; d++)
  r = rand() % 256;
  g = rand() % 256;
  b = rand() % 256;
  if (Pr1 < r)
     {
        for(int i = Pr1;i < r; i = i + step)
           {
            Led(1, i, Pg1, Pb1);
            delay(wait);
            Pr1 = r;
           }
     }     
  else if (Pr1 > r)
     {
        for(int i = Pr1;i > r; i = i - step)
           {
            Led(1, i, Pg1, Pb1);
            delay(wait);
            Pr1 = r;
           }
     }   
  if (Pg1 < g)
     {
        for(int i = Pg1;i < g; i = i + step)
           {
            Led(1, r, i, Pb1);
            delay(wait);
            Pg1 = g;
           }
     }     
  else if (Pg1 > g)
     {
        for(int i = Pg1;i > g; i = i - step)
           {
            Led(1, r, i, Pb1);
            delay(wait);
            Pg1 = g;
           }
     }   
 
  if (Pb1 < b)
     {
        for(int i = Pb1;i < b; i = i + step)
           {
            Led(1, r, g, i);
            delay(wait);
            Pb1 = b;
           }
     }     
  else if (Pb1 > b)
     {
        for(int i = Pb1;i > b; i = i - step)
           {
            Led(1, r, g, i);
            delay(wait);
            Pb1 = b;
           }
     }   
 
 
  r = rand() % 256;
  g = rand() % 256;
  b = rand() % 256;
  if (Pr2 < r)
     {
        for(int i = Pr2;i < r; i = i + step)
           {
            Led(2, i, Pg2, Pb2);
            delay(wait);
            Pr2 = r;
           }
     }     
  else if (Pr2 > r)
     {
        for(int i = Pr2;i > r; i = i - step)
           {
            Led(2, i, Pg2, Pb2);
            delay(wait);
            Pr2 = r;
           }
     }   
  if (Pg2 < g)
     {
        for(int i = Pg2;i < g; i = i + step)
           {
            Led(2, r, i, Pb2);
            delay(wait);
            Pg2 = g;
           }
     }     
  else if (Pg2 > g)
     {
        for(int i = Pg2;i > g; i = i - step)
           {
            Led(2, r, i, Pb2);
            delay(wait);
            Pg2 = g;
           }
     }   
 
  if (Pb2 < b)
     {
        for(int i = Pb2;i < b; i = i + step)
           {
            Led(2, r, g, i);
            delay(wait);
            Pb2 = b;
           }
     }     
  else if (Pb2 > b)
     {
        for(int i = Pb2;i > b; i = i - step)
           {
            Led(2, r, g, i);
            delay(wait);
            Pb2 = b;
           }
     }   
 
  r = rand() % 256;
  g = rand() % 256;
  b = rand() % 256;
  if (Pr3 < r)
     {
        for(int i = Pr3;i < r; i = i + step)
           {
            Led(3, i, Pg3, Pb3);
            delay(wait);
            Pr3 = r;
           }
     }     
  else if (Pr3 > r)
     {
        for(int i = Pr3;i > r; i = i - step)
           {
            Led(3, i, Pg3, Pb3);
            delay(wait);
            Pr3 = r;
           }
     }   
  if (Pg3 < g)
     {
        for(int i = Pg3;i < g; i = i + step)
           {
            Led(3, r, i, Pb3);
            delay(wait);
            Pg3 = g;
           }
     }     
  else if (Pg3 > g)
     {
        for(int i = Pg3;i > g; i = i - step)
           {
            Led(3, r, i, Pb3);
            delay(wait);
            Pg3 = g;
           }
     }   
 
  if (Pb3 < b)
     {
        for(int i = Pb3;i < b; i = i + step)
           {
            Led(3, r, g, i);
            delay(wait);
            Pb3 = b;
           }
     }     
  else if (Pb3 > b)
     {
        for(int i = Pb3;i > b; i = i - step)
           {
            Led(3, r, g, i);
            delay(wait);
            Pb3 = b;
           }
     }   
 
  r = rand() % 256;
  g = rand() % 256;
  b = rand() % 256;
  if (Pr4 < r)
     {
        for(int i = Pr4;i < r; i = i + step)
           {
            Led(14, i, Pg4, Pb4);
            delay(wait);
            Pr4 = r;
           }
     }     
  else if (Pr4 > r)
     {
        for(int i = Pr4;i > r; i = i - step)
           {
            Led(4, i, Pg4, Pb4);
            delay(wait);
            Pr4 = r;
           }
     }   
  if (Pg4 < g)
     {
        for(int i = Pg4;i < g; i = i + step)
           {
            Led(4, r, i, Pb4);
            delay(wait);
            Pg4 = g;
           }
     }     
    else if (Pg4 > g)
     {
        for(int i = Pg4;i > g; i = i - step)
           {
            Led(4, r, i, Pb4);
            delay(wait);
            Pg4 = g;
           }
     }   
 
  if (Pb4 < b)
     {
        for(int i = Pb4;i < b; i = i + step)
           {
            Led(4, r, g, i);
            delay(wait);
            Pb4 = b;
           }
     }     
  else if (Pb4 > b)
     {
        for(int i = Pb4;i > b; i = i - step)
           {
            Led(4, r, g, i);
            delay(wait);
            Pb4 = b;
           }
     }   
 
 
 
}
 
void Anim12(int wait, int rep, int step)
{
int Pr1,Pg1,Pb1,Pr2,Pg2,Pb2,Pr3,Pg3,Pb3,Pr4,Pg4,Pb4,r,g,b;
for(int d = 1; d < rep; d++)
{
  r = rand() % 256;
  g = rand() % 256;
  b = rand() % 256;
  if (Pr1 <= r)
     {
        for(int i = Pr1;i < r; i = i + step)
           {
            Led(1, i, Pg1, Pb1);
            Led(2, i, Pg1, Pb1);
            Led(3, i, Pg1, Pb1);
            Led(4, i, Pg1, Pb1);
            delay(wait);
            Pr1 = r;
           }
     }     
  else if (Pr1 > r)
     {
        for(int i = Pr1;i > r; i = i - step)
           {
            Led(1, i, Pg1, Pb1);
            Led(2, i, Pg1, Pb1);
            Led(3, i, Pg1, Pb1);
            Led(4, i, Pg1, Pb1);
            delay(wait);
            Pr1 = r;
           }
     } 
     delay(500);
  if (Pg1 <= g)
     {
        for(int i = Pg1;i < g; i = i + step)
           {
            Led(1, r, i, Pb1);
            Led(2, r, i, Pb1);
            Led(3, r, i, Pb1);
            Led(4, r, i, Pb1);
            delay(wait);
            Pg1 = g;
           }
     }     
  else if (Pg1 > g)
     {
        for(int i = Pg1;i > g; i = i - step)
           {
            Led(1, r, i, Pb1);
            Led(2, r, i, Pb1);
            Led(3, r, i, Pb1);
            Led(4, r, i, Pb1);
            delay(wait);
            Pg1 = g;
           }
     }   
     delay(500);
  if (Pb1 <= b)
     {
        for(int i = Pb1;i < b; i = i + step)
           {
            Led(1, r, g, i);
            Led(2, r, g, i);
            Led(3, r, g, i);
            Led(4, r, g, i);
            delay(wait);
            Pb1 = b;
           }
     }     
  else if (Pb1 > b)
     {
        for(int i = Pb1;i > b; i = i - step)
           {
            Led(1, r, g, i);
            Led(2, r, g, i);
            Led(3, r, g, i);
            Led(4, r, g, i);
            delay(wait);
            Pb1 = b;
           }
     }   
     delay(500);
}
}
 
void Led(int Number, int Red, int Green, int Blue)
{
  if(Number == 1)
  {
    analogWrite(pinR1, Red);
    analogWrite(pinG1, Green);
    analogWrite(pinB1, Blue);
  }
  if(Number == 2)
  {
    analogWrite(pinR2, Red);
    analogWrite(pinG2, Green);
    analogWrite(pinB2, Blue);
  }
    if(Number == 3)
  {
    analogWrite(pinR3, Red);
    analogWrite(pinG3, Green);
    analogWrite(pinB3, Blue);
  }
  if(Number == 4)
  {
    analogWrite(pinR4, Red);
    analogWrite(pinG4, Green);
    analogWrite(pinB4, Blue);
  }
}


Restul componentelor au ramas cele de dinainte, doar microprocesorul, codul si legaturile mosfetilor la Arduino Mega s-au schimbat.

Un mic video cu rezultatele obtinute:
phpBB [video]


Spor la bricolat, si sarbatori fericite !
Craciun Fericit !
Dacă ai tăiat și ultimul copac, ai otrăvit și ultimul râu și ai prins și ultimul pește, ai să fi uimit să constați că banii nu sunt comestibili !

Image

Return to “Arduino”

Who is online

Users browsing this forum: No registered users and 15 guests