Tuesday, September 11, 2018

RGB Lights and Buttons

1)
const int BLED=9;
const int GLED=10;
const int RLED=11;
const int BUTTON=2;
const int BUTTON_2=3;
boolean lastButton = LOW;
boolean currentButton = LOW;
int ledMode = 0;
void setup()
{
  pinMode (BLED, OUTPUT);
  pinMode (GLED, OUTPUT);
  pinMode (RLED, OUTPUT);
  pinMode (BUTTON, INPUT);
  pinMode (BUTTON_2, INPUT);
}
boolean debounce(boolean last)
{
  boolean current = digitalRead(BUTTON);
  if (last != current)
  {
    delay(5);
    current = digitalRead(BUTTON);
  }
  return current;
}
void setMode (int mode)
{
  //RED
  if (mode == 1)
  {
    digitalWrite(RLED, HIGH);
    digitalWrite(GLED, LOW);
    digitalWrite(BLED, LOW);
    if (digitalRead(BUTTON_2) == HIGH)
    {
      digitalWrite(RLED, HIGH);
      digitalWrite(GLED, LOW);
      digitalWrite(BLED, LOW);
      delay(100);
      digitalWrite(RLED, LOW);
      digitalWrite(GLED, LOW);
      digitalWrite(BLED, LOW);
      delay(100);
    }
  }
  //GREEN
  else if (mode == 2)
  {
    digitalWrite(RLED, LOW);
    digitalWrite(GLED, HIGH);
    digitalWrite(BLED, LOW);
    if (digitalRead(BUTTON_2) == HIGH)
    {
      digitalWrite(RLED, LOW);
      digitalWrite(GLED, HIGH);
      digitalWrite(BLED, LOW);
      delay(100);
      digitalWrite(RLED, LOW);
      digitalWrite(GLED, LOW);
      digitalWrite(BLED, LOW);
      delay(100);
    }
  }
 
  //BLUE
  else if (mode == 3)
  {
    digitalWrite(RLED, LOW);
    digitalWrite(GLED, LOW);
    digitalWrite(BLED, HIGH);
    if (digitalRead(BUTTON_2) == HIGH)
    {
      digitalWrite(RLED, LOW);
      digitalWrite(GLED, LOW);
      digitalWrite(BLED, HIGH);
      delay(100);
      digitalWrite(RLED, LOW);
      digitalWrite(GLED, LOW);
      digitalWrite(BLED, LOW);
      delay(100);
    }
  }
  //PURPLE (RED+BLUE)
  else if (mode == 4)
  {
    analogWrite(RLED, 127);
    analogWrite(GLED, 0);
    analogWrite(BLED, 127);
    if (digitalRead(BUTTON_2) == HIGH)
    {
      analogWrite(RLED, 127);
      analogWrite(GLED, 0);
      analogWrite(BLED, 127);
      delay(100);
      digitalWrite(RLED, LOW);
      digitalWrite(GLED, LOW);
      digitalWrite(BLED, LOW);
      delay(100);
    }
  }
  //TEAL (GREEN+BLUE)
  else if (mode == 5)
  {
    analogWrite(RLED, 0);
    analogWrite(GLED, 127);
    analogWrite(BLED, 127);
    if (digitalRead(BUTTON_2) == HIGH)
    {
      analogWrite(RLED, 0);
      analogWrite(GLED, 127);
      analogWrite(BLED, 127);
      delay(100);
      digitalWrite(RLED, LOW);
      digitalWrite(GLED, LOW);
      digitalWrite(BLED, LOW);
      delay(100);
    }
  }
  //ORANGE (RED+YELLOW)
  else if (mode == 6)
  {
    analogWrite(RLED, 255);
    analogWrite(GLED, 50);
    analogWrite(BLED, 0);
    if (digitalRead(BUTTON_2) == HIGH)
    {
      analogWrite(RLED, 255);
      analogWrite(GLED, 50);
      analogWrite(BLED, 0);
      delay(100);
      digitalWrite(RLED, LOW);
      digitalWrite(GLED, LOW);
      digitalWrite(BLED, LOW);
      delay(100);
    }
  }
  //WHITE (ALL TOGETHER)
  else if (mode == 7)
  {
    analogWrite(RLED, 255);
    analogWrite(GLED, 255);
    analogWrite(BLED, 255);
    if (digitalRead(BUTTON_2) == HIGH)
    {
      analogWrite(RLED, 255);
      analogWrite(GLED, 255);
      analogWrite(BLED, 255);
      delay(100);
      digitalWrite(RLED, LOW);
      digitalWrite(GLED, LOW);
      digitalWrite(BLED, LOW);
      delay(100);
    }
  }
  //OFF (mode = 0)
  else
  {
    digitalWrite(RLED, LOW);
    digitalWrite(GLED, LOW);
    digitalWrite(BLED, LOW);
  }
}
void loop()
{
  currentButton = debounce(lastButton);
  if (lastButton == LOW && currentButton == HIGH)
  {
    ledMode++;
  }
  lastButton = currentButton;
  //if you've cycled through the differnt options,
  //reset the counter to 0
  if (ledMode == 8) ledMode = 0;
  setMode(ledMode);
}

2)
const int BLED=9;
const int GLED=10;
const int RLED=11;
const int BUTTON=2;
const int BUTTON_2=3;
boolean lastButton = LOW;
boolean currentButton = LOW;
int ledMode = 0;
void setup()
{
  pinMode (BLED, OUTPUT);
  pinMode (GLED, OUTPUT);
  pinMode (RLED, OUTPUT);
  pinMode (BUTTON, INPUT);
  pinMode (BUTTON_2, INPUT);
}
boolean debounce(boolean last)
{
  boolean current = digitalRead(BUTTON);
  if (last != current)
  {
    delay(5);
    current = digitalRead(BUTTON);
  }
  return current;
}
void setMode (int mode)
{
  switch (ledMode)
  {
    case 1:
    //RED
    digitalWrite(RLED, HIGH);
    digitalWrite(GLED, LOW);
    digitalWrite(BLED, LOW);
    break;
    case 2:
    //GREEN
    digitalWrite(RLED, LOW);
    digitalWrite(GLED, HIGH);
    digitalWrite(BLED, LOW);
    break;
    case 3:
    //BLUE
    digitalWrite(RLED, LOW);
    digitalWrite(GLED, LOW);
    digitalWrite(BLED, HIGH);
    case 4:
    //PURPLE (RED+BLUE)
    analogWrite(RLED, 127);
    analogWrite(GLED, 0);
    analogWrite(BLED, 127);
    break;
    case 5:
    //TEAL (GREEN+BLUE)
    analogWrite(RLED, 0);
    analogWrite(GLED, 127);
    analogWrite(BLED, 127);
    break;
    case 6:
    //ORANGE (RED+YELLOW)
    analogWrite(RLED, 255);
    analogWrite(GLED, 50);
    analogWrite(BLED, 0);
    break;
    case 7:
    //WHITE (ALL TOGETHER)
    analogWrite(RLED, 255);
    analogWrite(GLED, 255);
    analogWrite(BLED, 255);
    break;
    default:
    //OFF (mode = 0)
    digitalWrite(RLED, LOW);
    digitalWrite(GLED, LOW);
    digitalWrite(BLED, LOW);
    break;
  }
}
void loop()
{
  currentButton = debounce(lastButton);
  if (lastButton == LOW && currentButton == HIGH)
  {
    ledMode++;
  }
  lastButton = currentButton;
  //if you've cycled through the differnt options,
  //reset the counter to 0
  if (ledMode == 8) ledMode = 0;
  setMode(ledMode);
}

3)
const int BLED=9;
const int GLED=10;
const int RLED=11;
const int BUTTON=2;
const int BUTTON_2=3;
const int BUTTON_3=4;
void setup()
{
  pinMode (BLED, OUTPUT);
  pinMode (GLED, OUTPUT);
  pinMode (RLED, OUTPUT);
  pinMode (BUTTON, INPUT);
  pinMode (BUTTON_2, INPUT);
  pinMode (BUTTON_3, INPUT);
}
void loop()
{
  if (digitalRead(BUTTON_3) == HIGH)
  {
    digitalWrite(RLED, HIGH);
    digitalWrite(GLED, LOW);
    digitalWrite(BLED, LOW);
  }
  else
  {
    digitalWrite(RLED, LOW);
    digitalWrite(GLED, LOW);
    digitalWrite(BLED, LOW);
  }
  if (digitalRead(BUTTON) == HIGH)
  {
    digitalWrite(RLED, LOW);
    digitalWrite(GLED, HIGH);
    digitalWrite(BLED, LOW);
  }
  else
  {
    digitalWrite(RLED, LOW);
    digitalWrite(GLED, LOW);
    digitalWrite(BLED, LOW);
  }
  if (digitalRead(BUTTON_2) == HIGH)
  {
    digitalWrite(RLED, LOW);
    digitalWrite(GLED, LOW);
    digitalWrite(BLED, HIGH);
  }
  else
  {
    digitalWrite(RLED, LOW);
    digitalWrite(GLED, LOW);
    digitalWrite(BLED, LOW);
  }
}

No comments:

Post a Comment