학습자료실
rgb_nightlight.ino | |
const int GLED=9; //Blue LED on Pin 9
const int BLED=10; //Green LED on Pin 10 const int RLED=11; //Red LED on Pin 11 const int BUTTON=2; //The Button is connected to pin 2 boolean lastButton = LOW; //Last Button State boolean currentButton = LOW; //Current Button State int ledMode = 0; //Cycle between LED states void setup() { pinMode (BLED, OUTPUT); //Set Blue LED as Output pinMode (GLED, OUTPUT); //Set Green LED as Output pinMode (RLED, OUTPUT); //Set Red LED as Output pinMode (BUTTON, INPUT); //Set button as input (not required) } boolean debounce(boolean last) { boolean current = digitalRead(BUTTON); if (last != current) //if it's different... { delay(5); //wait 5ms current = digitalRead(BUTTON); //read it again } return current; //return the current value } void setMode(int mode) { if (mode == 1) { digitalWrite(RLED, HIGH); digitalWrite(GLED, LOW); digitalWrite(BLED, LOW); } else if (mode == 2) { digitalWrite(RLED, LOW); digitalWrite(GLED, HIGH); digitalWrite(BLED, LOW); } else if (mode == 3) { digitalWrite(RLED, LOW); digitalWrite(GLED, LOW); digitalWrite(BLED, HIGH); } else if (mode == 4) { digitalWrite(RLED, HIGH); digitalWrite(GLED, LOW); digitalWrite(BLED, HIGH); } //TEAL (BLUE+GREEN) else if (mode == 5) { digitalWrite(RLED, LOW); digitalWrite(GLED, HIGH); digitalWrite(BLED, HIGH); } //ORANGE (GREEN+RED) else if (mode == 6) { digitalWrite(RLED, HIGH); digitalWrite(GLED, HIGH); digitalWrite(BLED, LOW); } //WHITE (GREEN+RED+BLUE) else if (mode == 7) { digitalWrite(RLED, HIGH); digitalWrite(GLED, HIGH); digitalWrite(BLED, HIGH); } //OFF (mode = 0) else { digitalWrite(RLED, LOW); digitalWrite(GLED, LOW); digitalWrite(BLED, LOW); } } void loop() { currentButton = debounce(lastButton); //read debounced state if (lastButton == LOW && currentButton == HIGH) //if it was pressed... { ledMode++; //increment the LED value } lastButton = currentButton; //reset button value //if you’ve cycled through the different options, reset the counter to 0 if (ledMode == 8) ledMode = 0; setMode(ledMode); //change the LED state } |
|
파일 | |
---|---|