C++ C++;“开关箱”;“违约”;不';行不通
您好,我刚刚开始用我的Arduino Uno在C++中编程。 现在我想做一种活生生的颜色。我一步一步地这样做,现在我的最后一个问题是,当我有下一个病例时,灯不会熄灭 第一部分并不重要(我知道可以更好)。 但我的问题在最后一部分:C++ C++;“开关箱”;“违约”;不';行不通,c++,switch-statement,arduino-uno,C++,Switch Statement,Arduino Uno,您好,我刚刚开始用我的Arduino Uno在C++中编程。 现在我想做一种活生生的颜色。我一步一步地这样做,现在我的最后一个问题是,当我有下一个病例时,灯不会熄灭 第一部分并不重要(我知道可以更好)。 但我的问题在最后一部分:default 我希望有人能向我解释我做错了什么,这样每一盏灯都会熄灭,我可以改变每一盏灯的亮度,也许还有其他建议 对不起,我的英语不好 代码 #define BUTTON_PIN2 10 const int RGB_LED_BLUE = 6; const int RG
default
我希望有人能向我解释我做错了什么,这样每一盏灯都会熄灭,我可以改变每一盏灯的亮度,也许还有其他建议
对不起,我的英语不好
代码
#define BUTTON_PIN2 10
const int RGB_LED_BLUE = 6;
const int RGB_LED_GREEN = 5;
const int RGB_LED_RED = 3;
const int POTPIN = A0;
int color = 0;
int x = 0;
int potmeter = 0;
boolean button_state = LOW;
boolean current_button_state = LOW;
boolean previous_button_state = LOW;
void setup()
{
Serial.begin(9600);
pinMode(BUTTON_PIN2, INPUT);
pinMode(RGB_LED_BLUE,OUTPUT);
pinMode(RGB_LED_GREEN,OUTPUT);
pinMode(RGB_LED_RED,OUTPUT);
}
void loop()
{
current_button_state = digitalRead (BUTTON_PIN2);
if ((current_button_state == HIGH)&&
(current_button_state != previous_button_state))
color = x=x+1;
switch(color)
{
case 1:
{
potmeter = analogRead(POTPIN);
potmeter = potmeter /4;
analogWrite (RGB_LED_RED, potmeter);
}
break;
case 2:
{
potmeter = analogRead(POTPIN);
potmeter = potmeter /4;
analogWrite (RGB_LED_GREEN, potmeter);
}
break;
case 3:
{
potmeter = analogRead(POTPIN);
potmeter = potmeter /4;
analogWrite (RGB_LED_BLUE, potmeter);
x=0;
}
break;
default:
{
analogWrite (RGB_LED_RED, LOW);
analogWrite (RGB_LED_GREEN, LOW);
analogWrite (RGB_LED_BLUE, LOW);
}
}
previous_button_state = current_button_state;
delay(10);
}
在第3种情况下,您将x重置为0,然后在开关之前和指定给“颜色”之前,x再次增加,因此“颜色”仅获取值1、2和3。它决不是一个会触发default子句的值
移动
x=0语句将使其达到4以触发默认值。问题几乎肯定在默认执行的代码中(即在analogueWrite()
函数中)。因为这是一个非标准函数,没有人能帮助你——这不像人们可以心灵感应地推断出一些未知函数应该做什么,并识别其中的错误。@彼得是一个标准的ARDUIO函数“Eelk-”,它标记了问题C++。OP吸引了C++开发者的注意力——不仅仅是那些了解ARDUNO的人,而且希望他们能有所帮助。问题的提出方式也表明了这一点,这意味着问题在于语言功能的工作(开关
/默认值
)。如果这是期望值,OP有责任证明该声明,即证明函数被正确调用以实现预期结果的信念。否则,这个问题不应该被标记为C++。@彼得,它是相当标准的,用它所写的语言来标记每个问题,即使问题实际上是关于一些特定的非标准API /扩展。但是,是的,应该重新提问,询问ARDUNO的用法,而不是试图指责C++的特性。