试图用 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++ 书籍或至少做一些教程,直到您了解您将要使用的每个关键字。
我是编程新手,并尝试用 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++ 书籍或至少做一些教程,直到您了解您将要使用的每个关键字。