Arduino/Micro/Blink
From charlesreid1
Blink: First Pass
Overview
In this article, we go over a simple blink program using the Arduino Micro. This is the same as the Hello World Arduino Micro circuit, but with the Arduino controlling the voltage of the circuit to make it blink.
In the simple Hello World example, we wanted a constant source of potential, 5 volts, to keep the LED light continuously lit. Now, we want to control the voltage so that we can shut the light on and off. The program we load onto the Arduino microcontroller will allow us to create a logical program to control the voltage.
The Circuit
Breadboard Diagram
The circuit for our blink program is almost exactly the same as for the Hello World program, except now we plug it into a numbered pin on the Arduino board:
Instead of plugging into the 5V pin, we plug it into the D12 pin.
NOTE: Don't use the D13 pin. It starts with a pulse on-off routine.
Breadboard Photo
The final breadboard arrangement:
Note that we've added three resistors, instead of two. It doesn't particularly matter - as long as the resistance is not too low! (Otherwise we'll burn out our LED.)
The Program
The first half is changing the circuit; the other half is changing the logic. The built-in Arduino blink program is useful, but not particularly graceful. It shows us how to toggle the voltage, but it's a bit clunky in how it implements the library. Here it is:
Built-in Arduino Blink Program:
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
delay(1000); // wait for a second
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
delay(1000); // wait for a second
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(200); // wait for a second
delay(1000); // wait for a second
}
|
We'd rather have a more graceful Morse Code library.
Installing the Arduinomorse Library
On to the next part of the project: getting Arduino to run Morse Code! See the Arduinomorse Library page.
An Arduinomorse Sketch
Now we can rewrite our sketch to use the arduinomorse library. NOTE THAT IT MUST BE LOWERCASE:
#define PIN_STATUS 7
#include <morse.h>
//LEDMorseSender sender(PIN_STATUS);
SpeakerMorseSender sender(PIN_STATUS);
void setup() {
sender.setup();
sender.setWPM(20);
sender.setMessage(String("v v v de kc7dbu ar"));
sender.startSending();
}
void loop() {
sender.continueSending();
}