logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Jak zmienić tryby świecenia WS2812 z Arduino przez przycisk?

Lukaszopupu 21 Lut 2020 17:41 894 1
REKLAMA
  • #1 18485036
    Lukaszopupu
    Poziom 2  
    Posty: 2
    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;
    }}
  • REKLAMA
  • #2 18820676
    Lukaszopupu
    Poziom 2  
    Posty: 2
    nie rozwiązałem
REKLAMA