试图用 WS2812 在我的 ESP8266 上用 Arduino 做一个时钟

Tried to do a clock in Arduino on my ESP8266 with WS2812

我是编程新手,并尝试用 RGB-LED-Ring 编程一个时钟,但我遇到了错误,只是不理解它们。 起初我用额外的方法尝试过,但我并不真正理解它们是如何工作的,所以我只是在循环中编写代码。 如果有人可以帮助并编写适合初学者的文章,那就太好了。


#include <Adafruit_NeoPixel.h>
#ifdef __AVR__

#endif

#define PIN        4


#define NUMPIXELS 24 // Popular NeoPixel ring size
#define Tag
#define STUNDEN
#define MINUTEN
#define SEKUNDEN
#define MULTIRSEK //Multiplikator für die Sekunden
#define MULTIMIN  //Multiplikator für die Minuten
#define MULTISTU  //Multiplikator für die Stunden
static int TAG = 0;
static int STUNDEN = 0;
static int MINUTEN = 0;
static int SEKUNDEN = 0;
static int MULTISEK = 0;
static int MULTIMIN = 0;
static int MULTISTU = 0;

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

#define DELAYVAL 500 // Time (in milliseconds) to pause between pixels

void setup() {
  pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}

void loop() {
  delay(1000);
  SEKUNDEN = SEKUNDEN + 1; //Die Uhr die läuft
  if (SEKUNDEN = 60 * MULTISEK) {
    MINUTEN = MINUTEN++;
    MULTISEK = MULTISEK++;
  }
  if (MINUTEN = 60 * MULTIMIN) {
    STUNDEN = STUNDEN++;
    MULTIMIN = MULTIMIN++;
  }
  if (STUNDEN = 60 * MULTISTU) {
    STUNDEN = STUNDEN++;
    MULTISTU = MULTISTU++;
  }
  if (Stunden = 24) {
    Tag = 0
          STUNDEN = 0;
    MINUTEN = 0;
    SEKUNDEN = 0;
    MULTIRSEK = 1; //Multiplikator für die Sekunden
    MULTIMIN = 1; //Multiplikator für die Minuten
    MULTISTU = 1; //Multiplikator für die Stunden
  }

  pixels.clear(); // Set all pixel colors to 'off'

  // The first NeoPixel in a strand is #0, second is 1, all the way up
  // to the count of pixels minus one.

  // pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255

  pixels.setPixelColor(STUNDEN, pixels.Color(0, 150, 0));

  pixels.show();   // Send the updated pixel colors to the hardware.

  delay(DELAYVAL); // Pause before next pass through loop
}
}

void clock() {
  delay(1000);
  SEKUNDEN = SEKUNDEN + 1 //Die Uhr die läuft
  if (SEKUNDEN = 60 * MULTISEK) {
    MINUTEN ++;
    MULTISEK ++;
  }
  if (MINUTEN = 60 * MULTIMIN) {
    STUNDEN ++;
    MULTIMIN ++;
  }
  if (STUNDEN = 60 * MULTISTU) {
    STUNDEN ++;
    MULTISTU ++;
  }
  if (Stunden = 24) {
    Tag 0
    STUNDEN 0;
    MINUTEN 0;
    SEKUNDEN 0;
    MULTIRSEK 1; //Multiplikator für die Sekunden
    MULTIMIN 1; //Multiplikator für die Minuten
    MULTISTU 1; //Multiplikator für die Stunden
  }
}
void reset() {
  Tag 0
  STUNDEN 0;
  MINUTEN 0;
  SEKUNDEN 0;
  MULTIRSEK 1; //Multiplikator für die Sekunden
  MULTIMIN 1; //Multiplikator für die Minuten
  MULTISTU 1; //Multiplikator für die Stunden
}

}

提前致谢

这里就不赘述了。在继续之前,请做一个关于 C++ 的初学者教程。您不需要进入模板或多态性等高级主题,但至少您应该了解基本语法。

你的代码没有任何意义。

#define MULTISEK 应该做什么?

后面特别是static int MULTISEK = 0;

如果您不知道预处理器指令的作用,为什么要使用它们?

if (Stunden = 24)

= 是赋值运算符。您要在此处使用 == 等于运算符。

void reset() {
  Tag 0
  STUNDEN 0;
  MINUTEN 0;
  SEKUNDEN 0;
  MULTIRSEK 1; //Multiplikator für die Sekunden
  MULTIMIN 1; //Multiplikator für die Minuten
  MULTISTU 1; //Multiplikator für die Stunden

此处每一行都缺少赋值运算符 =

请理解您的代码存在太多问题,无法在此处提供更好的答案。我建议您阅读一本 C++ 书籍或至少做一些教程,直到您了解您将要使用的每个关键字。