Sie sind auf Seite 1von 35

Electronics for Artists

Iain Sharp
lushprojects.com

These course notes are licensed under a


Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.

Revision 4 - © Iain Sharp 2010


1 - lushprojects.com
Part 1: Electronics

2 - lushprojects.com
Schematic
Batteries and Circuits
+
Two things are needed to make a an electricity do something
useful: Battery
1) a source of electrical potential to provide the power, - Bulb
2) a complete circuit round which electricity can flow.

We are going to use a battery to provide the electrical potential.


A chemical reaction inside the battery works like a pump to
push electricity. The amount of “push” is the voltage –
Build on Breadboard
measured in Volts.
Rows along
The circuit for the electricity to flow round needs to be built of top and bottom
electrical conductors and must provide a loop from the positive are connected
to the negative terminal of the battery. Metals are by far the Red is positive
most common electrical conductors, but there are also all kinds Black is negative
of other materials that can be used to create special
Groups in
behaviours.
columns are
connected
When a circuit is connected a current will flow round the circuit.
The current is like the amount of water flowing through a pipe.

MEGAPOWER
Bulb
The current is measured in Amps, or more usually for
electronics a 1/1,000th of an Amp or milliamp (mA).

9 Volt
No
connection
To understand electronic circuits it is normal to draw a circuit across the
diagram or schematic. This diagram is like the London middle gap
Underground map – it shows how things connect in a way that
allows you to see the underlying pattern without the complexity
of how things are physically laid out in the real world.
MISTAKE

Count Alessandro Volta Don't connect components


along the columns – this just
1745 – 1827 connects their leads directly.
Developed the first battery

3 - lushprojects.com
Experiments with Series and Parallel Circuits

Bulbs in Series
Like Christmas tree lights

What happens if you


+ short-circuit one bulb Apply ends
with a loop of wire? of wire to
Battery short-circuit
bulb here

MEGAPOWER
- Voltage is split evenly Bulb
between the bulbs and
both glow dimly. Less

9 Volt
current flows than with
one bulb. Bulb

Bulbs in Parallel Both bulbs get the full


Like bulbs in your house
voltage of the battery.
Twice the current
flows when compared
to having one bulb.
+
Lifting one leg of a
Battery bulb out of the
- breadboard breaks the

MEGAPOWER
circuit through that Bulb
bulb and allows them
Joints on to be switched on and

9 Volt
schematics are off individually. This is
marked with dots the same job a light- Bulb
switch does.

André-Marie Ampère
20 January 1775 – 10 June 1836

Discovered many properties of


4 - lushprojects.com electromagnetism
Resistors
Resistors limit the flow of electricity through part of the circuit. This
can be used to control timing circuits, divide voltages in to smaller
portions or protect devices that are sensitive to too much current.

Resistance is measured in Ohms (Ω),


kilohms (1,000Ω=1kΩ) or
Megohms (1,000,000Ω =1MΩ)

Resistors can go in the circuit either way round. The value is marked
on the device with a colour code (see right), or it can be measured
with almost any multimeter.

A shorthand is often used to write the value of a resistor. For


example:
“100R”=100Ω
“10k”=10kΩ
“4k7”=4.7kΩ

Some resistors used in these experiments:


100R – Brown, Black, Brown
220R – Red, Red, Brown
1k – Brown, Black, Red
10k – Brown, Black, Orange Only for five band resistors!
100k – Brown, Black, Yellow Skip for four band resistors

Time for: Georg Simon Ohm


A resistor game! (16 March 1789 – 6 July 1854)

Discovered the relationship


between voltage and current in
electrical circuits “Ohm's Law”.
5 - lushprojects.com
Light Emitting Diode (LED) Captain Henry
LEDs are solid state devices that emit light when electricity
Joseph Round
(2 June 1881 –17 August 1966)
passes through them. They are directional and need to go in the First to observe light emitted
circuit the right way round. by a solid state diode

Once a certain “on” threshold voltage is reached (about 2V for a


red LED) the current through an LED rises very quickly with the
voltage. In most applications a resistor is needed to protect the
LED from being overloaded due to this effect.

Experiments with LEDs and Resistors

Try using different values of R in


+ Resistor R this circuit:
100k, 10k, 1k, 220R + R

MEGAPOWER
LED
What do you notice about the LED?
- What do you notice about the 220R

9 Volt
resistor when it is in the circuit? Flat &
short-lead
LED

+ Try touching the ends of the wire


220R probes on to different objects:
Wire - your skin
Probes - fresh water
- - salt water
+ 220R

MEGAPOWER
- a thick line drawn with a soft
pencil Flat &
- a (non light-emitting) diode (try short-lead

9 Volt
LED
this with the diode both ways
round)
LED

Probes
6 - lushprojects.com
Transistors NPN Transistor
The solid state transistor is the single component that has driven
the electronics revolution. Initially they were very hard to
manufacture and regarded expensive specialized parts.
Collector Big current can
Improved mass production techniques gradually lead to
Base flow here
transistors becoming cheaply and easily available. Later on a
new wave on innovation was created when it was realised that
multiple transistors could be manufactured on a single wafer of
Emitter
silicon – leading to the integrated circuit, microprocessors,
microcontrollers and all the advanced toolkit available to modern Small control
electronic engineers. current

We are going to focus on one type of transistor – the NPN


bipolar transistor. A transistor has three terminals and acts as an
amplifier. For an NPN transistor the terminals are called the
“collector”, “base” and “emitter”. A small current flowing in to the
Transistor Packages Transistor type
base and out of the emitter controls a much larger current 2N3704 pinout
flowing from the collector to the emitter. Think of the current at
the base as working to control a tap that varies the flow through
the collector. If no current flows in to the base then no current will
flow through the collector either.

The base voltage varies between 0V when the transistor is off


and about 0.7V when the transistor is on. Like an LED the input
to the base normally needs to be protected by a resistor to stop
the base being overloaded.

Using transistors we can build many types of circuits including


amplifiers, logic circuits, oscillators, filters and power controllers.

The maximum collector current ranges from a few hundred mA to


several Amps depending on the transistor. The gain of the
transistor is the multiple of the base current the can flow through
the collector. This is normally in the range 50-400 and is
sometimes written as hFE. William Bradford Shockley
(February 13, 1910 – August 12, 1989)

Leader of the team at Bell Labs that developed the


junction transistor. Nobel prize winner. Also described
as “the notorious eugenicist and scientific racist”..
7 - lushprojects.com
Experiments with a transistor
+
220R
10k

220R
10k
+

MEGAPOWER
-
LED

9 Volt
Collector
Base
2N3704
LED
Flat &
Emitter short-lead

Connect the circuit up as shown and then try applying the


probes to various items. Notice the brightness of the two BCE
LEDs. You should find the LED in the collector circuit is much
brighter than that in the base.

Items to try:
- Probes open (no connection). Transistor is off and neither
LED is lit.
- Probes touching each other. Transistor is fully on. The LED
in the collector circuit glows brightly.
- Probes along a pencil track
- Probes on your skin

8 - lushprojects.com
Capacitors Electrolytic polarity
Capacitors store and release small amounts of
electrical charge. In electronic circuits they are used to
control the timing of circuits, “smooth out” electrical
waveforms and to separate DC and AC components of
a signal.
+ve
Capacitance is measured in Farads (F), but one Farad
is much too big to be practical. Useful units are:
Micro Farads (μF or uF) = 1/1,000,000th of a Farad -ve
Nano Farads (nF) = 1/1,000,000,000th of a Farad
Pico Farads (pF) = 1/1,000,000,000,000th of a Farad

Capacitors less than 1uF can normally go in a circuit


either way round. Larger capacitors normally have a
polarity (normally the negative end is marked) and
have to go in a circuit the right way round.

Capacitors come in a many different types that are


designed for different applications. For this circuit the
type used isn't important so we've used the cheap and
cheerful options. The small capacitors are “ceramic
discs” and the large capacitors are “electrolytics”.

Several labelling schemes are in common use for


+ve -ve
capacitors. The ceramic discs used in these circuits
are labelled with three digit codes. The first two digits
are the value and the third digits is the number of
Small indent
zeros making up the capacitance in pF.

So:
10nF = 10,000 pF = “103”
100nF = 100,000pF = “104”

Michael Faraday
(22 September 1791 – 25 August 1867)

Discovered the fundamental relationship


between electricity and magnetism (amongst
many things).
9 - lushprojects.com
Experiments with a capacitor
Build the circuit like this with the battery disconnected.
Connect the battery and watch the LED. +
+
100uF +

100u
+

10k

MEGAPOWER
- LED

10k

9 Volt
Lift and move Flat &
+
100u
short-lead

Remove the capacitor and put in in this circuit


without shorting out the legs.

LED

10k
10k

+
100uF

In the first circuit the capacitor charges up with current from the battery.
The value of the resistor and the capacitor determine how quickly the
charge builds up. As the capacitor charges it develops its own voltage that
pushes against the battery. This reduces the flow of current and the LED
goes out.

When the capacitor is moved in to the second circuit it discharges through


the LED lighting it up.

10 - lushprojects.com
Capacitors and transistors
Building timing circuits that combine capacitors with
transistors offer a number of advantages over just

220R

220R
using capacitors on their own:
- the amplifying effect of the transistor can generate a

10k
clean “on/off” effect from the gently changing voltage
on the capacitor

MEGAPOWER
- the transistor can isolate the capacitor from other
effects allowing signals to be controlled without
changing the behaviour of the capacitor timing circuit.

9 Volt
-

0u
LED

10
Flat &
short-lead

220R 10k 220R

BCE

100uF
+
2N3704

Build the circuit and then try connecting the flying lead to the
negative line. The LED should go out momentarily and then
relight. Disconnect then reconnect the flying lead to show this is
Flying lead that can connect to the repeatable.
negative line

11 - lushprojects.com
Times two
+
With two copies of the previous circuit you can
manually make an interesting effect.

220R

220R

220R

220R
Build two versions and then cross over the flying leads.

10k

10k
Hold the end that is now on the left in your left hand
and the other end in your right hand. Connect one lead

MEGAPOWER
(say the one in your right hand) to the negative line.
The left hand light will go out. Now follow the rules:
- if the right hand light is on connect the right hand

9 Volt
lead to- ground. If it is off then disconnect it.
- if the left hand light is on connect the left hand lead to
ground. If it is off then disconnect it. + +

u
0u

0
LED LED

10
10
This manually makes the two LEDs flash alternately. Flat &
Flat & short-lead
short-lead
220R

220R
220R

220R
10k

10k

100uF
100uF
+ BCE BCE
+

Build the circuit and then try connecting the flying lead to the
negative line. The LED should go out momentarily and then
relight. Disconnect then reconnect the flying lead to show this is
repeatable.

12 - lushprojects.com
Multivibrator
+
Wouldn't it be useful if you could replace the manual
fiddling with leads in the previous circuit with

220R

220R
something automatic? Well, guess what – with a few
simple changes you can.

10k

10k
In the circuit below we've removed two of the 220R

MEGAPOWER
resistors and instead cross-wired what were the flying
leads in to the collectors of the opposite transistor. The
two halves of the circuit now work automatically

9 Volt
against- each other. When the circuit is powered up the
lights will flash.
+ +

u
0u
This circuit is known as a “multivibrator” and is the

0
LED LED

10
10
basis of a whole family of circuit designs. It also nicely Flat & Flat &
illustrates the two sides to electronics: short-lead short-lead
1) understanding individual components and their
function
2) Understanding how those components are used to
create common building blocks.
220R

220R
BCE BCE
10k

10k

100uF
100uF For more experiments:
+
+ 1) Try changing the values of one or both of the 10k resistors.
Suggested alternatives are 22k or 4k7.
2) Try changing the values of one or both of the 100uF
capacitors. Try 10uF instead.

Observe the result of these changes.


Lines that cross without
dots don't connect

13 - lushprojects.com
Basic organ
+
By swapping the capacitors for much smaller values we can
change the frequency of oscillation of the circuit to make it

220R
much higher – in the range your ear can hear. By connecting

10k

1k
a speaker to the output instead of an LED this creates a basic

10k
organ. Play the organ by touching the wire probes on a pencil
line.

MEGAPOWER
Note about capacitor marking
10nF = 10,000pF = Normally written as “103” on capacitor

9 Volt
10
n
10nF

F
220R
10k

10k
1k

Speaker

BCE BCE

10nF 10nF

14 - lushprojects.com
Integrated Circuits
Integrated circuits (“ICs”) are single packages that contain complete circuits consisting
of many components. Today almost all ICs are silicon chips. Intel claims to have
produced single ICs with 2,000,000,000 transistors.

For the last experiment we are going to use a “4017” decade counter. When this is
driven from the output of a multivibrator it can be used to light LEDs in sequence
producing a chain light effect.

Much of modern electronics is based on using ICs rather than discreet components. The
skill lies in finding the right IC and understanding how to use it and its limitations. For
example it's unusual to build multivibrators like the ones in these experiments in most
designs – instead a timer IC like the famous “555” might be used.

Note about IC Numbering


Numbering of ICs a pretty hit and miss. The “4017” is just the base name for the device.
The full number will have other numbers or letters attached depending on which
company makes it, what type of package it's put in and so on. You will often find lots of
variants of the same IC with similar numbers. The IC in my parts kit says it's an
“CD4017BE”.

Gordon Earle Moore


(3 January 1929-)

Observed that the capacity of


economically feasible ICs doubles
approximately every 2 years.

15 - lushprojects.com
Chain Light Schematic

16
VDD OP 2
10k

10k
4
1k

1k
-
OP 1
14 2
Clock
OP 0
3

220R

220R

220R
OP 3
4017 7
10uF
10uF
+
+ RESET
15
ENABLE VSS
13 8

16 - lushprojects.com
Chain Light Layout

1k

1k
10k

10k
MEGAPOWER

-
9 Volt

+ +

220R

220R

220R
u
u

4017

10
10

BCE BCE

LED LED LED

Flat &
short-lead

17 - lushprojects.com
Part 2: Arduino

18 - lushprojects.com
What is an Arduino? Arduino programming
The Arduino is a family of tiny computers that are designed
to be used for controlling interactive electronic installations. 1. Write program on your computer
The Arduino computers are comparable in power to early
home microcomputers from the 80s like the BBC Micro and
ZX-Spectrum.

The Arduino has several important advantages:


●It is designed as a complete system which includes

programming tools and hardware


●The Arduino can be connected to any PC or Mac with a

USB cable to download programs


●The open-source hardware design encourages innovation

●Strong community with a lot of documentation and


2. Send (“Upload”) the program to Arduino
examples available
●Arduino “shields” make it easy to connect other types of

electronics
●Complete Arduino family of hardware for different
USB cable
applications

The Arduino home page with lots of useful information is at:


arduino.cc

3. Arduino runs program


3a. Independently of host 3b. With a host computer
computer
A computer can power the Arduino
Connect a suitable power source and exchange information over USB
and the Arduino can run on its own

19 - lushprojects.com
Arduino Duemilanove Anatomy
14 Digital pins labelled 0 to 13
Digital = “High” or “Low”; Input or Output
High is about 5 Volts; Low is about 0 Volts
Try and avoid using pins 0 and 1 as they are also used
Pin 13 LED with programming the Arduino
Shows the state (high or low) of
pin 13. Lights up with the pin is
high.
Labelled “L” programming LEDs
Flash to show programming
operation
USB Connector
Connects to host computer
Power LED
Shows when Arduino is on

Reset button
Press to restart the program.
Reset happens automatically
on power-on or when
programming is completed.

ATMEL Microcontroller
The “brains” of the Arduino
Power Connector
Provides power to circuit for
operation without a host
computer. Recommended range
is 7 to 12 volts. A voltage 6 Analog Inputs labelled 0 to 5
regulator on the board will Can be used to measure electrical
generate a 5V supply. voltages between 0 Volts and 5 Volts.
Power Outputs Used to measure properties of the real
Provides limited power to external world when used with the right sensors
circuits.

20 - lushprojects.com
An Arduino for (almost) every situation
Some black sheep
The main line
All have same board connections and support one of two Arduino Mega 2560
microcontrollers – the ATMEGA168 or ATMEGA328. The
More powerful processor
328 has twice as much memory.
and more connectors.
Arduino Diecimila Freeduino 1.16

= Arduino Lilypad Arduino Nano

Designed for
incorporation in to Compact
clothes and textiles. version
Needs an external
programmer
Arduino Duemilanove
Simplified power supply
Arduino Skeleton
(automatic selection of
USB or external power)
Made without a circuit board! Not
commercially available.

http://www.geocities.jp/
arduino_diecimila/obaka/
project-7/index_en.html
Arduino Uno
Modernized USB interface

… and many many more.

All share the same concepts, programming techniques and


development tools
21 - lushprojects.com
Getting Ready to Program Arduino programming Environment
the Arduino
In order to program the Arduino you need the
right software installed on your host computer.
You also need to configure various options

The Arduino web site does a good job of Menus


documenting this for various systems and is kept
up to date, so just go here and follow the Control Buttons
instructions for your type of computer:
http://arduino.cc/en/Guide/HomePage Tabs to select Sketch

Sketch Editor
About Arduino
programming
The Arduino program tells the Arduino what to
do. The program is written in a programming
language called Processing. Processing is based
on another language called “C”.

A program for the Arduino is called a “Sketch”.


Sketches are written in the Arduino programming
environment which also provides the ability to
upload the sketch in to the Arduino and
communicate with the Arduino when it is running Status Bar
the program. Shows the result of
the last action
The Sketch consists of a number of commands
in sequence. Normally the commands are Program
executed one after another in the order they Notification Area
appear in the Sketch. However there are also Used to show
special commands that can change the order of messages from the
execution. program

22 - lushprojects.com
An Arduino Blink Program
/*
1) Connect your Arduino to the host computer
using a USB lead. Blink Comment: Everything
2) Run the Arduino software on your computer. between a /* and a */ is a
3) From the File menu choose Examples → comment to help the reader
1.Basics → Blink. The simple Blink sketch Turns on an LED on for one second,
understand the sketch. It is
should load. ignored by the Arduino
4) Click the Verify button to check the Sketch is then off for one second, repeatedly.
OK. In the text area at the bottom of the screen
a message like “Binary sketch size: 1008 bytes This example code is in the public domain.
(of a 14336 byte maximum)” should appear
once the verification is complete. */
Setup function: Every sketch
Verify Button must have a setup function. This is
run when the Arduino is reset to
prepare for the rest of the program
void setup() {
5) Click the Upload button to upload the sketch Comment:
on to the Arduino. During the upload the LEDs // initialize the digital pin as an output: Everything on a line
labelled “Rx and Tx” will flash to show the after a “//” is also a
transmission of data. Once the sketch is pinMode(13, OUTPUT); comment
uploaded you will get a message “Done
Uploading” and the sketch will start to run. The } Function call: This is a piece of program
pin 13 LED should flash.
that triggers a function to perform a
Upload Button required action. In this case the function
tells the Arduino to use digital pin 13 as
an output.
6) Try changing the values in brackets in the void loop() {
“delay” function call in the “loop” function. Loop function: Every
Repeat steps 4 and 5 and see if you notice a digitalWrite(13, HIGH); // set the LED on sketch must have a
difference. loop function. After the
delay(1000); // wait for a second setup the Arduino
repeatedly performs
digitalWrite(13, LOW); // set the LED off the actions in the loop
function
delay(1000); // wait for a second

}
23 - lushprojects.com
Using Functions
A function is a self-contained piece of computer program that is
collected in to a wrapper to make it easy for a programmer to
use. Processing contains many already defined functions you
can use in your programs. When you want to use a function
you write a function call in to the program. Here is an example
function call from the Blink Program.

Delimiter: In Processing each


Spaces allowed here statement in the language must
end with a semi-colon. This is
called a delimiter. Missing semi-
colons (or semi-colons in the
wrong place) are a common
source of problems.

pinMode( 13 , OUTPUT );

Name of the function: Parameters of the function:


shows which function is Data values that are needed by
being called. In the function are called
Processing, the names “parameters”. They appear in
are case sensitive (small brackets after the name. Different
and big letters must be values are separated by commas.
correct). The name can't When the program reaches the function call it goes
The number and types of data and performs the tasks defined by the function.
contain spaces. values is specified in the function
Once the function as finished the program resumes
definition.
just after the function call. It is possible for one
In this case the first parameter is function to call another function in a nested
the pin number being set. The structure.
second parameter shows whether
this pin is an INPUT or an
OUTPUT. Built-In Functions
We have already seen three built-in functions: PinMode(),
If there are no parameters you still digitalWrite() and delay(). There are many others. You
must include an empty pair of can explore them through the example sketches
brackets. http://arduino.cc/en/Tutorial/HomePage
or at
24 - lushprojects.com
http://arduino.cc/en/Reference/HomePage
Defining Functions
As well as using pre-prepared functions, you can also define
your own. You must define a “setup()” and “loop()” function.

A weakness of processing is that the function definitions are a little


complicated when you first meet them. This is due to the decision to
build Processing on top of “C”. If you don't understand the detail, just
treat this as a piece of magic that you can copy from examples as
you need to.

Here is an example function definition from the “Blink” program.


Function parameters: We have seen
Return types: Functions can return a Name of the function: choose a name how you can use parameters when you
value once they are completed. Simple without spaces which is meaningful to you call functions. When a function is defined
functions don't do this, and to tell the and doesn't overlap with any other the parameter definitions go here. If there
computer you don't want to return a value function names. The names “setup” and are no parameters you must include a
you must put the word “void” in front of “loop” have special meanings pair of empty brackets to show that the
the function definition. parameter list is empty.

void setup() {
Curly brackets around
the function body: A pair
of curly brackets goes pinMode(13, OUTPUT); Statements: The function body is made
round the “body” of the up of one or more statements that do the
function. The body work of the function. Another function call
contains the instructions is an example of a statement. Each
for what to do when the } statement is separated by a semi-colon.
function is called.

25 - lushprojects.com
Blink Program with Variable declaration: This line in the
a Variable sketch creates a new variable called
“ledPin”. A variable is a labelled box which
is used to contain data used in the
1) Go back to the “Blink” sketch program. The data can be read or changed
and edit it on the screen so it /* during the program.
looks like the example on the Blink example with variable
right (changes are shown in */ In this case ledPin will contain integer
bold). values. We use the word “int” to tell the
computer we want ledPin to be an integer.
2) Verify the sketch using the verify int ledPin;
button. A variable declared outside any function
can be seen by all functions in a sketch.
3) Upload the sketch to the Arduino void setup() {
and check that it works.
ledPin=13; Variable assignment: This statement puts
a value (13) in to the variable ledPin.
// initialize the digital pin as an output:
pinMode(ledPin, OUTPUT);
Variable use: We can now use the
} variable name to mean the contents
instead of actually writing 13.
void loop() {
digitalWrite(ledPin, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(ledPin, LOW); // set the LED off
delay(1000); // wait for a second
}

26 - lushprojects.com
LED Chain Circuit
1) Construct the circuit with the Arduino and
breadboard as shown on the right. We will use
variations of this circuit for the next few
experiments.
2) In the sketch used in the previous experiment
change the line “ledPin=13;” to “ledPin=2;”.
Upload this sketch and you should see the left-
hand LED flash.

3) Using the menu option File → Open... open the


sketch “chain.pde”. Upload this sketch to the
Arduino. You should see the lights move in a chain
pattern.
4) Try modifying the Chain sketch to get other 100R Wire probes
patterns – eg reversing the direction of the chain,
or having the LEDs light in pairs.

5) Using the menu option File → Open... open the 10k


sketch “digitalInput.pde”. Upload this sketch to the
Arduino.
6) With the digital input sketch running try
touching the ends of the wire probes together.
What happens? In a more permanent circuit the
probes could be replaced by a switch or a button.

The digitalInput sketch uses a new capability – the Arduino 5V


possibility to treat an Arduino pin as an input. It
also uses an “if” statement (see next slide) to
change the behaviour of the Arduino based on the Pin 2 Pin 3 Pin 4 Pin 5 Gnd Pin 6
input.

Let's look at what is happening electrically. When


the probes are disconnected the 10k resistor 100R 100R 100R 100R 10k
“pulls” the voltage at the input low. When the (Brown-Black
probes connect the input is connected directly to Orange)
the 5V supply from the Arduino and the input goes
high. This is a very common configuration. The
10k resistor is called a “pull down resistor”.

27 - lushprojects.com
New Program Elements in digitalInput sketch
Set Pin Mode: Done in the setup function. This says that we want an
pinMode(inputPin, INPUT); input on the inputPin.

Reading the input: This is done every time the sketch goes round the
main loop. The sketch looks at the value of the input pin and stores
inputValue=digitalRead(inputPin); either HIGH or LOW in the variable called “inputValue”. Think of the
variable as a labelled box to store values. Like other variables the type
of “inputValue” was declared at the start of the program

IF statement: This is used if you want to make the sketch do different


things based on the environment or the results of a past activity.

Condition: After the word “if” you have brackets that contain the condition that is being tested. The two
equals signs (“==”) means “has the value of” or “is the same as”. Here we see if the variable inputValue
contains the value “LOW”.
Other possible conditions include “!=” for “not equal to”, “>” for “greater than” and “<” for “less than”.

True actions: After the condition you have a list of statements surrounded
if (inputValue==LOW) { by curly brackets. These are what the sketch does if the condition being
... things to do... tested turns out to be true.

}
else { False actions: After the true actions you may have the world “else” and then
... things to do.... another list of actions in surrounded by curly brackets. These are what the
sketch does if the condition being tested is false.
}

28 - lushprojects.com
Making Mistakes (and fixing them)
Mistakes – we all make them. In computer programming there are two different types of mistake you can
make in the software. A “syntax error” means you have written something in the program that the
computer can't understand. If your sketch contains syntax errors it can't be uploaded to the Arduino.

A “semantic error” means your sketch is understandable but you discover it doesn't do what you meant it
to do. This normally means you have made a logical mistake in designing your sketch.

Syntax Errors Semantic Errors


Syntax errors will be detected when you either verify a sketch Semantic errors are normally called “bugs”.
or try and upload it to the Arduino. When a syntax error is They could be anything from a program that
detected the status bar will turn from blue to red and red does nothing to a program that works 99% of
error messages will appear in the program notification area. the time but occasionally fails unexpectedly.
The area where the computer detected the mistake will be
highlighted in the editor. The process of finding and fixing semantic
errors is often a piece of detective work.
Unfortunately Processing doesn't handle syntax errors very Normally you should test your sketches
well. Its messages can be very hard to understand (even for thoroughly to make sure that they behave the
experts) and it doesn't always guess right where the error way you want them to under all
occurred circumstances.

Here are some things to check to try and fix any errors: If a sketch doesn't do what you expect then
- Mistyping of names (spelling or case of letters) try and work out why it follows the behaviour
- Missing semicolons after statements it's showing. Pretend you are the Arduino and
- Unpaired round brackets or curly brackets “dry run” the instructions in your head. Think
- Spaces in the middle of names about where in your sketch the problem may
be and what circumstances trigger the
To minimise problems with syntax errors I suggest you start by problem. Try and narrow down the range of
evolving the examples and make small steps towards what possible points where the problem originates.
you want, frequently verifying so that mistakes get caught
early.

29 - lushprojects.com
Making A Noise NOTE:
Flat face of
Let's move beyond blinking LEDs. In this experiment we will add transistor is
a speaker to the Arduino and start to make some noise. This also facing the
provides a useful demonstration of how to connect larger loads viewer
to the Arduino. 100R
ecb
1) Add the extra elements shown to the existing circuit.
2) Open the sketch “digitalInputwithtone” and upload it to the
Arduino.
3) When you touch the wire probes together you should now get 1k
a tone from the speaker.
4) Examine the sketch and see the new elements that create the
tone. Try changing the tone behaviour.

How the electronics works

The Arduino pins have a very limited capacity to drive electrical


current. One LED is OK, but much more is dodgy. We can use a
transistor to boost the output to drive more demanding loads – in
this case a speaker. Note: Circuit Diagram only shows the speaker connection
In the first transistor experiment we showed how a small current
on the base of the transistor could drive a much bigger current
through the collector. We use exactly this idea here. The
transistor is controlled from the Arduino by connecting the base
Arduino 5V

to an output pin via a resistor (1k in this example). The resistor

100R
limits the current taken from the Arduino.

Even with a transistor, connecting 5V directly to the speaker is


too much. The 100R resistor in the collector limits current Gnd Pin 7
through the speaker.

NB: Many examples on the web don't put a resistor in the base.
Without the base resistor the circuit is poorly designed any may 1k
damage the Arduino. 2N3704

30 - lushprojects.com
Driving Loads Some useful loads
You can use the general circuit patterns shown on the left to drive these loads.
We saw in the last experiment how a transistor can be used to let
the Arduino drive an electrical load like a speaker which is too big LED Chains
for the Arduino to drive on its own (for reference the maximum
current load per pin is 40mA). The transistor configuration is a With a transistor you can drive lots of
general technique that can be used to drive most low-voltage LEDs from a single pin. Various
electrical loads. calculators on the web can help you find
the right configuration for the number
For smaller loads (say up to 250mA) this general circuit can be and type of LEDs you want to use. Note
used. though that the online calculartors don't
always follow good design rules so
learning the manual approach is still
Arduino 5V useful.
Load
Small Motors

Pin Small motors (like those in toys) can be controlled.


Gnd
Watch the current and voltage requirements – even
1k small motors can have a high current when stalled. M
A diode should be connected as shown to protect
the circuit from a reverse voltage that any
electromagnet generates when it is switched off.
For larger loads, or loads that need a different power supply
voltage to the Arduino's 5V the following general circuit can be
used. You may need to check the suitability of the transistor. The Relay
2N3704 we are using in the experiments has a maximum
capacity of 500mA. To test the current taken by a load connect it A relay is an electrical switch which is Relay Coil (Magnet)
to a power supply with a current meter in the path. moved by an electromagnet. By
connecting the magnet as a load to the
Arduino the switch can be used to
Arduino 5V control another circuit completely
independently. This has many uses – eg
Load if you are controlling something that is
too high power to be easily done with
Power
just a transistor, or if you don't know the
Pin Supply Switch controlled by relay
Gnd full electrical characteristics of the thing
For Load
being controlled (eg you are faking a
1k (About
button press on another piece of
15V max)
equipment). Relay coils also need a
protection diode as shown
31 - lushprojects.com
Other things you can connect (with the right electronics)
Servo Motors
Servo motors were originally designed for use in radio control models. They have a lever which is
moved through about 280 degrees of rotation by the motor. The Arduino has special commands to
control stepper motors.

Stepper Motors
Stepper Motors are special motors that move in individual steps. They can be used for precise control
over position or speed of rotation.

Infrared Choppers
An infrared light can be shone through a gap to detect levers or other mechanical parts that interrupt
the light beam

Distance Sensors

Arudino Shields
To make it easy to connect the standard Arduinos to external
systems you can use pre-made “Arduino Shields”. These
connect on top of the Arduino board.

Example shields:
- Motor control
- Ethernet
- Xbee
- Servo motor and Stepper Motor shields

32 - lushprojects.com
Arduino Analog Inputs
We've seen the Arduino's digital inputs in action. Now we will
look at an analog input. The analog inputs can measure and
report the voltage at the pin in the range 0V to 5V.

1) Modify the circuit as shown (replace the 10k resistor with a


100k resistor and move the input wire from digital Pin 5 to Analog
Pin 0).
2) Open the sketch “simpleorgan” and upload the the Audruino
3) Try touching the wire probes to a pencil line track or to your
skin. You should get an organ effect.

The circuit used here is called a “voltage divider”. The voltage at


at the Analog input pin depends on the ratio of the 100k resistor
to the resistance between the two probes. As the resistance
between the probes decreases the voltage at the analog input 100k
goes up.

The analog input can be connected to many types of sensor.


There are some common examples shown below.

Note: Circuit Diagram


Alternative Analog Inputs only shows the
analog input
Arduino 5V Light Arduino 5V Arduino 5V
Dependent
Resistor
Gnd Analog In Gnd Analog In Gnd Analog In 0
Variable
Resistor

100k
10k to (Brown-Black-
100k Yellow)

33 - lushprojects.com
Pulse Width Modulation (PWM)
The Arduino only has digital (0V or 5V) outputs. However it can
output an approximation of an intermediate analog voltage using a
technique called Pulse Width Modulation (PWM). In PWM a digital
output moves between the on and off states very quickly. The ratio
of the the “on” time to the “off” time (called the “duty cycle”) can be
varied to create an average voltage which is intermediate between LED Motor
on and off voltages.
Off Off
PWM signals aren't suitable for everything, but they do work well for
some types of system – in particular:
LEDs where the rate of blinking is too fast for the human eye to see, LED Motor
and
Small motors which can have the speed varied by PWM.
Dim Slow
PWM in the Arduino

PWM is only available on the special outputs labelled with “PWM”


on the board. There are further restrictions if you want to combine
PWM with the “tone” function. To send a PWM signal set the pin as
an output and use the analogWrite() function with a value between
0 for all off and 255 for all on (see diagram). The designers of
Arduino made a big mistake naming this function – there is no
analog output. “PWMWrite()” would be a much better name!

To test the effect of PWM on an LED keep the same circuit as


before and load the sketch “organandlight” and upload to the
Arduino This sends a PWM signal to pin 6 which depends on the
pitch of the organ – the LED should be bright for low notes and LED Motor
dimmer for higher notes.
Bright Fast

34 - lushprojects.com
Arduino Organ II with light effects
A fun thing to finish (and show a more complicated level of Arduino
programming).

Using the same electronics as before load the sketch


“organandlight2” and upload to the Arduino. You should now have
an organ with lights that flash in sequence based on the frequency.

35 - lushprojects.com

Das könnte Ihnen auch gefallen