【发布时间】:2020-09-15 23:40:17
【问题描述】:
我是一个新的arduino用户,所以我现在正在学习......
我想创建一个新类来控制我的 RGB LED...
我已经在我的代码中使用了这个 led 和一个方法......但是我想概括代码以在没有 ctrl+c ctrl+v 我的代码的情况下放置更多 led。
我创建了类:
/*
STATUSLED CLASS DEFINITION
*/
class StatusLED {
int pinVermelho;
int pinVerde;
int pinAzul;
public:
StatusLED(int pinRed, int pinGreen, int pinBlue) {
this->pinVermelho = pinRed;
this->pinVerde = pinGreen;
this->pinAzul = pinBlue;
}
void RGB(int red, int green, int blue) {
Serial.print("StatusLED.RGB(");
Serial.print(red);
Serial.print(", ");
Serial.print(green);
Serial.print(", ");
Serial.print(blue);
Serial.println(");");
digitalWrite(pinVermelho, 255 - red);
digitalWrite(pinVerde, 255 - green);
digitalWrite(pinAzul, 255 - blue);
}
};
我用我的 RBG led 的引脚对其进行初始化:
#define pinoAzul 9
#define pinoVerde 10
#define pinoVermelho 11
StatusLED led(pinoVermelho, pinoVerde, pinoAzul);
为了测试它我使用:
void setup() {
pinMode(pinoAzul, OUTPUT);
digitalWrite(pinoAzul, LOW);
pinMode(pinoVerde, OUTPUT);
digitalWrite(pinoVerde, LOW);
pinMode(pinoVermelho, OUTPUT);
digitalWrite(pinoVermelho, LOW);
}
void loop() {
led.RGB(255, 0, 0);
delay(1000);
led.RGB(0, 255, 0);
delay(1000);
led.RGB(0, 0, 255);
delay(1000);
}
调用了RGB方法,但是我的led不亮。
如果我将 RGB 方法移到我的班级之外,这可以正常工作。
谁能告诉我我在做什么?
【问题讨论】:
-
digitalWrite 采用 HIGH 或 LOW。我想你可能想看看analogWrite。
-
为什么对 0-255 范围内的值使用整数?为什么
255- red?你的接线呢?你检查它是否正确?使用analogWrite,您是否将引脚配置为输出? -
我使用 0 到 255 的值,因为我使用 PWD 端口。 255 - 红色是因为我使用的是阳极 comum RGB。我在 setup() 上将引脚配置为输出;
-
你能提供更多你的代码吗?例如设置方法等
标签: arduino arduino-uno arduino-c++