Hallo, ich bin aktuell noch nicht erfahren mit den Feinheiten der Arduino Prgrammerung.
Der folgende Sketch funktioniert im Grunde genau wie gewollt, nur möchte ich die beiden NeoPixel Ringe ( an PIN7 und Pin8 ) getrennt in ihrer Laufgeschwindigkeit ansteuern.
Im Moment addieren sich alle Delays und machen den Ablauf insgesamt langsamer.
Ich möchte allerding das die Rotation der zwei Ringe an Pin7 unabhängig von der Abfolge der Lichter an Pin3 läuft.
Wie würde sich das, falls überhaupt möglich, bewerkstelligen lassen?
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN1 7 // Pin 7 = Input Adruino Rings ( 1 x 16 LEDs / 1 x 12 LEDs )
#define PIN2 8 // Pin 8 = Input Adruino Ring ( 1 x 7LEDs )
#define NUMPIXELS1 28 // 28 LEDs
#define NUMPIXELS2 7 // 7 LEDs
Adafruit_NeoPixel pixels1 = Adafruit_NeoPixel(NUMPIXELS1, PIN1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels2 = Adafruit_NeoPixel(NUMPIXELS2, PIN2, NEO_GRB + NEO_KHZ800);
int i1=0;
int i2=27;
int eingang= A0; // PIN A = Potentiometer
int sensorwert = 0; // Value = 0
int RED1=0; // LED Color Red
int BLUE1=0; // LED Color Blue
int GREEN1=0; // LED Color Green
int PAUSE1=150; // Break / Speed
int PAUSE2=50;
int PAUSE3=10;
void setup()
{
pixels1.begin();
pixels2.begin();
}
void loop()
{sensorwert =analogRead(eingang); // Reading Potentiometer Value
if (( sensorwert >=0 ) & ( sensorwert <300 )) // Potentiometer Value Range for Color Red
{RED1 = 100;
GREEN1 = 0;
BLUE1 = 0;}
if (( sensorwert >301 ) & ( sensorwert <350 )) // Potentiometer Value Range for Color Yellow
{RED1 = 100;
GREEN1 = 10;
BLUE1 = 0;}
if (( sensorwert >351 ) & ( sensorwert <400 )) // Potentiometer Value Range for Color Green
{RED1 = 0;
GREEN1 = 100;
BLUE1 = 0;}
if (( sensorwert >401 ) & ( sensorwert <450 )) // Potentiometer Value Range for Color Turkise
{RED1 = 0;
GREEN1 = 100;
BLUE1 = 10;}
if (( sensorwert >451 ) & ( sensorwert <500 )) // Potentiometer Value Range for Color Blue
{RED1 = 0;
GREEN1 = 0;
BLUE1 = 100;}
if (( sensorwert >501 ) & ( sensorwert <550 )) // Potentiometer Value Range for Color Lila
{RED1 = 10;
GREEN1 = 0;
BLUE1 = 100;}
if (( sensorwert >551 ) & ( sensorwert <600 )) // Potentiometer Value Range for Color White
{RED1 = 100;
GREEN1 = 100;
BLUE1 = 100;}
if (( sensorwert >601 ) & ( sensorwert <650 )) // Potentiometer Value Range for Color Pink
{RED1 = 100;
GREEN1 = 10;
BLUE1 = 100;}
{
pixels1.setPixelColor(i1, pixels1.Color(RED1,GREEN1,BLUE1)); // Ring 1
pixels1.setPixelColor(i1-1, pixels1.Color(0,0,0));
pixels1.show();
if (i1==0) pixels1.setPixelColor(15, pixels1.Color(0,0,0));
pixels1.show();
i1=i1+1;
if (i1==16) i1=0;
pixels1.setPixelColor(i2, pixels1.Color(RED1,GREEN1,BLUE1)); // Ring2
pixels1.setPixelColor(i2+1, pixels1.Color(0,0,0));
pixels1.show();
if (i2==27) pixels1.setPixelColor(17, pixels1.Color(0,0,0));
pixels1.show();
i2=i2-1;
if (i2==16) i2=27;
delay (PAUSE1);
}
{ // Ring 3
pixels2.setPixelColor(1, pixels2.Color(RED1,GREEN1,BLUE1));
pixels2.setPixelColor(2, pixels2.Color(RED1,GREEN1,BLUE1));
pixels2.setPixelColor(3, pixels2.Color(RED1,GREEN1,BLUE1));
pixels2.show();
delay (PAUSE1);
pixels2.setPixelColor(1, pixels2.Color(0,0,0));
pixels2.setPixelColor(2, pixels2.Color(0,0,0));
pixels2.setPixelColor(3, pixels2.Color(0,0,0));
pixels2.show();
delay (PAUSE2);
pixels2.setPixelColor(3, pixels2.Color(RED1,GREEN1,BLUE1));
pixels2.setPixelColor(6, pixels2.Color(RED1,GREEN1,BLUE1));
pixels2.setPixelColor(7, pixels2.Color(RED1,GREEN1,BLUE1));
pixels2.show();
delay (PAUSE1);
pixels2.setPixelColor(3, pixels2.Color(0,0,0));
pixels2.setPixelColor(6, pixels2.Color(0,0,0));
pixels2.setPixelColor(7, pixels2.Color(0,0,0));
pixels2.show();
delay (PAUSE2);
pixels2.setPixelColor(2, pixels2.Color(RED1,GREEN1,BLUE1));
pixels2.setPixelColor(5, pixels2.Color(RED1,GREEN1,BLUE1));
pixels2.setPixelColor(4, pixels2.Color(RED1,GREEN1,BLUE1))
pixels2.show();
delay (PAUSE1);
pixels2.setPixelColor(2, pixels2.Color(0,0,0));
pixels2.setPixelColor(5, pixels2.Color(0,0,0));
pixels2.setPixelColor(4, pixels2.Color(0,0,0));
pixels2.show();
delay (PAUSE2);
}
}