witam mam problem z zmianą trybu pracy świecenia diod przez przycisk chciałbym aby pierwszy tryb to było "wyłączenie" diod a drugi tęcza w przyszłości też więcej ale na razie tyle mi wystarczy. zrobiłem kod z tym wszystkim lecz nie działa zmiana trybu czy ktoś mógłby poprawić ewentualne błędy i wytłumaczyć mi to ps. jestem początkujący
tu jest kod
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#include <Adafruit_NeoPixel.h> // Biblioteka do sterowania diodami
#define PIN A0 // Pin do sterowania diodami ws2812
#define NUMPIXELS 90 // Ilość diod ws2812
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int licznik = 1;
void przycisk()
{
delay(1);
if (digitalRead(7)== LOW)
{
licznik++;
if (licznik > 2)
{
licznik=1;
}
}
}
void efekt_1() //off
{
Serial.println("Efekt 1");
for(int i=0; i<NUMPIXELS; i++) {
strip.setPixelColor(i,strip.Color(0, 0, 0));
strip.show();
delay(25);
}
}
void efekt_2() //tecza
{
Serial.println("Efekt 2");
for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
for(int i=0; i<strip.numPixels(); i++) {
int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels());
strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue)));
}
strip.show();
delay(100);
}
}
//------------------------------------------------------
void setup() {
Serial.begin(9600);
strip.begin();
pinMode(7, INPUT);
attachInterrupt(0, przycisk, FALLING);
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
strip.begin();
strip.show();
strip.setBrightness(200);
}
//------------------------------------------------------
void loop()
{
switch (licznik) {
case 1:
efekt_1();
break;
case 2:
efekt_2();
break;
}}
tu jest kod
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#include <Adafruit_NeoPixel.h> // Biblioteka do sterowania diodami
#define PIN A0 // Pin do sterowania diodami ws2812
#define NUMPIXELS 90 // Ilość diod ws2812
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int licznik = 1;
void przycisk()
{
delay(1);
if (digitalRead(7)== LOW)
{
licznik++;
if (licznik > 2)
{
licznik=1;
}
}
}
void efekt_1() //off
{
Serial.println("Efekt 1");
for(int i=0; i<NUMPIXELS; i++) {
strip.setPixelColor(i,strip.Color(0, 0, 0));
strip.show();
delay(25);
}
}
void efekt_2() //tecza
{
Serial.println("Efekt 2");
for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
for(int i=0; i<strip.numPixels(); i++) {
int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels());
strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue)));
}
strip.show();
delay(100);
}
}
//------------------------------------------------------
void setup() {
Serial.begin(9600);
strip.begin();
pinMode(7, INPUT);
attachInterrupt(0, przycisk, FALLING);
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
strip.begin();
strip.show();
strip.setBrightness(200);
}
//------------------------------------------------------
void loop()
{
switch (licznik) {
case 1:
efekt_1();
break;
case 2:
efekt_2();
break;
}}