访问Arduino中的结构数组数据

时间:2017-08-03 06:49:08

标签: c++ arrays struct arduino

我很难在我的Arduino Uno上创建和访问存储在struct数组中的数据。

我对C ++ / Arduino不太熟悉,但在我的脑海里,下面应该有用。 灯光和东西都可以与其他代码一起使用,但在尝试用光线改变灯光时不起作用。[/]。

可能与指针有关,但我仍然不确定何时/何地使用它们。

struct light
{
  byte k;
  byte r;
  byte g;
  byte b;
};

typedef struct light Light;

Light l1;
Light l2;
Light l3;

Light lights[3] = {l1, l2, l3};

void setup() {
    l1 = {0, 0, 0, 0};
    l2 = {0, 0, 0, 0};
    l3 = {0, 0, 0, 0};
}

void loop()
{
    l1 = {0, 0, 0, 0};
    l2 = {0, 0, 0, 0};
    l3 = {0, 0, 0, 0};


    //turn on different light every 3 seconds
    int i;

    if (millis() % 9000 < 3000) {
      i = 0;
    } else if ((millis() % 9000 >= 3000) && (millis() % 9000 < 6000)) {
      i = 1;
    } else {
      i = 2;
    }

    lights[i] = {255, 255,0, 0};

    // if this is uncommented l1 turns red
    //l1 = {255,255,0,0}

    //passes light data to DMX controller (works fine)
    ~turnOnlight(l1)
    ~turnOnLight(l2)
    ~turnOnLight(l3)
}

提前感谢。

1 个答案:

答案 0 :(得分:0)

您可能希望阵列指向相应的灯光,然后您需要Light * lights [3] = {&amp; l1,&amp; l2,&amp; l3},并且在访问阵列成员时您必须取消引用指针像这样* lights [i] = {255,255,0,0};