0
私は部屋rgb ledストリップのledコントローラを作成しようとしています。 私はarduino unoを使用しています。 2つのプッシュボタンを使用して2つのプログラムを切り替える
両方のプログラムを個別に動作し
- 制御するLEDの静的な色(再びその同じスイッチを押すことでtime.cycles色で1色)
- RGBのクロスフェード:私は2つのプッシュボタンが欲しいです。ここでは、これらの2つのプログラムを1つのスケッチにして、2つの押しボタン、カラーサイクルとクロスフェードで切り替えます。 スケッチが機能しますが、1つの押しボタンだけが機能しています。 私は様々なガイドとチュートリアルに従って2つのボタンで2つの10kΩ抵抗を接続しました。私は配線が正しいと思います。私は2番目のプログラムの条件場合を逆ならば今... 2番目のプログラムが実行さ
const int buttonPin1 = 2; // button 1 const int buttonPin2 = 3; // button 2 const int redPin = 9; // red led pin const int greenPin = 11; // green led pin const int bluePin = 10; // blue led pin int pushCounter = 0; // push counter for changing colors at each press int buttonState = 0; // button state i.e. HIGH or LOW int lastButtonState = 0; void setup() { pinMode(buttonPin1, INPUT); pinMode(buttonPin2, INPUT); pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); setColourRgb(0,0,0); } void setColor(int red, int green, int blue) // function for setting custom colors { //#ifdef COMMON_ANODE //red = 255 - red; //green = 255 - green; //blue = 255 - blue; //#endif analogWrite(redPin, red); analogWrite(greenPin, green); analogWrite(bluePin, blue); } void setColourRgb(unsigned int red, unsigned int green, unsigned int blue) { //function for setting crossfade colors analogWrite(redPin, red); analogWrite(greenPin, green); analogWrite(bluePin, blue); } void loop() { int buttonState1 = 0; int buttonState2 = 0; buttonState1 = digitalRead(buttonPin1); //reads button states buttonState2 = digitalRead(buttonPin2); if ((buttonState1 == HIGH) && (buttonState2 == LOW)) //compares button states of both switches to enable the correct program { buttonState = digitalRead(buttonPin1); if (buttonState != lastButtonState) { if (buttonState == HIGH) //increases pushcounter of button1 on every press { pushCounter++; } } //delay(1); lastButtonState = buttonState; if (pushCounter == 1) //custom led colors { setColor(255, 0, 0);}; //red if (pushCounter == 2) { setColor(0, 255, 0);}; //green if (pushCounter == 3) { setColor(0, 0, 255);}; //blue if (pushCounter == 4) { setColor(255,200,255);}; //white if (pushCounter == 5) { setColor(255,255,0);}; //lime if (pushCounter == 6) { setColor(0,255,255);}; //aqua if (pushCounter == 7) { setColor(255,0,255);}; //violet if (pushCounter == 8) { setColor(128,0,128);}; //dim_violet if (pushCounter == 9) { pushCounter = 0;} } if ((buttonState1 == LOW) && (buttonState2 == HIGH)) //compares button states to load second program { unsigned int rgbColour[3]; // Start off with red. rgbColour[0] = 255; //sets first color rgbColour[1] = 0; rgbColour[2] = 0; // Choose the colours to increment and decrement. for (int decColour = 0; decColour < 3; decColour += 1) { int incColour = decColour == 2 ? 0 : decColour + 1; // cross-fade the two colours. for(int i = 0; i < 255; i += 1) { rgbColour[decColour] -= 1; rgbColour[incColour] += 1; setColourRgb(rgbColour[0], rgbColour[1], rgbColour[2]); delay(30); } } }; }
が、最初は実行されません。ここで
はスケッチです。ここで何が間違っていますか?