19-03-2018, 10:04
Cześć,
Dopiero zaczynam i proszę pomoc ponieważ od tygodnia nie mogę sobie poradzić.
Płytka Arduino UNO plus Neopixel Ring LED 24 Diody.
Przeglądałem chyba wszystkie posty dotyczące delay, mills, times etc... ale nie znalazłem rozwiązania.
Zależy mi na tym aby po uruchomieniu Ring Leda, który będzie sobie świecił na różne sposoby zgasł po 10 sekundach.
Uruchomienie ponowne ma nastąpić dopiero po resecie albo z przycisku na płytce albo stworzonego przeze mnie pliku *.bat gdzie po uruchomieniu programu sam się resetuje - reset mam opanowany
Poniżej kod, który chciałbym zmodyfikować tak aby Ring Led po rozpoczętej pracy zgasł po 10 sekundach.
Pewne rzeczy wiem a pewnych nie rozumiem mimo, iż poświęciłem teraz na to cały weekend
Zastanawiam się czy jest opcja aby w void loop gdzie jest określony sposób przebiegu zapalania Ring Leda z góry określić, że ma się wyłączyć po tych 10 sekundach.
Pomyślałem, że może coś z fade wykombinować ale to dla mnie chyba jeszcze nie ten poziom.
Jestem w stanie napisać podstawowe rzeczy, rozumiem gdzie mają być zdefiniowane biblioteki, pisane komendy dla stałych i zapętlonych zdarzeń ale chyba porwałem się jeszcze z motyką na słońce.
Kod mam z www.tweaking4all.com.
Jeżeli jest ktoś chętny i pomoże?
Dopiero zaczynam i proszę pomoc ponieważ od tygodnia nie mogę sobie poradzić.
Płytka Arduino UNO plus Neopixel Ring LED 24 Diody.
Przeglądałem chyba wszystkie posty dotyczące delay, mills, times etc... ale nie znalazłem rozwiązania.
Zależy mi na tym aby po uruchomieniu Ring Leda, który będzie sobie świecił na różne sposoby zgasł po 10 sekundach.
Uruchomienie ponowne ma nastąpić dopiero po resecie albo z przycisku na płytce albo stworzonego przeze mnie pliku *.bat gdzie po uruchomieniu programu sam się resetuje - reset mam opanowany
Poniżej kod, który chciałbym zmodyfikować tak aby Ring Led po rozpoczętej pracy zgasł po 10 sekundach.
Pewne rzeczy wiem a pewnych nie rozumiem mimo, iż poświęciłem teraz na to cały weekend
Zastanawiam się czy jest opcja aby w void loop gdzie jest określony sposób przebiegu zapalania Ring Leda z góry określić, że ma się wyłączyć po tych 10 sekundach.
Pomyślałem, że może coś z fade wykombinować ale to dla mnie chyba jeszcze nie ten poziom.
Jestem w stanie napisać podstawowe rzeczy, rozumiem gdzie mają być zdefiniowane biblioteki, pisane komendy dla stałych i zapętlonych zdarzeń ale chyba porwałem się jeszcze z motyką na słońce.
Kod mam z www.tweaking4all.com.
Jeżeli jest ktoś chętny i pomoże?
Kod:
#include <Adafruit_NeoPixel.h>
#define PIN 6
#define NUM_LEDS 24
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show();
}
void loop() {
theaterChaseRainbow(75);
}
void theaterChaseRainbow(int SpeedDelay) {
byte *c;
for (int j = 0; j < 256; j++) { // cycle all 256 colors in the wheel
for (int q = 0; q < 3; q++) {
for (int i = 0; i < NUM_LEDS; i = i + 3) {
c = Wheel( (i + j) % 255);
setPixel(i + q, *c, *(c + 1), *(c + 2)); //turn every third pixel on
}
showStrip();
delay(SpeedDelay);
for (int i = 0; i < NUM_LEDS; i = i + 3) {
setPixel(i + q, 0, 0, 0); //turn every third pixel off
}
}
}
}
byte * Wheel(byte WheelPos) {
static byte c[3];
if (WheelPos < 85) {
c[0] = WheelPos * 3;
c[1] = 255 - WheelPos * 3;
c[2] = 0;
} else if (WheelPos < 170) {
WheelPos -= 85;
c[0] = 255 - WheelPos * 3;
c[1] = 0;
c[2] = WheelPos * 3;
} else {
WheelPos -= 170;
c[0] = 0;
c[1] = WheelPos * 3;
c[2] = 255 - WheelPos * 3;
}
return c;
}
void showStrip() {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.show();
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
FastLED.show();
#endif
}
void setPixel(int Pixel, byte red, byte green, byte blue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.setPixelColor(Pixel, strip.Color(red, green, blue));
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds[Pixel].r = red;
leds[Pixel].g = green;
leds[Pixel].b = blue;
#endif
}
void setAll(byte red, byte green, byte blue) {
for (int i = 0; i < NUM_LEDS; i++ ) {
setPixel(i, red, green, blue);
}
showStrip();
}