Learn Arduino with Olympia Circuits
Learn Arduino
  • Home
    • Get Started
    • How to Use This Site
  • Electronics
    • The Basics
    • Electricity Flows like Water
    • Electronic Components
    • The Arno Board
  • Programming
    • The Basics
    • setup and loop Blocks
    • Variables and Arrays
    • Connecting with the Pins
    • Flow Control >
      • if Statement
      • Loops
      • Delays
    • Functions
    • Serial Communication
    • USB
    • Some Thoughts
  • Projects
    • Projects 1 >
      • 1.01: Blink
      • 1.02 Blink x2
      • 1.03 Blink Faster
      • 1.04 LED Chase!
      • 1.05 Wait To Blink
      • 1.06 Blink a Little Faster Now
      • 1.07 LED Fade
      • 1.08 RGB Blink
      • 1.09 Change RGB Color with SW1
      • 1.10 Fade RGB Colors
      • 1.11 Reaction Time Game
    • Projects 2 >
      • 2.01 Hello World
      • 2.02 Talk Back
      • 2.03 ASCII Values
      • 2.04 Ski Game
      • 2.05 Demonstration of the String Object
    • Projects 3 >
      • 3.01 Read the Potentiometer
      • 3.02 ASCIIbet Soup
      • 3.03 Potentiometer sets LED Brightness
      • 3.04 Potentiometer Sets Blink Rate
      • 3.05 LED Chase, Part II
    • Projects 4 >
      • 4.01 Bringing the Piezo to Life
      • 4.02 Controlling the Piezo with a Function
      • 4.03 Piezo C Major
      • 4.04 Piezo Greensleaves
      • 4.05 Piezo Metronome
      • 4.06 Piezo as an Input
      • 4.07 Piezo as an Input 2
      • 4.08 Metronome II
      • 4.09 Piezo Playback
      • 4.10 Piezo Fireworks
      • 4.11 Piezo Mosquito
    • Projects 5 >
      • 5.01 The Phototransistor
      • 5.02 Light and Sound
      • 5.03 Light and Sound II
    • Projects 6 >
      • 6.01 EEPROM
      • 6.02 I2C Address Scan
      • 6.03 Read the I2C Temperature Sensor
      • 6.04 High Temperature Alarm
    • Projects 7 >
      • 7.01 Arno Phone Home
      • 7.02 Keyboard Alphabet
      • 7.03 Move Mouse
      • 7.04 Draw Squares
    • Special Projects >
      • Bike Light Demo
  • References
    • Arno Pin Key
    • Arno Schematic
    • Project Index

Project 1.08 RGB Blink 

In this project, we’ll blink the different colors of the RGB LED.  The sketch is simple, but it’s long for what it does.  In the next project, we’ll use more elegant programming to switch the RGB colors.  Upload this sketch and then watch the RGB LED.


Concepts: variable delay, multichannel device

Circuits: 
  • Circuit 3


  • Select Sketch

    ///////////////////////////////////////////////////
    //Project 7 Blink RGB Colors
    int redLED = 9;
    int greenLED = 10;
    int blueLED = 11;
    int wait = 250;
    void setup(){
    pinMode(redLED,OUTPUT);
    pinMode(greenLED,OUTPUT);
    pinMode(blueLED,OUTPUT);
    }
    void loop(){
    digitalWrite(blueLED,LOW);
    digitalWrite(redLED,HIGH);
    delay(wait);
    digitalWrite(redLED,LOW);
    digitalWrite(greenLED,HIGH);
    delay(wait);
    digitalWrite(greenLED,LOW);
    digitalWrite(blueLED,HIGH);
    delay(wait);
    wait = wait - 10;
    if(wait < 0) wait = 250;
    }
    ///////////////////////////////////////////////////

    Each channel of the RGB LED is connected to a different pin on the Arno.  We declare a variable for each pin at the beginning of the sketch:

    int redLED = 9;

    int greenLED = 10;

    int blueLED = 11;

    Likewise, we set each pinMode to an output in the setup() block:

      pinMode(redLED,OUTPUT);

      pinMode(greenLED,OUTPUT);

      pinMode(blueLED,OUTPUT);

    In the loop() block, we turn the colors on one after another.  The time between changes is set by the variable wait. First red:

        digitalWrite(blueLED,LOW);

      digitalWrite(redLED,HIGH);

      delay(wait);

    Then green:

      digitalWrite(redLED,LOW);

      digitalWrite(greenLED,HIGH);

      delay(wait);

    And finally blue:

      digitalWrite(greenLED,LOW);

      digitalWrite(blueLED,HIGH);

      delay(wait);

    We reduce the value of wait to cycle through the colors faster and faster.  When wait drops too low, we reset it to 250:

      wait = wait - 10;

      if(wait < 0) wait = 250; 

     


    Back to Projects 1

    Copyright Olympia Circuits LLC 2014. All Rights Reserved.