Jak prościej to napisać :) - mizu - 05-12-2015
Witam serdecznie, zrobiłem małą lampkę z NEOPIXEL RINGA 12
napisałem kod, chociaż jestem zielony w tym temacie, lecz bardzo mnie zainteresował.
Czytam o wielu rzeczach teraz, lecz nie mogę się dopatrzeć jak łatwiej zapisać taki oto schemacik
(piszę w Aurdiono IDE czyli C+ )
#include <Adafruit_NeoPixel.h>
#define PIN 3
#define NUMPIXELS 12
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Program wygląda następująco :
Najpierw zapalają się diody 0,2,4,6,8,10,
Po 4000 milisekundach
Zapalają się diody 1,3,5,7,9,11
Niestety zajmuje to trochę miejsca a na pewno do przyszłych projektów przyda mi się, żeby wiedzieć jak napisać to szybciej, nie zajmując tylu linijek kodu
Moje pytanie brzmi :
Czy jest możliwe aby program wybrał tylko nieparzyste diody lub parzyste ?
czy można to zrobić opcją #define ? Jeśli nie to jak można to zrobić ?
Z góry dziękuję, jestem kompletnie zielony więc proszę o wyrozumiałość
Kod: void setup()
{
pixels.begin(); //inicjalizacja ( włączenie ) NeoPixelRing
}
void loop()
{
for(int i=0; i<NUMPIXELS; i++)
{
pixels.setPixelColor(i=0, pixels.Color(50,50,255));
pixels.show();
delay(50);
pixels.setPixelColor(i=2, pixels.Color(50,50,255));
pixels.show();
delay(50);
pixels.setPixelColor(i=4, pixels.Color(50,50,255));
pixels.show();
delay(50);
pixels.setPixelColor(i=6, pixels.Color(50,50,255));
pixels.show();
delay(50);
pixels.setPixelColor(i=8, pixels.Color(50,50,255));
pixels.show();
delay(50);
pixels.setPixelColor(i=10, pixels.Color(50,50,255));
pixels.show();
delay(50);
pixels.setPixelColor(i=12, pixels.Color(50,50,255));
pixels.show();
delay(4000);
pixels.setPixelColor(i=1, pixels.Color(50,50,255));
pixels.show();
delay(50);
pixels.setPixelColor(i=3, pixels.Color(50,50,255));
pixels.show();
delay(50);
pixels.setPixelColor(i=5, pixels.Color(50,50,255));
pixels.show();
delay(50);
pixels.setPixelColor(i=7, pixels.Color(50,50,255));
pixels.show();
delay(50);
pixels.setPixelColor(i=9, pixels.Color(50,50,255));
pixels.show();
delay(50);
pixels.setPixelColor(i=11, pixels.Color(50,50,255));
pixels.show();
delay(50);
}
}
RE: Jak prościej to napisać :) - JasQ - 05-12-2015
Można tak :
Kod: #include <Adafruit_NeoPixel.h>
#define PIN 3
#define NUMPIXELS 12
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
pixels.begin(); //inicjalizacja ( włączenie ) NeoPixelRing
}
void loop()
{
for(int i=0; i<= NUMPIXELS; i=i+2){
pixels.setPixelColor(i, pixels.Color(50,50,255));
pixels.show();
delay(50); }
delay(2000);
for(int i=1; i< NUMPIXELS; i=i+2){
pixels.setPixelColor(i=1, pixels.Color(50,50,255));
pixels.show();
delay(50); }
delay(2000);
}
i można też tak :
Kod: #include <Adafruit_NeoPixel.h>
#define PIN 3
#define NUMPIXELS 12
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int tab1[7]={1,3,5,7,9,11};
int tab2[8]={0,2,4,6,8,10,12};
void setup()
{
pixels.begin(); //inicjalizacja ( włączenie ) NeoPixelRing
}
void loop()
{
for(int i=0; i<= 6; i++ ){
pixels.setPixelColor(tab1[i], pixels.Color(50,50,255));
pixels.show();
delay(50); }
delay(2000);
for(int i=0; i<= 7; i++ ){
pixels.setPixelColor(tab2[i], pixels.Color(50,50,255));
pixels.show();
delay(50); }
delay(2000);
}
RE: Jak prościej to napisać :) - mizu - 05-12-2015
Chciałbym się jeszcze dowiedzieć jak używać setBrightness, jeśli mógłbyś wytłumaczyć Jak bym chciał np podłączyć potencjometr regulowany, dzięki z góry !
RE: Jak prościej to napisać :) - mizu - 07-12-2015
Kod: #include <Adafruit_NeoPixel.h>
#define PIN 3
#define NUMPIXELS 12
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int tab1[6]={1,3,5,7,9,11};
int tab2[7]={0,2,4,6,8,10,12}; - poprawiłem tutaj tab1 i 2 i działa :) Dzięki
void setup()
{
pixels.begin(); //inicjalizacja ( włączenie ) NeoPixelRing
}
void loop()
{
for(int i=0; i<= 6; i++ ){
pixels.setPixelColor(tab1[i], pixels.Color(50,50,255));
pixels.show();
delay(50); }
delay(2000);
for(int i=0; i<= 7; i++ ){
pixels.setPixelColor(tab2[i], pixels.Color(50,50,255));
pixels.show();
delay(50); }
delay(2000);
}
|