• 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
WS2812B + enkoder do sterowania jasnością diód
#7
No widzę, że kolega otrzymał wsparcie od naszych przodowników pomagania.
Teraz, jak już ochłonąłeś z nadmiaru pomagactwa, zrób jako piszę.
Ściągnij sobie bibliotekę Rotary, i w swoim projekcie dopisz parę linijek kodu.
Musisz zmienić pin, pod który podpiąłeś pasek z diodami. INT2, oraz INT3 obsługują przerwania sprzętowe i będzie to nam potrzebne. Podepnij więc swój enkoder pod piny 2 i 3.
Na samym początku, na górze wpisz

Kod:
#include <rotary.h>

Dołączysz wtedy bibliotekę obsługi enkodera.
Teraz stworzymy obiekt klasy Rotary.

Kod:
Rotary enkoder = Rotary(2,3); // enkoder to nazwa własna i możesz ten obiekt nazwać jak chcesz.

Instrukcję 
Kod:
strip.setBrightness(JASNOSC);
przenieś do funkcji loop();
Napiszemy też funkcję obsługi przerwania od enkodera.
To znaczy, gdy obrócisz pokrętłem, na INT2 podany zostanie impuls, który zatrzyma wykonywany program i zacznie wykonywać program obsługi przerwania.

Kod:
ISR(PCINT2_vect) {
  unsigned char result = enkoder.process();
  if (result) {
        if (result == DIR_CW) JASNOSC++;
        else JASNOSC--;
        if (JASNOSC >=255) JASNOCS=255;
        if (JASNOSC <=0) JASNOSC=0;
        }
 }

I powinno być dobrze.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Wiadomości w tym wątku
RE: WS2812B + enkoder do sterowania jasnością diód - przez Robson Kerman - 16-11-2018, 23:21

Skocz do:


Przeglądający: 1 gości