• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Jak prościej to napisać :)
#1
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 Smile

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ść Smile

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);
}
}
 
Odpowiedź
#2
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);
}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#3
Chciałbym się jeszcze dowiedzieć jak używać setBrightness, jeśli mógłbyś wytłumaczyć Smile Jak bym chciał np podłączyć potencjometr regulowany, dzięki z góry !
 
Odpowiedź
#4
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);
}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości