2017-10-14 98 views
-1

你好,我刚刚开始编程C + +与我的Arduino Uno。 现在我想制作一些活色彩。我一步一步地做这件事,现在我的最后一个问题是,当我有下一个案子时,灯不熄灭。C++开关的情况下,“默认”不起作用

第一部分并不重要(我知道它可以更好)。 但对我来说问题在于最后一部分: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); 
} 
+0

问题几乎可以肯定地在默认执行的代码中(即在你的'analogueWrite()'函数中)。由于这是一个非标准功能,没有人能够帮助你 - 它不像人们可以通过心灵感应推断出某个未知功能应该做的事情,并识别其中的错误。 – Peter

+0

@Peter它是一个标准的Arduino函数https://www.arduino.cc/en/Reference/AnalogWrite – Eelke

+0

@Eelke - 标记了C++的问题后,OP引起了C++开发者的注意 - 不仅仅是那些谁了解arduino - 期待他们能够提供帮助。问题的提出方式也暗示了这一点 - 暗示问题出在语言功能的工作中('switch' /'default')。如果这是期望,OP的责任就是证明这一说法是合理的 - 即证明相信函数被正确调用以实现预期结果。否则,该问题不应该被标记为C++。 – Peter

回答

2

您在壳体3复位x到0,然后将其再次是增大开关之前,它被分配给颜色之前所以颜色只得到的值1,2和3它永远不会触发默认子句的值。

x=0;语句移动到默认子句将使其达到4以触发默认设置。