Arduino Polska Forum

Pełna wersja: Arduino Leonardo; Dioda RGB zmieniająca kolory
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Chcę zrobić ,aby dioda led RGB zmieniała kolory i zacząłem od zrobienia funkcji obsługujących zmianę koloru. Gdy napiszę w funkcji loop jedną (np. red() ) to działa, ale po napisaniu np.
Kod:
red()
delay(10);
green();
 już nie działa nawet jedna z nich.

Tu cały kod programu:

Kod:
int r = 2,g = 3,b = 1,nr = 0,ng = 0,nb = 0;
// nr - natężenie red, ng - natężenie green, nb - natężenie blue

void setup() {
 pinMode(r,OUTPUT);
 pinMode(g,OUTPUT);
 pinMode(b,OUTPUT);
 pinMode(A0,INPUT);
 pinMode(A1,INPUT);
 pinMode(A2,INPUT);
}

void loop() {

red();
green();
blue();

}

void red()
{
for(int i = 1;i <= 255;i++);
{
  if(nr < 255) {nr++;}
  if(ng > 0) {ng--;}
  if(nb > 0) {nb--;}
  analogWrite(r,nr);
  analogWrite(g,ng);
  analogWrite(b,nb);
  delayMicroseconds(10);
 }
}

void green()
{
for(int i = 1;i <= 255;i++);
{
  if(ng < 255) {ng++;}
  if(nr > 0) {nr--;}
  if(nb > 0) {nb--;}
  analogWrite(r,nr);
  analogWrite(g,ng);
  analogWrite(b,nb);
  delayMicroseconds(10);
 }
}

void blue()
{
for(int i = 1;i <= 255;i++);
{
  if(nb < 255) {nb++;}
  if(ng > 0) {ng--;}
  if(nr > 0) {nr--;}
  analogWrite(r,nr);
  analogWrite(g,ng);
  analogWrite(b,nb);
  delayMicroseconds(10);
 }
}
Czy maja płynie zmieniać kolor ?
Ogólnie powiem ci ze strasznie skomplikować.
Tak kolory maja zmieniać się płynnie, potem dodam jeszcze obsługę przycisków.
Opisz dokładniej jak to ma wyglądać po kolei.
Po naciśnięciu przycisku (potem chciałem dodać do kodu) ma się płynnie zmieniać kolor na jeden z głównych czerwony ®, green (g), niebieski (b), później gdy będzie to działało zamiast przycisków będzie coś innego i chciałbym jeszcze dodać potem także płynne zmienianie kolorów na inne np. niebieski i czerwony naraz (czyli fioletowy).