ARDUINO Непонятки по проекту AlexGyver скетчей

Zmeyar

✩✩✩✩✩✩✩
18 Май 2024
2
0
Добрый вечер.

Самоучка по ардуино, пытаюсь разобраться с некоторыми моментами в данном коде
отдельный код из проекта по адресной ленте, хочу просто этот единственный эффект записать в ардуино
C++:
#include "FastLED.h"
#define NUM_LEDS 144
#define DATA_PIN 13


CRGB leds[NUM_LEDS];

void setup() {
           FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
           Serial.begin(9600);
}

void loop() {
byte *c;

  for (int j = 0; j < 256; j++) {   // cycle all 256 colors in the wheel
    for (int q = 0; q < 3; q++) {
      for (int i = 0; i < NUM_LEDS; i = i + 3) {
        c = Wheel( (i + j) % 255);
        setPixel(i + q, *c, *(c + 1), *(c + 2)); //turn every third pixel on
      }
      FastLED.show();
      delay(SpeedDelay);
      for (int i = 0; i < NUM_LEDS; i = i + 3) {
        setPixel(i + q, 0, 0, 0);    //turn every third pixel off
      }
    }
  }
}
Не понятно что такое Wheel и setPixel
уже и переменные присваивал, и пытался переназначить другим именем. при компиляции ругается на эти команды. За что они отвечают ? подскажите пожалуйста
Весь инет перерыл но ничего по разъяснению не нашел.

Сразу еще вопрос почему в начале присваивается
byte *c; со звездочкой
а тут
c = Wheel( (i + j) % 255);
setPixel(i + q, *c, *(c + 1), *(c + 2));
без звездочки и в следующей строчке еще и за скобками.

Если не против, тут буду спрашивать в дальнейшем, если что то не понятно.
 
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,364
1,494
@Zmeyar,
1. Код нужно вставлять на форум через кнопку на панели "Вставить код".
2. Выше и ниже loop() должен быть и другой код, в котором может оказаться описание Wheel и setPixel.
3. В этом коде могут быть строки, подключающие другие файлы и библиотеки, в которых может оказаться описание Wheel и setPixel.
4. По правилам хорошего тона в архиве со скетчем лежат все необходимые файлы.
5. Фрагменты кода со страниц уроков по программированию не обязаны быть самодостаточными, как полноценный архив со скетчем.

Про звёздочки с типами и переменными - гуглите "звездочки указатели cpp".
 
  • Лойс +1
Реакции: Zmeyar

Сотнег

★★★★★★★
15 Янв 2020
4,364
1,494
@Zmeyar,
ваш код не полный.
Предположу, что он скопирован с каких-то уроков по программированию, и вы пропустили многие из этих уроков.
На каком-то из предыдущих уроков должен быть код типа uint32_t Wheel(byte WheelPos)...

И про звёздочки, наверняка, тоже был урок.
Через звёздочку можно получить число из ячейки памяти, зная адрес этой ячейки.
В переменной "с" храним адрес ячейки, по *(с+1) получаем значение данных, хранимое в следующей за ней ячейке (массивы данных хранятся в ячейках друг за другом).
 

Zmeyar

✩✩✩✩✩✩✩
18 Май 2024
2
0
Пока выкрутился вот так. С другими командами разбираюсь, не получается догнать как работают.
Код:
#include "FastLED.h"
#define NUM_LEDS 144
#define DATA_PIN 13
//int Wheel;
//int SpeedDelay;
CRGB leds[NUM_LEDS];

void setup() {
           FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
           Serial.begin(9600);
           LEDS.setBrightness(200);
       
}

void loop() {

//byte *c;
//byte * Wheel(byte WheelPos);
//uint16_t i, j;
int led;
  for (int j = 0; j < 256; j++) {   // cycle all 256 colors in the wheel
    leds[led] = CHSV(j,255,200);
      //  for (int q = 0; q < 3; q++) {
      for (led = NUM_LEDS - 1; led > 0; led = led - 1) leds[led] = leds[led - 1];{
        FastLED.show();
       // c = Wheel((i + j) % 255);
       // setPixel(i + q, *c, *(c + 1), *(c + 2)); //turn every third pixel on
      }
      delay(30);
     // for (int i = 0; i < NUM_LEDS; i = i + 3) {
    //    setPixel(int Pixel, byte red, byte green, byte blue);
     //   setPixel(i + q, 0, 0, 0);    //turn every third pixel off
      }
    }