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.05 wait to blink

 Now we’ll expand Project 1.01 to include user input.  Upload this sketch to your Arno, and wait, and wait, and … nothing happens.  Not until you press SW1.


Concepts: conditional statement, while loop, digitalRead

Circuits:
  • Circuit 1
  • Circuit 2


  • Select Sketch

    int LED1 = 13;
    int SW1 = 1;
    int isPress = HIGH;
    void setup(){
    pinMode(LED1,OUTPUT);
    pinMode(SW1,INPUT);
    //just wait until the button is pressed
    while(isPress == HIGH){
    // keep checking button
    isPress = digitalRead(SW1);
    }
    }
    void loop(){
    digitalWrite(LED1,HIGH);
    delay(1000);
    digitalWrite(LED1,LOW);
    delay(1000);
    }
    ///////////////////////////////////////////////////

    Since we’re going to use SW1 we declare the variable with the correct pin number at the beginning of the sketch:

    int SW1 = 1;

    We also declare an int variable to hold the value we read from SW1 We give it an initial value of HIGH:

    int isPress = HIGH;

    In the setup() block we set the pinMode of LED1 to OUTPUT as we’ve done before.  We need to use SW1 as an INPUT so we set it using pinMode:

      pinMode(LED1,OUTPUT);

      pinMode(SW1,INPUT);

    Now we encounter our first while loop.  Since we initially set isPress to HIGH, our conditional statement is true and we enter the loop:

      while(isPress == HIGH){

    We want to stay in this loop until SW1 is pressed.  This is going to hold up our sketch.  Nothing will blink or do anything else until we press SW1. If you look back at Circuit 2, the pull-up resistor holds the SW1 pin in a HIGH state until the button is pressed.  By pressing SW1 we create a path from our microcontroller pin to ground.  This will quickly pull the voltage on the pin to LOW.  Within the loop, we keep checking on the status of SW1 using a digitalRead statement.  We store the resulting value in isPress:

        // keep checking button

        isPress = digitalRead(SW1);

      }

    Once isPress is LOW, the conditional statement is no longer true and we break out of the loop.  We’ll then enter the loop() block and blink the LED, just as we did in Project 1.01.


    Back to Projects 1

    Copyright Olympia Circuits LLC 2014. All Rights Reserved.