• 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
Problem z FastLed.h
#1
Witam.Na początku chciałbym powiedzieć że jestem początkujący w arduino jak i również w  bibliotece FastLed.h.Mam zmienną switchonoff2 którego można po dotknięciu przełaczyć on/off działający na ttp223.Na początku miałem taki plan: jeśli switchonoff2== HIGH to skaluj jasność z 255 do zera i jeśli LOW to odwrotnie.To mi się udało zrobić.Później chciałem podpiąć pod if switchonoff2 ==HIGH zmienną onoff=1; i adekwantnie do LOW na odwrót.Napisałem if który by to sprawdzał i w tym if umieściłem troche zaporzyczony kod od innego projektu.(troche przerobiłem).Problem tkwi w tym że jak włączam switchonoff2 to drugi pasek się uruchamia tylko problem w tym,że ten kod powoduje jakieś komplikacje i  dioda odświerza się tak jakby chciała a nie mogła.Automatycznie jak włącze diode to i druga odświerza sie tak z oporem jakby z delayem sporym.Nawet jak usunołem delay (10); problem nie znikną.Nagrałem film żeby to zilustrować:https://youtu.be/VYqGFTo82N4
Plus kod:
Kod:
#include "FastLED.h"
#define NUM_LEDS 2 // liczba led 1 paska
CRGB leds[NUM_LEDS]; //tablica 1 paska
#define PIN 7 // data ws2812b 1 paska
#define COLOR_ORDER GRB
int i = 255;
int j = 255;
int switchonnoff1 = 3; //switch włącz/wyłącz 1
int switchonnoff2 = 4; //switch włącz/wyłącz 2
//Animacja 2 paska led{
#define NUM_LEDSs 56
CRGBArray<NUM_LEDSs> ledss; //tablica 2 paska
uint8_t hue[NUM_LEDSs];
#define PINa 6 //data2 paska
int onoff = 0;
//}Animacja 2 paska led
void setup()
{
    FastLED.addLeds<WS2812B, PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
    //Animacja 2 paska led{
    FastLED.addLeds<NEOPIXEL, PINa>(ledss, NUM_LEDSs);
    for (int i = 0; i < NUM_LEDSs; i++) {
        hue[i] = 255 / NUM_LEDSs * i;
    }
    //}Animacja 2 paska led
}

void loop()
{
    leds[1].setRGB(255, 0, 255);
    leds[1].fadeLightBy(j);
    leds[0].setRGB(255, 255, 0);
    leds[0].fadeLightBy(i);
    if (digitalRead(switchonnoff1) == LOW) {
        if (i < 255) {
            i = i + 3;
        }
    }
    if (digitalRead(switchonnoff1) == HIGH) {
        if (i > 0) {
            i = i - 3;
        }
    }
    if (digitalRead(switchonnoff2) == LOW) {
        onoff = 0;
        if (j < 255) {
            j = j + 3;
        }
    }
    if (digitalRead(switchonnoff2) == HIGH) {
        onoff = 1;
        if (j > 0) {
            j = j - 3;
        }
    }
    FastLED.show();
    //Animacja 2 paska led{
    if (onoff == 1) {
        for (int i = 0; i < NUM_LEDSs; i++) {
            ledss[i] = CHSV(hue[i]++, 255, 255);
            FastLED.show();
        }
        //}Animacja 2 paska led
    }
}
 
Odpowiedź
#2
Na początek zainstaluj bibliotekę do obsługi przycisków tak by jedno naciśnięcie odpowiadało jednej na to reakcji w kodzie programu - w managerze bibliotek wpisz button, wybierz jakąś, naucz się jej używać, wróć do w/w programu.
 
Odpowiedź
#3
teraz pytanie która z tych bibliotek.


Załączone pliki Miniatury
   
 
Odpowiedź
#4
Żadnej z tych nie znam, do przycisków i tak  chyba tylko  ta OneButton się nadaje. Jak nie znam bibliotek to wybieram taką, która ma najwięcej aktualizacji, choć akurat w tym przypadku to tak sobie by się to sprawdziło - co tu uaktualniać. Niby masz tu duży wybór, ale w Arduino IDE ta lista wygląda tak:
   

a i tak nie ma tej, której akurat ja używam, czyli bounce2 (nie twierdzę, że najlepsza, pierwsza z brzegu znaleziona).
Przeglądaj, zobacz która jest dobrze opisana, która do Ciebie przemawia.
 
Odpowiedź
#5
Niestety z biblioteką One button jest tak samo.Próbowałem już chyba wszystkiego.
 
Odpowiedź
#6
Korzystanie z przycisków lub bibliotek to podstawowa umiejętność, jak pierwsze 3 literki w alfabecie gdy uczyłeś się czytać. Jak tego nie ogarniesz to daleko nie pojedziesz z tematem Arduino.
Użyj bounce2 i pokaż kod. Jak przycisk ma zadziałać w czasie działania pętli for to musi być na przerwaniu zewnętrznym.
 
Odpowiedź
#7
(19-05-2019, 20:29)kaczakat napisał(a): Korzystanie z przycisków lub bibliotek to podstawowa umiejętność, jak pierwsze 3 literki w alfabecie (...)
Super pomoc :-)
Dlaczego, jak byłeś lamerem, i odpisywałem ja Ty, wielki moderatorze, to mnie za to ganiłeś?
Cóż takiego przez 2 lata się zmieniło?
Ja zgłupiałem? Ty zmądrzałeś?

Nie chcesz pomagać jak 2..3 tata temu, teraz jesteś "Wielki Mądator".
Pisałem kiedyś, będziesz gorszy niż ja!
To już nastąpiło "wIELKI".


PS
Będę Cię piętnował przy każdej okazji, dopóki nie przyznasz, że miałem rację!
"Zapomniał wół jak cielęciem buł"!

PS2
Mój czas się kończy, dlatego jestem taki otwarty i bezpośredni, ale wku.... (denerwuje) mnie zachowanie takiego "wIELKIEGO" i innych jemu podobnych!
Kaczakat:
I zostanie Pan zapamiętany jako troll forów programistycznych, nieważne jakiej by Pan tam wiedzy o uC nie miał. Żal patrzeć... 
- Kod z Delay i/lub bez WDT (WDG) to nie kod, to DEMO!
- Wielowątkowość to najczęściej konieczność w dobrym programie.
- Kod wymaga komentarzy!
- Nie pomagam leniwym analfabetom. Sprawdzanie pisowni jest w każdej dobrej przeglądarce WWW.


 
Odpowiedź
#8
Nie wiem czy widziałeś remik ale ten moderator co robił tobie bagno na elektrodzie sam kiedyś pisał w jednym temacie 'specyfikacja specyfikacją ale praktyki są najważniejsze'
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości