C++ 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

您好,我刚刚开始用我的Arduino UnoC++中编程。 现在我想做一种活生生的颜色。我一步一步地这样做,现在我的最后一个问题是,当我有下一个病例时,灯不会熄灭

第一部分并不重要(我知道可以更好)。 但我的问题在最后一部分:
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++的特性。