• 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
NeoMatrix, tablica z koordynatami
#1
Witam, 
jestem nowy, chciałem się trochę pobawić arduinkiemSmile
Mam problem, bo nie wiem jak mam zaimplementować pewną rzecz. Opiszę na przykładnie.

Na wstępie, mam diody neopixel połączone ze sobą ostatecznie będzie układ 10 x 10. Teraz testuje połączone ze sobą 3 diody.
Korzystam z bibliotek:
Adafruit_NeoMatrix.h
Adafruit_NeoPixel.h
Adafruit_GFX.h


Teraz opisze na czym polega mój problem:
W NeoMatrix jest polecenie 
Kod:
drawFastHLine(uint8_t x0, uint8_t y0, uint8_t length, uint16_t color);
Podajemy tutaj położenie pierwszego pixela i ilość pixeli która będzie się świeciła od tego pixela + kolor.

Chcę mieć przed programem zmienne w postaci tablicy w której będą się znajdować x0, y0, lenght, a następnie chcę je "wrzucać" w drawFastHLine.

mniej więcej chodzi o to (taki wycinek kodu)
Kod:
const int test3diody[3] = {0, 0, 2}; // zaczynamy od diody w pozycji 0 0 i zapalamy 2 diody

.... (tablice powyżej chcę umieszczać tutaj poniżej)

drawFastHLine(test3diody, jakiśKolor);

ale niestety po kompilacji leci "candidate expects 4 arguments, 2 provided".

Proszę o poradę jak to zrobić żeby w drawFastHLine mogło zczytywać koordynaty i długość z tablicy
 
Odpowiedź
#2
Witam,
W wywolaniu funkcji powinno być:
(test3diody[0], test3diody[1],test3diody[2], jakisKolor)
Pozdrawiam
 
Odpowiedź
#3
Już sobie poradziłem.
Ogólnie takich "const int " będzie wiele z różnymi koordynatami.
Dlatego do wyświetlenia ich po prostu zrobiłem taką funkcję:

const int w_it[3] = { 0, 0, 3 };
const int w_is[3] = { 2, 1, 3 };
....

void setDiode(const int wordArr[3]){
matrix.drawFastHLine(wordArr[0], wordArr[1], wordArr[2] , ledColor);
}

i wyświetlam
setDiode(w_it);
 
Odpowiedź
#4
Ale mam jeszcze mały problem, tak jak pisałem mam połączone ze sobą 3 diody dlatego NeoMatix ustawiałem tak:
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix( 3, 1, 6, // - szerokość = 3, wysokość =1
NEO_MATRIX_TOP + NEO_MATRIX_RIGHT +
NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE,
NEO_GRB + NEO_KHZ800);

po użyciu tego
matrix.drawFastHLine(0, 0, 1, ledColor);
jest ogólnie ok tylko że zaświeca się ostatnia dioda, a nie pierwsza podłączona do arduino.
Dlaczego tak jest?
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości