Arduino
Arduino
Contents
1
Arduino
1.1
History
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1
Ocial boards
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2
Shields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3
Software
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4
Development
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5
Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6
Reception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7
Legal dispute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8
See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9
Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.10 References
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Single-board microcontroller
2.1
Origins
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2
Internal bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3
2.4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5
2.6
Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.1
EPROM burning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.2
Keypad monitors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.3
Hosted development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.7
Single-chip microcontrollers
2.7.1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
Program memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.9
See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
ii
CONTENTS
2.10 References
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
11
Atmel AVR
12
3.1
Brief history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.2
Device overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.2.1
Basic families . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
3.2.2
Device architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
3.2.3
Program execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.2.4
Instruction set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.2.5
MCU speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.2.6
Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.2.7
Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
Programming interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.3.1
ISP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.3.2
PDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.3.3
High-voltage serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.3.4
High-voltage parallel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.3.5
Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.3.6
ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.3.7
aWire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
Debugging interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.4.1
debugWIRE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.4.2
JTAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
18
3.5.1
18
3.5.2
18
3.5.3
19
3.5.4
19
3.5.5
AVR Dragon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.5.6
JTAGICE mkI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.5.7
JTAGICE mkII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.5.8
JTAGICE3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.5.9
AVR ONE! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
19
3.5.11 AT90USBKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
20
20
21
3.3
3.4
3.5
3.6
CONTENTS
iii
3.7
FPGA clones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.8
See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.9
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
23
23
24
4.1
Processor registers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4.2
Addressing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4.3
Instruction timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.4
Instruction list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.5
25
4.6
Instruction encoding
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
4.7
External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
27
5.1
Orthogonality in practice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
5.1.1
The PDP-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
5.1.2
The VAX-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
5.1.3
The MC68000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
5.1.4
28
5.1.5
RISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
5.2
6
Open-source hardware
29
6.1
Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
6.2
Development
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
6.3
31
6.3.1
RYF certication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
6.4
Business models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
6.5
See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
6.6
References
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
6.7
External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
33
7.1
33
7.1.1
Superseded boards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
Arduino-compatible boards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
7.2.1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
7.2.2
33
7.2
iv
CONTENTS
7.2.3
Software-compatibility only
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
7.2.4
Non-ATmega boards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
7.3
Non-Arduino boards
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
7.4
See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
7.5
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
7.6
Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
7.7
External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
Wiring
41
8.1
Software
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
8.2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
8.3
Related projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
8.3.1
Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
8.3.2
42
8.4
See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
8.5
Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
8.6
External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
Processing
43
9.1
Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
9.2
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
9.2.1
Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
9.2.2
43
Related projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
9.3.1
Design By Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
9.3.2
44
9.3.3
Mobile Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
9.3.4
Processing.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
9.3.5
iProcessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
9.3.6
Spde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
9.3.7
Quil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
9.4
Awards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
9.5
License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
9.6
Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
9.7
See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
9.8
Footnotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
9.9
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
46
47
9.3
CONTENTS
9.11.1 Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
9.11.2 Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
52
Chapter 1
Arduino
For other uses, see Arduino (disambiguation).
Arduino is an open-source computer hardware and software company, project and user community that designs
and manufactures microcontroller-based kits for building
digital devices and interactive objects that can sense and
control the physical world.[1]
1.2
Hardware
1.1 History
An Arduino board consists of an Atmel 8-, 16- or 32bit AVR microcontroller with complementary components
Arduino started in 2005 as a project for students at the that facilitate programming and incorporation into other
Interaction Design Institute Ivrea in Ivrea, Italy. At that circuits. An important aspect of the Arduino is its stan1
CHAPTER 1. ARDUINO
lanove, and current Uno provide 14 digital I/O pins, six
of which can produce pulse-width modulated signals, and
six analog inputs, which can also be used as six digital
I/O pins. These pins are on the top of the board, via female 0.10-inch (2.5 mm) headers. Several plug-in application shields are also commercially available. The Arduino
Nano, and Arduino-compatible Bare Bones Board[9] and
Boarduino[10] boards may provide male header pins on the
underside of the board that can plug into solderless breadboards.
An early Arduino board[8] with an RS-232 serial interface (upper left) and an Atmel ATmega8 microcontroller chip (black, lower
right); the 14 digital I/O pins are located at the top and the six analog input pins at the lower right.
1.2.1
Ocial boards
1.4. DEVELOPMENT
1.2.2
Shields
Power LED (Red) and Integrated LED on Line 13 (Green) on Arduino Compatible Board (made in China)
Adafruit Motor Shield with screw terminals for con#dene LED_PIN 13 void setup() { pinMode(LED_PIN,
nection to motors
OUTPUT); // Enable pin 13 for digital output } void
Adafruit Datalogging Shield with a Secure Digital loop() { digitalWrite(LED_PIN, HIGH); // Turn on the
LED delay(1000); // Wait one second (1000 milliseconds)
(SD) card slot and real-time clock (RTC) chip
digitalWrite(LED_PIN, LOW); // Turn o the LED
HackARobot Fabric Shield designed for Arduino delay(1000); // Wait one second }
Nano to hook up motors and sensors such as gyroscope
or GPS, and other breakout boards such as WiFi, BlueMost Arduino boards contain an LED and a load resistor
tooth, RF, etc.
connected between the pin 13 and ground, which is a convenient feature for many simple tests.[18] The previous code
would not be seen by a standard C++ compiler as a valid
1.3 Software
program, so when the user clicks the Upload to I/O board
button in the IDE, a copy of the code is written to a tempoThe Arduino integrated development environment (IDE) rary le with an extra include header at the top and a very
is a cross-platform application written in Java, and derives simple main() function at the bottom, to make it a valid C++
from the IDE for the Processing programming language and program.
the Wiring projects. It is designed to introduce programThe Arduino IDE uses the GNU toolchain and AVR Libc
ming to artists and other newcomers unfamiliar with softto compile programs, and uses avrdude to upload programs
ware development. It includes a code editor with features
to the board.
such as syntax highlighting, brace matching, and automatic
indentation, and is also capable of compiling and uploading As the Arduino platform uses Atmel microcontrollers, Atprograms to the board with a single click. A program or mels development environment, AVR Studio or the newer
Atmel Studio, may also be used to develop software for the
code written for Arduino is called a sketch.[17]
Arduino.[19][20]
Arduino programs are written in C or C++. The Arduino
IDE comes with a software library called "Wiring" from
the original Wiring project, which makes many common
input/output operations much easier. The users need only to 1.4 Development
dene two functions to make an executable cyclic executive
program:
Arduino is open-source hardware: the Arduino hardware
reference designs are distributed under a Creative Com setup(): a function run once at the start of a program mons Attribution Share-Alike 2.5 license and are available
that can initialize settings
on the Arduino Web site. Layout and production les for
CHAPTER 1. ARDUINO
1.7
Legal dispute
When the Arduino project started, the ve co-founders created a company, Arduino LLC, that owned all trademarks
associated with Arduino. The manufacture and sale of the
boards was to be done by external companies, and Arduino
LLC would get a royalty from them. In the founding bylaws of the company, it was specied that each of the ve
founders was to transfer ownership of the Arduino brand to
the newly formed company.
At the end of 2008, Gianluca Martinos company, Smart
Projects, registered the Arduino trademark in Italy and kept
this a secret from the other co-founders for about two years.
This was revealed when the Arduino company tried to register the trademark in other areas of the world (they originally
registered only in the US), and discovered that it was already
registered in Italy. Negotiations with Gianluca and his company to bring the trademark under control of the original
Arduino-compatible R3 UNO board produced in China without the Arduino company were not successful, and in 2014 Smart
Arduino logo, but with identical markings, including the Made in Projects began refusing to pay royalties. Smart Projects apItaly text
pointed a new CEO, Mr. Musto, who renamed the company
to Arduino SRL and created a website named arduino.org,
copying the graphics and layout of the original Arduino.cc.
This resulted in a rift in the Arduino development team, and
1.5 Applications
although all Arduino boards are still available to consumers,
and the designs are open source, the implications of this are
uncertain.[31][32][33]
See also: List of open-source hardware projects
1.8
See also
OBDuino, a trip computer that uses the on-board diagnostics interface found in most modern cars
Intel Edison
IOIO
1.9 Notes
1.10 References
[4] Arduino FAQ With David Cuartielles. Malm University. April 5, 2013. Retrieved 2014-03-24.
[29] Bas Wijnen, G. C. Anzalone and Joshua M. Pearce, Opensource mobile water quality testing platform. Journal of Water, Sanitation and Hygiene for Development, 4(3) pp. 532
537 (2014). doi:10.2166/washdev.2014.137 open access
[6] Justin Lahart (27 November 2009). Taking an OpenSource Approach to Hardware. The Wall Street Journal.
Retrieved 7 September 2014.
[7] Rhizome - Interview with Casey Reas and Ben Fry. 200909-23. Retrieved 2014-08-23.
[8] Hardware Index. Arduino Project. Retrieved 2013-12-10.
[33] Williams, Elliot (28 March 2015). Arduino SRL to Distributors: Were the REAL Arduino". Hackaday.com. Hackaday.com. Retrieved 21 April 2015.
[34] Arduino Announces New Brand, Genuino, Manufacturing
Partnership with Adafruit - Make:". Make:. Retrieved 17
May 2015.
1.11
Further reading
Eng-
CHAPTER 1. ARDUINO
Arduino Workshop: A Hands-On Introduction with 65
Projects; John Boxall; 392 pages; 2013; ISBN 9781593274481.
Beginning C for Arduino: Learn C Programming for
the Arduino and Compatible Microcontrollers; Jack
Purdum; 280 pages; 2012; ISBN 978-1430247760.
Programming Arduino:
Getting Started With
Sketches; Monk Simon; 162 pages; 2011; ISBN
978-0071784221.
Make: Electronics (Learning by Discovery); Charles
Platt; 352 pages; 2009; ISBN 978-0596153748.
Chapter 2
Single-board microcontroller
In March 1976, Intel announced a single-board computer
product that integrated all the support components required
for their 8080 microprocessor, along with 1 kbyte of RAM,
4 kbytes of user-programmable ROM, and 48 lines of parallel digital I/O with line drivers. The board also oered expansion through a bus connector, but it could be used without an expansion card cage where applications didn't require
additional hardware. Software development for this system
was hosted on Intels Intellec MDS microcomputer development system; this provided assembler and PL/M support,
and permitted in-circuit emulation for debugging.[2]
Processors of this era required a number of support chips in
addition. RAM and EPROM were separate, often requiring memory management or refresh circuitry for dynamic
memory as well. I/O processing might be carried out by a
single chip such as the 8255, but frequently required several
more chips.
2.2
2.1 Origins
Internal bus
directly operate such devices as lamps or motors, so solidstate relays are operated by the microcontroller digital outputs, and inputs are isolated by signal conditioning levelshifting and protection circuits.
2.6. PROGRAMMING
2.6 Programming
Many of the earliest systems had no internal facility for
programming at all, and relied on a separate host system. This programming was typically in assembly language,
sometimes C or even PL/M, and then cross-assembled or
cross-compiled on the host. Some single-board microcontrollers support a BASIC language system, allowing programs to be developed on the target hardware. Hosted development allows all the storage and peripherals of a desktop computer to be used, providing a more powerful development environment.
2.6.1
EPROM burning
paper rst. Its arguable as to which process was more timeconsuming and error prone: assembling by hand, or keying
byte-by-byte.
Single-board keypad and calculator display microcontrollers of this type were very similar to some low-end
microcomputers of the time, such as the KIM-1 or the
Microprofessor I.[4] Some of these microprocessor trainer
systems are still in production today, as a very low-cost
introduction to microprocessors at the hardware program[5]
Some microcontroller devices were available with on-board ming level.
EPROM; these, too, would be programmed in a separate
burner, then put into a socket on the target system.
2.6.3
Hosted development
The use of EPROM sockets allowed eld update of the application program, either to x errors or to provide updated
When desktop personal computers appeared, initially
features.
CP/M or Apple II, then later the IBM PC and compatibles, there was a shift to hosted development. Hardware
was now cheaper and RAM capacity had expanded such
2.6.2 Keypad monitors
that it was possible to download the program through the
Where the single-board controller formed the entire de- serial port and hold it in RAM. This massive reduction in
velopment environment (typically in education) the board the cycle time to test a new version of a program gave an
might also be provided with a simple hexadecimal keypad, equally large boost in development speed.
calculator-style LED display and a monitor program set
permanently in ROM. This monitor allowed machine code
programs to be entered directly through the keyboard and
held in RAM. These programs were in machine code, not
even in assembly language, and were assembled by hand on
10
2.8
Single-board
today
microcontrollers
Dwengo board
Atmel AVR
2.7.1
Program memory
11
2.10 References
[1] Peter Grigson; David Harris (August, September, October
1983). "'Marvin' - Z80 Control Computer. Electronics Today International. Check date values in: |date= (help)
[2] Intel SBC 80/10 Single Board Computer brochure, 1976
Chapter 3
Atmel AVR
AVR logo.
3.2
Device overview
3.2.1
Basic families
13
3.2.2
Device architecture
14
memory addresses (000016 001F16 ), followed by 64 I/O
registers (002016 005F16 ). In devices with many peripherals, these registers are followed by 160 extended I/O
registers, only accessible as memory-mapped I/O (006016
00FF16 ).
Actual SRAM starts after these register sections, at address
006016 or, in devices with extended I/O, at 010016 .
Even though there are separate addressing schemes and optimized opcodes for accessing the register le and the rst xmegaAVR have additional registers for push/pull, totem64 I/O registers, all can still be addressed and manipulated pole and pullup congurations.
as if they were in SRAM.
The very smallest of the tinyAVR variants use a reduced architecture with only 16 registers (r0 through r15 are omitted) which are not addressable as memory locations. I/O
memory begins at address 000016 , followed by SRAM.
In addition, these devices have slight deviations from the
standard AVR instruction set. Most notably, the direct
load/store instructions (LDS/STS) have been reduced from
2 words (32 bits) to 1 word (16 bits), limiting the total direct
addressable memory (the sum of both I/O and SRAM) to
128 bytes. Conversely, the indirect load instructions (LD)
16-bit address space is expanded to also include non-volatile
memory such as Flash and conguration bits; therefore, the
LPM instruction is unnecessary and omitted.
EEPROM
Almost all AVR microcontrollers have internal EEPROM
for semi-permanent data storage. Like ash memory, EEPROM can maintain its contents when electrical power is removed.
In most variants of the AVR architecture, this internal EEPROM memory is not mapped into the MCUs addressable
memory space. It can only be accessed the same way an
external peripheral device is, using special pointer registers
and read/write instructions, which makes EEPROM access
much slower than other internal RAM.
GPIO ports
3.2.3
Program execution
3.2.4
Instruction set
15
clock by up to 1024. This prescaler can be recongured by
software during run-time, allowing the clock speed to be
optimized.
3.2.7
Features
Accessing read-only data stored in the program memory (ash) requires special LPM instructions; the ash Current AVRs oer a wide range of features:
bus is otherwise reserved for instruction memory.
Multifunction, bi-directional general-purpose I/O
Additionally, some chip-specic dierences aect code
ports with congurable, built-in pull-up resistors
generation. Code pointers (including return addresses on
Multiple internal oscillators, including RC oscillator
the stack) are two bytes long on chips with up to 128 kBytes
without external parts
of ash memory, but three bytes long on larger chips; not
all chips have hardware multipliers; chips with over 8 kB of
Internal, self-programmable instruction ash memory
ash have branch and call instructions with longer ranges;
up to 256 kB (384 kB on XMega)
and so forth.
In-system programmable using serial/parallel
The mostly regular instruction set makes programming it
low-voltage proprietary interfaces or JTAG
using C (or even Ada) compilers fairly straightforward.
Optional boot code section with independent
GCC has included AVR support for quite some time, and
lock bits for protection
that support is widely used. In fact, Atmel solicited input
from major developers of compilers for small microcon On-chip debugging (OCD) support through JTAG or
trollers, to determine the instruction set features that were
debugWIRE on most devices
most useful in a compiler for high-level languages.
The JTAG signals (TMS, TDI, TDO, and TCK)
are multiplexed on GPIOs. These pins can be
congured to function as JTAG or GPIO de3.2.5 MCU speed
pending on the setting of a fuse bit, which can
be programmed via ISP or HVSP. By default,
The AVR line can normally support clock speeds from 0
AVRs with JTAG come with the JTAG interface
to 20 MHz, with some devices reaching 32 MHz. Lowerenabled.
powered operation usually requires a reduced clock speed.
debugWIRE uses the /RESET pin as a biAll recent (Tiny, Mega, and Xmega, but not 90S) AVRs
directional communication channel to access onfeature an on-chip oscillator, removing the need for exterchip debug circuitry. It is present on devices with
nal clocks or resonator circuitry. Some AVRs also have
lower pin counts, as it only requires one pin.
a system clock prescaler that can divide down the system
16
External 64 kB little endian data space on certain models, including the Mega8515 and Mega162.
The external data space is overlaid with the internal data space, such that the full 64 kB address
space does not appear on the external bus and accesses to e.g. address 010016 will access internal
RAM, not the external bus.
In certain members of the XMega series, the external data space has been enhanced to support
both SRAM and SDRAM. As well, the data addressing modes have been expanded to allow up
to 16 MB of data memory to be directly addressed.
AVRs generally do not support executing code
from external memory. Some ASSPs using the
AVR core do support external program memory.
8-bit and 16-bit timers
3.3
Programming interfaces
3.3.1
ISP
MISO
1
1
VCC
MOSI
VCC
SCK
MOSI
NC
GND
RST
GND
RST
GND
SCK
GND
MISO
10
GND
ISP
HEADERS
TOP
VIEW
17
is a 6-pin connector and programming adapter. This is the Ethernet adapter like PXE. Atmel has application notes and
most common way to develop with an AVR.
code pertaining to many bus interfaces.[18][19][20][21]
The Atmel AVRISP mkII device connects to a computers
USB port and performs in-system programming using At3.3.6
mels software.
AVRDUDE (AVR Downloader/UploaDEr) runs on Linux,
FreeBSD, Windows, and Mac OS X, and supports a variety of in-system programming hardware, including Atmel AVRISP mkII, Atmel JTAG ICE, older Atmel serialport based programmers, and various third-party and doit-yourself programmers.[15]
3.3.7
3.3.2
aWire
PDI
The Program and Debug Interface (PDI) is an Atmel proprietary interface for external programming and on-chip debugging of XMEGA devices. The PDI supports high-speed
programming of all non-volatile memory (NVM) spaces;
ash, EEPROM, fuses, lock-bits and the User Signature
Row. This is done by accessing the XMEGA NVM controller through the PDI interface, and executing NVM controller commands. The PDI is a 2-pin interface using the
Reset pin for clock input (PDI_CLK) and a dedicated data
pin (PDI_DATA) for input and output.[16]
3.4
High-voltage serial
Debugging interfaces
The AVR oers several options for debugging, mostly involving on-chip debugging while the chip is in the target
system.
3.4.1
3.3.3
ROM
debugWIRE
JTAG
The Joint Test Action Group (JTAG) feature provides access to on-chip debugging functionality while the chip is
running in the target system.[23] JTAG allows accessing inHigh-voltage parallel programming (HVPP) is considered
ternal memory and registers, setting breakpoints on code,
the nal resort and may be the only way to correct bad
and single-stepping execution to observe system behaviour.
fuse settings on an AVR chip.
Atmel provides a series of JTAG adapters for the AVR:
3.3.4
High-voltage parallel
3.3.5
Bootloader
1. The JTAGICE 3[24] is the latest member of the JTAGICE family (JTAGICE mkIII). It supports JTAG,
aWire, SPI, and PDI interfaces.
2. The JTAGICE mkII[25] replaces the JTAGICE and is
similarly priced. The JTAGICE mkII interfaces to the
PC via USB, and supports both JTAG and the newer
debugWIRE interface. Numerous third-party clones
18
of the Atmel JTAGICE mkII device started shipping The base board is similar to the STK500, in that it provides
after Atmel released the communication protocol.[26] a power supply, clock, in-system programming, an RS-232
port and a CAN (Controller Area Network, an automotive
3. The AVR Dragon[27] is a low-cost (approximately $50) standard) port via DE9 connectors, and stake pins for all of
substitute for the JTAGICE mkII for certain target the GPIO signals from the target device.
parts. The AVR Dragon provides in-system serial programming, high-voltage serial programming and par- The target boards have ZIF sockets for DIP, SOIC, QFN,
allel programming, as well as JTAG or debugWIRE or QFP packages, depending on the board.
emulation for parts with 32 KB of program memory or The signal routing board sits between the base board and
less. ATMEL changed the debugging feature of AVR the target board, and routes the signals to the proper pin on
Dragon with the latest rmware of AVR Studio 4 - the device board. There are many dierent signal routing
AVR Studio 5 and now it supports devices over 32 KB boards that could be used with a single target board, deof program memory.
pending on what device is in the ZIF socket.
The STK600 allows in-system programming from the PC
via USB, leaving the RS-232 port available for the target
microcontroller. A 4 pin header on the STK600 labeled
'RS-232 spare' can connect any TTL level USART port on
the chip to an onboard MAX232 chip to translate the signals
JTAG can also be used to perform a boundary scan test,[28] to RS-232 levels. The RS-232 signals are connected to the
which tests the electrical connections between AVRs and RX, TX, CTS, and RTS pins on the DB-9 connector.
other boundary scan capable chips in a system. Boundary
scan is well-suited for a production line, while the hobbyist
3.5.2 STK500 starter kit
is probably better o testing with a multimeter or oscilloscope.
The STK500 starter kit and development system features
ISP and high voltage programming (HVP) for all AVR
devices, either directly or through extension boards. The
3.5 Development tools and evalua- board is tted with DIP sockets for all AVRs available in
DIP packages.
tion kits
4. The JTAGICE adapter interfaces to the PC via a standard serial port. Although the JTAGICE adapter has
been declared "end-of-life" by Atmel, it is still supported in AVR Studio and other tools.
3.5.1
The STK600 starter kit and development system is an update to the STK500.[29] The STK600 uses a base board, a
signal routing board, and a target board.
3.5.3
19
ory has been removed in AVR Studio 4.18.[32] The Dragon
has a small prototype area which can accommodate an 8,
28, or 40-pin AVR, including connections to power and
programming pins. There is no area for any additional circuitry, although this can be provided by a third-party product called the Dragon Rider.[33]
3.5.6
JTAGICE mkI
3.5.4
3.5.5
AVR Dragon
3.5.8
JTAGICE3
The JTAGICE3 updates the mkII with more advanced debugging capabilities and faster programming. It connects
via USB and supports the JTAG, aWire, SPI, and PDI
interfaces.[34] The kit includes several adapters for use with
most interface pinouts.
3.5.9
AVR ONE!
20
The AVR Dragon can both program and debug since the
32 KB limitation was removed in AVR Studio 4.18, and
the JTAGICE mkII is capable of both programming and
debugging the processor. The processor can also be programmed through USB from a Windows or Linux host, usAtmel ATmega169 in 64-pad MLF package on the back of an Atmel ing the USB Device Firmware Update protocols. Atmel
AVR Buttery board
ships proprietary (source code included but distribution restricted) example programs and a USB protocol stack with
The very popular AVR Buttery demonstration board is a the device.
self-contained, battery-powered computer running the At- LUFA[37] is a third-party free software (MIT license) USB
mel AVR ATmega169V microcontroller. It was built to protocol stack for the USBKey and other 8-bit USB AVRs.
show-o the AVR family, especially a then new built-in
LCD interface. The board includes the LCD screen, joystick, speaker, serial port, real time clock (RTC), ash 3.5.12 Raven wireless kit
memory chip, and both temperature and voltage sensors.
Earlier versions of the AVR Buttery also contained a CdS The RAVEN kit supports wireless development using Atphotoresistor; it is not present on Buttery boards produced mels IEEE 802.15.4 chipsets, for ZigBee and other wireafter June 2006 to allow RoHS compliance.[36] The small less stacks. It resembles a pair of wireless more-powerful
board has a shirt pin on its back so it can be worn as a name Buttery cards, plus a wireless USBKey; and costing about
badge.
that much (under $US100). All these boards support
The AVR Buttery comes preloaded with software to JTAG-based development.
demonstrate the capabilities of the microcontroller. Fac- The kit includes two AVR Raven boards, each with a 2.4
tory rmware can scroll your name, display the sensor read- GHz transceiver supporting IEEE 802.15.4 (and a freely
ings, and show the time. The AVR Buttery also has licensed ZigBee stack). The radios are driven with ATa piezoelectric transducer that can be used to reproduce mega1284p processors, which are supported by a custom
sounds and music.
segmented LCD display driven by an ATmega3290p proThe AVR Buttery demonstrates LCD driving by running a cessor. Raven peripherals resemble the Buttery: piezo
14-segment, six alpha-numeric character display. However, speaker, DataFlash (bigger), external EEPROM, sensors,
32 kHz crystal for RTC, and so on. These are intended for
the LCD interface consumes many of the I/O pins.
use in developing remote sensor nodes, to control relays, or
The Butterys ATmega169 CPU is capable of speeds up to whatever is needed.
8 MHz, but it is factory set by software to 2 MHz to preserve
the button battery life. A pre-installed bootloader program The USB stick uses an AT90USB1287 for connections to
allows the board to be re-programmed via a standard RS- a USB host and to the 2.4 GHz wireless links. These are
232 serial plug with new programs that users can write with intended to monitor and control the remote nodes, relying
on host power rather than local batteries.
the free Atmel IDE tools.
3.5.11
AT90USBKey
3.5.13
Third-party programmers
21
in board versions older than the Diecimila). The ATmega1280 and ATmega2560, with more pinout and memory capabilities, have also been employed to develop the
Arduino Mega platform. Arduino boards can be used with
its language and IDE, or with more conventional programming environments (C, assembler, etc.) as just standardized
and widely available AVR platforms.
USB-based AVRs have been used in the Microsoft Xbox
hand controllers. The link between the controllers and
Xbox is USB.
3.7
FPGA clones
3.8
See also
Arduino
AVR32
22
3.9 References
[1] Since 1996, NTH has become part of the Norwegian University of Science and Technology (NTNU)
Savannah.nongnu.org.
Re-
imshome.com.
23
Chapter 4
25
Program memory (ash) has a separate address space, There are two types of conditional branches: jumps to adaddressed as 16-bit words for the purpose of fetching dress and skips. Conditional branches (BRxx) can test an
instructions
ALU ag and jump to specied address. Skips (SBxx) test
an arbitrary bit in a register or I/O and skip the next instruc For the purpose of fetching constant data, program tion if the test was true.
memory is addressed bytewise through the Z pointer
In the following:
register, prepended if necessary by RAMPZ.
The EEPROM is memory-mapped in some devices;
in others, it is not directly addressable and is instead
accessed through address, data and control I/O registers.
The rst 64 I/O registers are accessible through both the I/O
and the data address space. They have therefore two dierent addresses. These are usually written as 0x00 (0x20)"
through 0x3F (0x5F)", where the rst item is the I/O address and the second, in parentheses, the data address.
The special-purpose CPU registers, with the exception
of PC, can be accessed as I/O registers. For example, SREG (0x3F (0x5F)), SP (0x3E:0x3D (0x5E:0x5D)),
EIND (0x3C (0x5C)) or RAMPZ (0x3B (0x5B)).
A typical ATmega memory map may look like:
where RAMEND is the last RAM address. In parts lacking
extended I/O the RAM would start at 0x0060.
4.5
4.4 Instruction list
Not all instructions are implemented in all Atmel AVR controllers. This is the case of the instructions performing mulInstructions are one 16-bit word long, save for those includ- tiplications, extended loads/jumps/calls, long jumps, and
ing a 16-bit or 22-bit address, which take two words.
power control.
26
4.7
External links
Google Play
Chapter 5
5.1.2
5.1.1
The PDP-11
The VAX-11
27
28
5.1.3
The MC68000
Motorolas designers attempted to make the assembly language orthogonal while the underlying machine language
was somewhat less so. Unlike PDP-11, the MC68000 used
separate registers to store data and the addresses of data in
memory.
5.1.5
RISC
At the bit level, the person writing the assembler (or debugging machine code) would clearly see that symbolic instructions could become any of several dierent op-codes. This
compromise gave almost the same convenience as a truly
orthogonal machine, and yet also gave the CPU designers
freedom to use the bits in the instructions more eciently Designers of RISC architectures strove to achieve a balance
than a purely orthogonal approach might have.
that they thought better. In particular, most RISC computers, while still being highly orthogonal with regard to
which instructions can process which data types, now have
5.1.4 The 8080 and follow on designs
reverted to load/store architectures. In these architectures, only a very few memory reference instructions can
The 8-bit Intel 8080 (as well as the 8085 and 8051) mi- access main memory and only for the purpose of loading
croprocessor was basically a slightly extended accumulator- data into registers or storing register data back into main
based design and therefore not orthogonal. An assembly- memory; only a few addressing modes may be available, and
language programmer or compiler writer had to be mind- these modes may vary depending on whether the instruction
ful of which operations were possible on each register: refers to data or involves a transfer of control (jump). ConMost 8-bit operations could be performed only on the 8-bit versely, data must be in registers before it can be operated
accumulator (the A-register), while 16-bit operations could upon by the other instructions in the computers instruction
be performed only on the 16-bit pointer/accumulator (the set. This trade o is made explicitly to enable the use of
HL-register pair), whereas simple operations, such as incre- much larger register sets, extended virtual addresses, and
ment, were possible on all seven 8-bit registers. This was longer immediate data (data stored directly within the comlargely due to a desire to keep all opcodes one byte long puter instruction).
and to maintain source code compatibility with the original
Intel 8008 (an LSI-implementation of the Datapoint 2200's
CPU).
5.2
The binary-compatible Z80 later added prex-codes to escape from this 1-byte limit and allow for a more powerful instruction set. The same basic idea was employed
for the Intel 8086, although, to allow for more radical extensions, binary-compatibility with the 8080 was not attempted here; instead the 8086 was designed as a more regular and fully 16-bit processor that was source-compatible
with the 8008, 8080, and 8085. It maintained some degree of non-orthogonality for the sake of high code density
(even though this was derided as being "baroque" by some
computer scientists at the time). The 32-bit extension of
this architecture that was introduced with the 80386, was
somewhat more orthogonal despite keeping all the 8086 instructions and their extended counterparts. However, the
encoding-strategy used still shows many traces from the
8008 and 8080 (and Z80); for instance, single-byte encodings remain for certain frequent operations such as push
and pop of registers and constants, and the primary accumulator, eax, employ shorter encodings than the other reg-
References
Chapter 6
Open-source hardware
vices, sharing of logic designs has been a form of opensource hardware. Instead of the schematics, hardware description language (HDL) code is shared. HDL descriptions
are commonly used to set up system-on-a-chip systems either in eld-programmable gate arrays (FPGA) or directly
in application-specic integrated circuit (ASIC) designs.
HDL modules, when distributed, are called semiconductor
intellectual property cores, or IP cores.
One example of open source hardware is Phonebloks.
6.1
Licenses
Open-source hardware (OSH) consists of physical artifacts of technology designed and oered by the open design
movement. Both free and open-source software (FOSS) as
well as open-source hardware is created by this open-source
culture movement and applies a like concept to a variety of
components. It is sometimes, thus, referred to as FOSH
(free and open source hardware). The term usually means
that information about the hardware is easily discerned so
that others can make it - coupling it closely to the maker
movement.[1] Hardware design (i.e. mechanical drawings,
schematics, bills of material, PCB layout data, HDL source
code and integrated circuit layout data), in addition to the
software that drives the hardware, are all released under
free/libre terms. The original sharer gains feedback and potentially improvements on the design from the FOSH community. There is now signicant evidence that such sharing
creates enormous economic value.[2]
Rather than creating a new license, some open-source hardware projects simply use existing, free and open-source
software licenses.[3] These licenses may not accord well
with patent law.[4]
30
The TAPR Open Hardware License: drafted by attorney John Ackermann, reviewed by OSS community
6.2 Development
leaders Bruce Perens and Eric S. Raymond, and discussed by hundreds of volunteers in an open commuExtensive discussion has taken place on ways to make opennity discussion[12]
source hardware as accessible as open-source software.
[16]
such as the level
Balloon Open Hardware License: used by all projects Discussions focus on multiple areas,
[17]
at
which
open-source
hardware
is
dened,
ways to colin the Balloon Project
laborate in hardware development, as well as a model for
Although originally a software license, OpenCores en- sustainable development by making open-source appropriate technology.[18][19] In addition there has been considercourages the LGPL
able work to produce open-source hardware for scientic
combination of open-source electronics
Hardware Design Public License: written by Graham hardware using a[20][21]
3-D
printing.
and
Seaman, admin. of Opencollector.org
One of the major dierences between developing open In March 2011 CERN released the CERN Open Hard- source software and developing open-source hardware is
ware License (OHL)[13] intended for use with the that hardware results in tangible outputs, which cost money
Open Hardware Repository[14] and other projects.
to prototype and manufacture. As a result, the phrase free
as in speech, not as in beer,[22] more formally known as
[15]
The Solderpad License
is a version of the Apache Gratis versus Libre, distinguishes between the idea of zero
License version 2.0, amended by lawyer Andrew Katz cost and the freedom to use and modify information. While
to render it more appropriate for hardware use.
open-source hardware faces challenges in minimizing cost
31
and reducing nancial risks for individual project developers, some community members have proposed models to
address these needs.[23] Given this, there are initiatives to
develop sustainable community funding mechanisms, such
as the Open Source Hardware Central Bank.[24]
There are many applicable business models for implementing some open-source hardware even in traditional rms.
For example, to accelerate development and technical innovation the photovoltaic industry has experimented with
partnerships, franchises, secondary supplier and completely
[29]
Often vendors of chips and other electronic components open-source models.
will sponsor contests with the provison that the participants
and winners must share their designs. Circuit Cellar maga6.5 See also
zine organizes some of these contests.
List of open-source hardware projects
3D printing
Computer numeric control
Computer-aided design
Coreboot
Indiegogo
Kickstarter
Modular design
Open innovation
Open-source computing hardware
Open Source Ecology
Open Source Initiative
Open Source Lab (book)
6.3.1
RYF certication
Open-source robotics
Rapid prototyping
Reuse
Wevolver
6.6
References
32
[4] Thompson, C. (2011). Build it. Share it. Prot. Can open
source hardware work?. Work, 10, 08.
[5] For a nearly comprehensive list of licenses,
OpenCollectors license zone
see
[6] Item What license is used for OpenCores?", from Opencores.org FAQ, retrieved 14 January 2013
[7] FreeCores Main Page, retrieved 25 November 2008
[8] Open Hardware Foundation, main page, retrieved 25
November 2008
[9] See Are we going to get the 'source' for what is on the
FPGA also?" in the Open Graphics Project FAQ, retrieved
25 November 2008
6.7
External links
http://www.wired.com/2015/03/
need-free-digital-hardware-designs/
Stallman).
[13] CERN Open Hardware Licence. Open Hardware Repository. CERN. 2012-07-05. Retrieved 2012-08-15.
Open Source Semiconductor Core Licensing, 25 Harvard Journal of Law & Technology 131 (2011)
(Richard
Chapter 7
7.2.1
Where dierent from the Arduino base feature set, com- The following boards are fully or almost fully compatible
patibility, features, and licensing details are included.
with both the Arduino hardware and software, including being able to accept shield daughterboards.
7.1.1
Superseded boards
7.2.3
Software-compatibility only
33
34
7.2.4
Non-ATmega boards
[16] http://arduino.cc/en/Main/ArduinoBoardYun
[17] ATmega32U4. Atmel.com. Retrieved 2013-01-18.
Arduino.cc.
Re-
The following boards accept Arduino shield daughter [21] Arduino Blog- Massimo Introduces Arduino Leonardo.
Arduino.cc. 2012-07-23. Retrieved 2013-01-18.
boards. They do not use microcontrollers compatible with
the Arduino IDE,[227] nor do they provide an alternative im[22] Arduino - ArduinoBoardUno. Arduino.cc. Retrieved
plementation of the Arduino IDE and software libraries.
2013-01-23.
[23] ArduinoBoardUno. Arduino.cc. Retrieved 2013-01-18.
7.5 References
[1] Arduino - Boards. Arduino.cc. 2009-03-01. Retrieved
2013-01-23.
[3] http://arduino.cc/en/Main/ArduinoBoardZero
[4] http://arduino.org/products/arduino-zero-pro
[5] ATSAMD21G18A;". Atmel.com. Retrieved 2014-08-12.
[6] http://blog.arduino.cc/2015/06/15/
arduino-zero-now-available-for-purchase/
[7] http://blog.arduino.cc/2014/05/15/meet-arduino-zero/
[40] Arduino Blog- Arduino Nano: all-in-one design for breadboard use. Arduino.cc. 2008-05-15. Retrieved 2013-0118.
7.5. REFERENCES
35
[42] Arduino Blog- LilyPad Arduino and Arduino 0010. Arduino.cc. 2007-10-17. Retrieved 2013-01-18.
[66] http://www.ventor.co.in/index.php?main_page=product_
info&cPath=16&products_id=86
[43] arduino.cc
[67] http://www.ventor.co.in/
sainsmart.com.
[71] http://elecfreaks.com/store/download/Freaduino2560_
Schematic.pdf
[72] http://www.elecfreaks.com/
[74] Tavir-AVR. Tavir-AVR :: Bascom, Arduino, Wiring - Programozs, Frum, ingyenes mintaalkalmazsok, knyvek.
Avr.tavir.hu. Retrieved 2013-01-23.
Arduino.cc.
Arduino.cc.
Retrieved
[85] "
trieved 2013-01-23.
36
[89] Freeduino USB complete KIT (Arduino Duemilanove [110] http://www.obdiiworld.com/ obdiiworld.com]] (parts in
Compatible)". Nkcelectronics.com. Retrieved 2013-01-23.
Chinese?)
[90] Illuminato::Genesis. Liquidware. Retrieved 2013-01-23. [111] YourDuino. YourDuino. Retrieved 2013-01-23.
[112] YourDuinoRobo1 (Upgraded Arduino Compatible)".
Arduino-direct.com. Retrieved 2014-09-23.
[91]
[92] Simple
Labs
|
Simplifying
Technology.
[113] geekstudio.co.za
Build.simplelabs.co.in. Retrieved 2013-01-23.
[93] Vol.27
|
Retrieved 2013-01-23.
(8
.net.
+
)
| [114] Zigduino r1 - Logos Electromechanical.
electro.com. Retrieved 2013-01-23.
Otonanokagaku.net.
Logos-
[115] Products & Services - Logos Electromechanical. Logoselectro.com. 1999-02-22. Retrieved 2013-01-23.
[95] 990.023 Luigino328 - User Manual [EN]". Droids.it. Re- [116] http://www.freetronics.com/collections/arduino/products/
etherten
trieved 2013-01-23.
[96] Metaboard Metalab (in German). Metalab.at. Retrieved [117] http://www.freetronics.com/collections/arduino/products/
ethermega-arduino-mega-2560-compatible-with-onboard-ethernet
2013-01-23.
[97] small computers for art and science. Rascal Micro. Retrieved 2013-01-23.
[118] http://www.freetronics.com/collections/arduino/products/
usbdroid
[119] http://www.freetronics.com/collections/arduino/products/
eleven
[98]
[99] BitWizard. Bitwizard.nl. Retrieved 2013-01-23.
[100]
[101]
[102]
[103]
[120] http://www.freetronics.com/collections/arduino/products/
kitten
DFRduino Romeo-All in one Controller V1.1(SKU:
DFR0004) - Robot Wiki. Dfrobot.com. Retrieved 2013[121] CATkit
01-23.
[122] http://www.freetronics.com/collections/arduino/products/
DFRobot-An Online Opensource Robot and Hardware
etherdue-arduino-due-compatible-with-onboard-ethernet
Shop. Dfrobot.com. Retrieved 2013-01-23.
[123] http://www.elechouse.com/elechouse/index.php?main_
Tools, Parts, Kits for DIY'ers. Curious Inventor. Repage=product_info&cPath=72_73&products_id=2212
trieved 2013-01-23.
[124] "Io:duino". Railstars. Retrieved 2013-01-23.
Seeeduino V3.0 (Atmega 328P) [ARD130D2P] - $22.50 :
Seeed Studio Bazaar, Boost ideas, extend the reach. Seeed- [125] DFRobotShop Rover V2 - Arduino Compatible Tracked
studio.com. Retrieved 9 Nov 2014.
Robot (Basic Kit)". RobotShop. Retrieved 2013-01-23.
[106] Parts & Kits for Arduino Online, Buy Microcontroller [129] mindsetsonline.co.uk
Boards, Electronic Components for Arduino - Welcome. [130] Bump and Reverse Robot Kit (Faraduino) - Faraduino.
Freetronics. Retrieved 2013-01-23.
Mindsets online. 2007-03-01. Retrieved 2013-01-23.
[107] Volksduino: complete low-cost Arduino clone. Applied- [131] Faraconnect Shield (Faraduino) - Faraduino. Mindsets onplatonics.com. Retrieved 2013-01-23.
line. 2007-03-01. Retrieved 2013-01-23.
[108] Applied Platonics. Applied Platonics. Retrieved 2013- [132] toastedcircuits.com
01-23.
[133]
[109] Wise time with Arduino. Timewitharduino.blogspot.com.
Retrieved 2013-01-23.
[134] Motoruino | GUIBOT. Guibot.pt. Retrieved 2013-01-23.
7.5. REFERENCES
37
[135] Anderson, Chris (2009-01-21). ArduPilot (Legacy) main [158] iDuino Complete Kit [iDuino-3-kit] - $21.00 : Fundapage. DIY Drones. Retrieved 2013-01-23.
mental Logic WebStore, Electronic Kits and Components.
Spie.org. 2010-05-30. Retrieved 2013-01-23.
[136] Flyduino Shop - Multirotor, Multicopter Teile & Zubehr
fr Quadrocopter, Hexacopter, Octocopter - Motore, Rah- [159] Albino, Alejandro (2012-04-21). Smallest Arduino.
Femtoduino. Retrieved 2013-01-23.
men, FCs & ESCs. Flyduino.net. Retrieved 2013-01-23.
[137] Arduino "" RF [160] freeduino lite v2. Bhashatech.com. Retrieved 2013-0123.
868 Mhz :: Arduino. Jt5.ru. 201203-30. Retrieved 2013-01-23.
[161] Bhasha Technologies. Bhashatech.com. Retrieved 201301-23.
[138] JeeNode - JeeLabs Hardware - JeeLabs . net. Jeelabs.net.
Retrieved 2013-01-23.
[162] Freeduino Serial india. Bhashatech.com. 2009-08-23.
Retrieved 2013-01-23.
[139] http://www.freetronics.com/collections/arduino/products/
arduphone-arduino-compatible-cellphone
[163] Femtoduino: an ultrasmall (20.7x15.2 mm) libre Arduino
compatible board. Varesano.net. Retrieved 2013-01-23.
[140] http://tah.io
[141] http://revealinghour.in
[164] , specications
[157] DragonFly - ATmega1280 Arduino Bundle - Circuit Monkey. Circuitmonkey.com. Retrieved 2014-11-04.
[182] Picoduino. Peter Misenko. Retrieved 4 June 2014.
38
[209] st.com
Github.com.
Retrieved
[194] A Maker of Tiny Open Source Circuits. TinyCircuits. Re- [218] Freescale Freedom Development Platform for Kinetis
KL14, KL15, KL24, KL25 MCUs. Archived from the
trieved 2013-01-23.
original on 6 Oct 2014.
[195] TinyLily. TinyCircuits. Retrieved 2013-01-23.
[219] Welcome to Freescale - Freescale Semiconductor.
[196] https://learn.adafruit.com/introducing-trinket
Freescale.com. Retrieved 2013-01-23.
[197] strobit - Strobit Wireless Widget Open Hardware Project [220] KL2 Product Summary Page. Freescale.com. Retrieved
- Google Project Hosting. Code.google.com. Retrieved
2013-01-23.
2013-01-23.
[221] Coridium. Coridiumcorp.com. Retrieved 2013-01-23.
[198] Wiblocks - ZB1 System. Wiblocks.luciani.org. Retrieved
[222] Coridium. Coridiumcorp.com. Retrieved 2013-01-23.
2013-01-23.
[199] OpenEnergyMonitor. emonTx.
Retrieved 2013-01-23.
[200] "Project:Nanode
London
Hackspace. [224]
Wiki.london.hackspace.org.uk. Retrieved 2013-01-23.
[225]
[201] Wireless Arduino-compatible miniatures. panStamp. Retrieved 2013-01-23.
[226]
[202]
Energia. Github.
CHIPINO - The Microchip PIC Based Arduino Style Module. Chipino.com. Retrieved 15 November 2014.
CHIPINO-FAQ. Chipino.com. Retrieved 15 November
2014.
39
[231] propellerpowered.com
[232] QuickStart 1: Comparison of Programming Tools. Parallax Semiconductor. Retrieved 2013-01-23.
Anderson, Rick; Cervo, Dan (May 16, 2012). Pro Arduino (1st ed.). Apress. p. 350. ISBN 978-1-43023939-0.
[233] Mitchell, Graham (2010-06-09). Introducing The Amicus18 [195] | Amicus18 Beginner Guides | Amicus18.
Digital-diy.com. Retrieved 2013-01-23.
40
Monk, Simon (November 15, 2011). Arduino + Android Projects for the Evil Genius: Control Arduino with
Your Smartphone or Tablet (1st ed.). McGraw-Hill. p.
224. ISBN 978-0-07-177596-0.
Timmis, Harold (November 9, 2011). Practical Arduino Engineering (1st ed.). Apress. p. 328. ISBN
978-1-4302-3885-0.
Pardue, Joe (January 15, 2010). An Arduino Workshop (1st ed.). Smiley Micros. p. 214. ISBN 978-09766822-2-6.
7.7
External links
Chapter 8
Wiring
Wiring is an open-source electronics prototyping platform
composed of a programming language, an integrated development environment (IDE), and a single-board microcontroller. It was developed starting in 2003 by Hernando
Barragn.
8.1 Software
42
CHAPTER 8. WIRING
cense and are available on the Wiring Web site. Layout and
production les for the Wiring hardware are also available.
The source code for the IDE and the hardware library are
available and released under the GPLv2
Noble, Joshua (July 15, 2009). Programming Interactivity: A Designers Guide to Processing, Arduino, and
openFramework (1st ed.). O'Reilly Media. p. 768.
ISBN 0-596-15414-3.
8.3.1
Processing
8.3.2
8.5 Sources
Reas, Casey; Fry, Ben; Maeda, John (September 30,
2007), Processing: A Programming Handbook for Visual Designers and Artists (1st ed.), The MIT Press, p.
736, ISBN 0-262-18262-9
8.6
External links
Ocial website
Processing.org
Arduino
Fritzing
Wiring on Facebook
Chapter 9
Processing
Processing is an open source programming language and
integrated development environment (IDE) built for the
electronic arts, new media art, and visual design communities with the purpose of teaching the fundamentals of
computer programming in a visual context, and to serve as
the foundation for electronic sketchbooks. The project was
initiated in 2001 by Casey Reas and Benjamin Fry, both
formerly of the Aesthetics and Computation Group at the
MIT Media Lab. One of the stated aims of Processing is to
act as a tool to get non-programmers started with programming, through the instant gratication of visual feedback.
The language builds on the Java language, but uses a simplied syntax and graphics programming model.
9.2.1
9.1 Features
9.2.2
Hello World
9.2 Examples
43
44
CHAPTER 9. PROCESSING
9.3.4
Processing.js
9.3.5
iProcessing
9.3.6
Spde
Spde (standing for Scala Processing Development Environment) replaces Processings reduced Java syntax and custom preprocessor with the o-the-shelf Scala programming
language which also runs on the Java platform and enforces
9.3.1 Design By Numbers
some of the same restrictions such as disallowing static
methods, while also allowing more concise code, and supProcessing was based on the original work done on Design porting functional programming.[4][5][6]
By Numbers project in MIT. It shares many of the same
ideas and is a direct child of that experiment.
9.3.7
9.3.2
9.3.3
Mobile Processing
Another spin-o project, now defunct, is Mobile Processing by Francis Li, which allowed software written using the
Processing language and environment to run on Java powered mobile devices. Today some of the same functionality
is provided by Processing itself.[2]
Quil
Quil (formerly named clj-processing) is a wrapper for Processing in the Clojure language, a Lisp that runs on the Java
platform.[7]
9.4
Awards
9.9. REFERENCES
text documents. With Casey Reas, he founded the Processing Project, an open-source programming environment for
teaching computational design and sketching interactivemedia software. It provides artists and designers with accessible means of working with code while encouraging engineers and computer scientists to think about design concepts.
9.5 License
Processings core libraries, the code included in exported
applications and applets, is licensed under the GNU Lesser
General Public License, allowing users to release their original code with a choice of license.
The IDE is licensed under the GNU General Public License.
9.6 Name
Originally, Processing had the URL at proce55ing.net, because the processing domain was taken. Eventually Reas
and Fry acquired the domain. Although the name had a
combination of letters and numbers, it was still pronounced
processing. They do not prefer the environment being referred to as Proce55ing. Despite the domain name change,
Processing still uses the term p5 sometimes as a shortened
name (p5 specically is used not p55).
9.8 Footnotes
[1] Hello world! Processing.
[2] Android - Processing. Retrieved 2013-06-03.
[3] John Resig - Processing.js
[4] Spde: Spde. Technically.us. Retrieved on 2013-08-20.
45
9.9
References
46
Vantomme, Jan (September 20, 2012), Processing 2,
Creative Programming Cookbook (1st ed.), Packt Publishing, p. 291, ISBN 9781849517942
Pearson, Matt (June 1, 2011), Generative Art, A practical guide using Processing (1st ed.), Manning, p. 240,
ISBN 9781935182627
Jan, Vantomme (September 20, 2012), Processing 2:
Creative Programming Cookbook (1st ed.), Packt Publishing, p. 306, ISBN 978-1849517942
Sauter, Daniel (May 2, 2013), Rapid Android Development: Build Rich, Sensor-Based Applications with Processing (1st ed.), Pragmatic Bookshelf, p. 300, ISBN
978-1937785062
Gradwohl, Nikolaus (May 20, 2013), Processing 2:
Creative Coding Hotshot (1st ed.), Packt Publishing, p.
266, ISBN 978-1782166726
CHAPTER 9. PROCESSING
47
Text
Arduino Source: https://en.wikipedia.org/wiki/Arduino?oldid=676493570 Contributors: AxelBoldt, Caltrop, Ceaser, Hikari, Mahjongg, Kku,
Delirium, Darkwind, Kragen, Glenn, Scott, Donio, Mulad, Greglocock, Nv8200pa, Taxman, Val42, Klaus Leiss, Scruss, Raeky, Knobunc,
DocWatson42, BenFrantzDale, Ds13, Mcapdevila, Micru, Jorge Stol, Cmkpl, Halosix, Abdull, Thorwald, Imroy, Discospinster, ArnoldReinhold, Duchamp~enwiki, Bender235, PutzfetzenORG, Jantangring, Bobo192, Smalljim, R. S. Shaw, Giraedata, Trevj, Jdabney, Nasukaren, Radical Mallard, Velella, Marasmusine, Mindmatrix, Danmaz74, Pol098, Ruud Koot, Eyreland, SDC, CharlesC, DustyDingo~enwiki,
Sprague, Royan, Magister Mathematicae, Rjwilmsi, Koavf, Patrick Gill, Salix alba, MZMcBride, Allen Moore, Intgr, Lmatt, Tedder, Chobot,
ATH500, Remmelt, Hydrargyrum, Bovineone, Geertivp, Tkbwik, Wrachelson, Venix, Warrenm, Elkman, Wknight94, Arthur Rubin, Dspradau,
Petri Krohn, Red Jay, Back ache, JLaTondre, Snaxe920, Kingboyk, Mardus, Sbassi, Zlogic, Attilios, Lethalmonk, SmackBot, Gracehoper,
Faisal.akeel, DMellis, InverseHypercube, McGeddon, Misto, Arny, NickGarvey, Amatulic, Adamfeuer, JennyRad, Thumperward, Salvor,
George Church, Deli nk, Randomskk, Chendy, Dro Kulix, Frap, Alphathon, OrphanBot, JonHarder, Grhabyt, Stepho-wrs, Mwtoews, Salamurai, Pfhyper, RickO5, Ian Spackman, Toggio, IronGargoyle, TerryKing, Hu12, Courcelles, Sreeram shankar, Fabrice Florin, Amalas, Pfagerburg~enwiki, Drinibot, Yaris678, Cydebot, Nick Wilson, Gogo Dodo, SimenH, ShadowGuy, Neoforma, ClarkMills, Abqsteve, Surturz, Kozuch,
Waveking, Thijs!bot, Pemboid, Potax, MarshBot, Guy Macon, Jonathan Williams, JonOxer, Chrisjj3, JAnDbot, Viskr, CosineKitty, Khommel,
H3llbringer, Magioladitis, David Oliver, JamesBWatson, Oskay, Cadsuane Melaidhrin, Steven Walling, Jatkins, JMBryant, Gwern, Wimh, CommonsDelinker, Yannick56, Minime72706, Aervanath, Gonzalo M. Garcia, Ajfweb, Lexein, TXiKiBoT, Moumouza, Calwiki, Chuckwolber, Exprice, Nexus501, Sgbirch, Seb az86556, Rajsite, Jamelan, Andy Dingley, Synthebot, Nave.notnilc, Userper, Kbrose, Yngvarr, Anilashanbhag,
Yadoo86, Sav vas, Mikebar, Yintan, Rob Prikanowski, Soler97, Bentogoa, Udawatabhimanyu4, Ali asin, Henryerinjones, Linuxrules1337, Vbscript2, Misiu mp, Tintin192, Treekids, Kookish, ImageRemovalBot, Stephensb42, Shloimeborukh, ColorfulNumbers, GreenSpigot, VQuakr,
Machee, Gbarberi, Blanchardb, TjeerdVerhagen, Craigbic, Crazyburns, Awickert, Alexbot, Vancircuit, A Pirard, Arjayay, Jinlye, Chaosdruid,
Apparition11, DumZiBoT, Darkicebot, XLinkBot, H0dges, NobbiP, Cmr08, Cbenson1, Zodon, Fiskbil, Dsimic, Mortense, Johanroed, Jncraton, Tergenev, Cst17, Harviecz, MrOllie, Download, CUSENZA Mario, 84user, Jarble, Softy, Margin1522, Luckas-bot, Yobot, Wonder,
AnomieBOT, ICSeater, Gtz, Jim1138, JackieBot, Bjepson, Csigabi, Citation bot, Ghstwlf, LilHelpa, Xqbot, IslandMountain, PabloCastellano,
JimVC3, Rvumbaca, GrouchoBot, Xan2, Mort42, SassoBot, Brunonar, Alainr345, Thomas-pluralvonglas, Robertelder, Rstuvw, FrescoBot,
JaadesA, W Nowicki, Angmall, Idyllic press, JackStonePGD, FlyFire, Danhomer, DivineAlpha, Shiki2, Kristianpaul, Edderso, Joebigwheel,
Jonesey95, Skyerise, Tehuglyscientist, Jandalhandler, SimonPStevens, E-Soter, Mibix, ActivExpression, , Cyb3rn0id, Trappist the monk, DixonDBot, Michael9422, MakerShed, ErikvanB, MoreNet, Jluciani, RenaudBedard, Tbhotch, Julian dasilva, Roland Richter,
Obankston, Bernd.Brincken, Migaber, Peapodamus, Mazurov, DASHBot, EmausBot, Rusfuture, Dead Horsey, WikitanvirBot, LordStDennis, Kronick, Bricoman55, RA0808, Sukkin, Scgtrp, Tikitpok, Hscharler, ZroBot, Pbruins84, TLeek, , Ubarro, Lemio, Mowcius,
Sbmeirow, Lorem Ip, Howetimothy, Palosirkka, John Garvin, Tronixstu, JohnBoxall, ChuispastonBot, Gandrewstone, Sudozero, Fargasch,
Luckylarrycouk, Clay Digger, ClueBot NG, 392236a, Phry, Braincricket, Danim, Tuxskar, CasualVisitor, Helpful Pixie Bot, Simonmonk2,
Troy.hester, Se Ra Bu Tan, BG19bot, Virtualerian, Techformeplease, Paradoxiality, Gbulmeruk, Barefoottech, Northamerica1000, PatrickCarbone, Frze, Srcvale, Compfreak7, BKJanzen, Abishai Singh, Sn1per, Nungalpiriggal, Jjolla88, Zedshort, Udoklein, carusdaidalos, Ldsrc2008, Roguebhagman, Mfoulks3200, Shields Arduino, Laure f o, Khazar2, Riktw, Theoduino, Youdonotknow, Imheck, Dexbot, Roweboat14, Olonic, MarkAStephenson, Vinnycordeiro, Luli17, Razvaniycdi, Theskuter37, MaharajaMD, MWikiOrg, Prestja, Edsfocci, Pdecalculus, Onorai, Dairhead, Kirstine Dupont, TobiasAD, Pabhilash, Samyulg, Ales9000, Borg4223, WikiEditingResearcher, RaphaelQS, Htbwmedia,
Ashishbuntybhaiya, Carafriez, Toastcoast, Rajib.hyderabad, ScotXW, Snakomaniac, WAYNELYW, Brad Dyer, Lagoset, Cman21031, Scarlettail, Dsprc, Darkness Fallss, Engr Wasim Khan, 329n8z7TeL, Karlsonx, Sarr Cat, Andhof-mt, Javiterr, Eudorina412, Gondi56, Hemangjoshi37a,
Hackarobot, Petschekr, JeremiahY, B445778, CitrusEllipsis and Anonymous: 453
Single-board microcontroller Source: https://en.wikipedia.org/wiki/Single-board_microcontroller?oldid=671356869 Contributors: Alanl,
Wtshymanski, Jeh, SmackBot, Gizzakk, TerryKing, Pfagerburg~enwiki, Mika1h, Guy Macon, Kuyabribri, Wimh, Andy Dingley, Fsmoura,
Praveen khm, Nepenthes, Mortense, Download, Yobot, J04n, Stidem, RjwilmsiBot, Sbmeirow, Raesak, Snotbot, Danim, Lyktorna, Mandylau,
Debouch, Onorai, Dairhead, SJ Defender, ScotXW and Anonymous: 15
Atmel AVR Source: https://en.wikipedia.org/wiki/Atmel_AVR?oldid=675796990 Contributors: PierreAbbat, Maury Markowitz, Mahjongg,
Egil, Stan Shebs, Glenn, Alf, Saltine, EthanL, Wernher, RedWolf, Pengo, Alan Liefting, DavidCary, DanielHolth, Chowbok, Alexf,
Julien~enwiki, Abdull, Trevor MacInnis, Chappell, Moxfyre, Imroy, Rhobite, Stevenyu~enwiki, Rnsanchez, Bender235, Kms, Phil websurfer@yahoo.com, Dennis Brown, Jevinsweval, Foobaz, Mrbill, Chbarts, AshtonBenson, (aeropagitica), Cburnett, Suruena, Versageek, Unixxx,
Kelly Martin, Toussaint, Doruu, Maxim Razin, FlaBot, Toresbe, Doruuu, Lmatt, Alvin-cs, Toxygen, Homo stannous, Jidan, Chobot, WriterHound, YurikBot, Wavelength, Crotalus horridus, Chungyan5, Hydrargyrum, Gaius Cornelius, Shaddack, Dugosz, Gorie, Robdurbar, Bb3cxv,
Bozoid, Jbattersby, Groink, Sagsaw, Morcheeba, Cbogart2, That Guy, From That Show!, KnightRider~enwiki, SmackBot, Bluelip, Transcendent,
Reedy, Royalguard11, Firstrock, Chris the speller, Bluebot, TimBentley, Thumperward, McNeight, ThePianoMan, Can't sleep, clown will eat
me, Frap, Alphathon, Dorutc, ProtocolOH, Je Wheeler, Derek R Bullamore, Glover, Mojo-chan, Steve1608, 16@r, Ex nihil, Mellery, FtPeter,
CmdrObot, Van helsing, Pfagerburg~enwiki, FlyingToaster, WeggeBot, Vwollan, JLD, Briantw, Thrapper, Thijs!bot, Epbr123, Memty Bot,
Electron9, Jauricchio, Vibhutesh, Guy Macon, Rehnn83, Arsenikk, PhilKnight, Magioladitis, Ljudina, Oskay, SwiftBot, Choppingmall, Mdulcey, Gwern, Tovven, Kiore, Ferling, Glrx, R'n'B, Smial, GrahamDavies, Sbogdanov, Vesa Linja-aho, Mrtangent, Lunakid, Zbaird, VolkovBot,
PGSONIC, Mauiyer, Sarenne, GcSwRhIc, Jcswright2, Andy Dingley, Hmms, Dimitdim, Metalliqaz, Susan714, Mihaigalos, Goosnarrggh, Masgatotkaca, SDiZ, Letter4vishal, Smishek, MenoBot, Martarius, Sfan00 IMG, Mcleanj1, Brooknet, Hossein4737, DragonBot, Jeroen74~enwiki,
Ordoon, DumZiBoT, XLinkBot, Ckgrier2, Stickee, Dthomsen8, C. A. Russell, NobbiP, Mortense, Kevin.kirkup, Ethanpet113, MrOllie, Pmod,
Mitch feaster, Dkinzer, Snaily, Yobot, Amirobot, AnomieBOT, Jim1138, Kingpin13, Kushagraalankar, Akilaa, Xqbot, Brunonar, Ottobonn,
MultiPoly, FrescoBot, Kirchhovl, Gablix, Cannolis, PigFlu Oink, Vrwlv, DrilBot, HRoestBot, Night Ravager, Lotje, Kshdeo, Jfmantis,
V.podzimek, TjBot, DexDor, Identime, AndyHe829, EmausBot, Dead Horsey, Sed par, Ani8051, Mo ainm, Gagarine, Sbmeirow, Atmelfan,
Edgar.bonet, Pun, Nerd bzh, Mikhail Ryazanov, ClueBot NG, Ashoksharmaz87, Widr, Danim, Iswantoumy, Helpful Pixie Bot, Gauravsangwan, BG19bot, Akkazemi, USB1000, Bonnie13J, Roy tate, Qwerty9030, DarafshBot, Ksvitale, Puguhwah, Mahmoodheshmati, Mogism, Amanparkash, Krikkit1, Epicgenius, Osiixy, Tomitech, Tolmeros, Akhilsn, Moshaydi and Anonymous: 303
48
CHAPTER 9. PROCESSING
9.11.2
Images
49
File:AVR_ATXMEGA_128A1.JPG Source: https://upload.wikimedia.org/wikipedia/commons/d/db/AVR_ATXMEGA_128A1.JPG License: CC BY 3.0 Contributors: Own work Original artist: Springob
File:AVRduinoUplus.jpg Source: https://upload.wikimedia.org/wikipedia/commons/3/33/AVRduinoUplus.jpg License: CC BY-SA 3.0 Contributors: took a photo of the board we developed
Previously published: on own website slicmicro.com Original artist: Slicmicro
File:A_hand-soldered_Arduino.jpg Source: https://upload.wikimedia.org/wikipedia/commons/0/07/A_hand-soldered_Arduino.jpg License:
CC BY-SA 2.0 Contributors: Flickr: A hand-soldered Arduino Original artist: Matt Biddulph
File:Ambox_important.svg Source: https://upload.wikimedia.org/wikipedia/commons/b/b4/Ambox_important.svg License: Public domain
Contributors: Own work, based o of Image:Ambox scales.svg Original artist: Dsmurat (talk contribs)
File:Arduino-compatible_R3_UNO_Sku066313-01.jpg
Source:
https://upload.wikimedia.org/wikipedia/commons/6/66/
Arduino-compatible_R3_UNO_Sku066313-01.jpg License: Public domain Contributors: Arduino-Compatible R3 UNO ATmega16U2
AVR USB Board (le) Original artist: banggood.com
File:Arduino-uno-perspective-whitw.jpg Source: https://upload.wikimedia.org/wikipedia/commons/e/ec/Arduino-uno-perspective-whitw.
jpg License: CC BY 2.0 Contributors:
Arduino-uno-perspective.jpg Original artist: Arduino-uno-perspective.jpg: Creative Tools
File:Arduino316.jpg Source: https://upload.wikimedia.org/wikipedia/commons/6/6c/Arduino316.jpg License: CC BY-SA 3.0 Contributors:
http://www.arduino.cc/ Original artist: Nicholas Zambetti
File:Arduino_BT.jpg Source: https://upload.wikimedia.org/wikipedia/commons/f/f2/Arduino_BT.jpg License: CC BY 2.0 Contributors:
Flickr: Arduino BT Original artist: David Mellis
File:Arduino_Diecimila.jpg Source: https://upload.wikimedia.org/wikipedia/commons/1/17/Arduino_Diecimila.jpg License: CC-BY-SA3.0 Contributors: Wikipedia anglophone, article Arduino Original artist: Franky47
File:Arduino_Duemilanove_0509.JPG Source: https://upload.wikimedia.org/wikipedia/commons/f/f7/Arduino_Duemilanove_0509.JPG
License: Public domain Contributors: Own work Original artist: Minime72706
File:Arduino_Ethernet_Board.jpg Source: https://upload.wikimedia.org/wikipedia/commons/1/16/Arduino_Ethernet_Board.jpg License:
CC BY-SA 2.0 Contributors: Flickr: Arduino Ethernet Board Original artist: oomlout
File:Arduino_Fio.jpg Source: https://upload.wikimedia.org/wikipedia/commons/6/68/Arduino_Fio.jpg License: CC BY 2.0 Contributors:
Flickr: Arduino Fio Original artist: David Mellis
File:Arduino_Leonardo.jpg Source: https://upload.wikimedia.org/wikipedia/commons/3/38/Arduino_Leonardo.jpg License: CC BY-SA 2.0
Contributors: Flickr: Arduino Leonardo! Original artist: Jeremy Blum
File:Arduino_Logo.svg Source: https://upload.wikimedia.org/wikipedia/commons/8/87/Arduino_Logo.svg License: Public domain Contributors: http://arduino.cc Original artist: Unknown
File:Arduino_Mega2560.jpg Source: https://upload.wikimedia.org/wikipedia/commons/f/f7/Arduino_Mega2560.jpg License: CC BY-SA
3.0 Contributors: Own work Original artist: Andy Dingley
File:Arduino_Mega_2.jpg Source: https://upload.wikimedia.org/wikipedia/commons/b/b4/Arduino_Mega_2.jpg License: CC BY-SA 2.0
Contributors: Flickr: Arduino Mega Original artist: oomlout
File:Arduino_Micro.jpg Source: https://upload.wikimedia.org/wikipedia/commons/e/e6/Arduino_Micro.jpg License: CC BY-SA 3.0 Contributors: Own work Original artist: Geek3 (talk)
File:Arduino_Mini.jpg Source: https://upload.wikimedia.org/wikipedia/commons/0/04/Arduino_Mini.jpg License: CC BY 2.0 Contributors:
Flickr: Arduino Mini Original artist: David Mellis
File:Arduino_Nano.jpg Source: https://upload.wikimedia.org/wikipedia/commons/8/8d/Arduino_Nano.jpg License: CC BY 2.0 Contributors:
Flickr: Arduino Nano Original artist: David Mellis
File:Arduino_Pro.jpg Source: https://upload.wikimedia.org/wikipedia/commons/a/af/Arduino_Pro.jpg License: CC BY 2.0 Contributors:
Flickr: Arduino Pro Original artist: David Mellis
File:Arduino_Uno_-_R3.jpg Source: https://upload.wikimedia.org/wikipedia/commons/3/38/Arduino_Uno_-_R3.jpg License: CC BY 2.0
Contributors: Arduino Uno - R3 Original artist: SparkFun Electronics from Boulder, USA
File:Arduino_top-1.jpg Source: https://upload.wikimedia.org/wikipedia/commons/a/a5/Arduino_top-1.jpg License: Public domain Contributors: Own work Original artist: DustyDingo
File:Atmega8_Development_Board.jpg Source: https://upload.wikimedia.org/wikipedia/commons/5/57/Atmega8_Development_Board.jpg
License: CC BY-SA 3.0 Contributors: Robot Platoform, http://www.robotplatform.com/ Original artist: Praveen Kumar
File:Atmel_AVR_(logo).png Source: https://upload.wikimedia.org/wikipedia/en/6/60/Atmel_AVR_%28logo%29.png License: Fair use Contributors:
The logo is from the http://www.atmel.com/dyn/products/datasheets.asp?family_id=607 website. http://www.atmel.com/dyn/resources/prod_
documents/1006S.pdf Original artist: ?
File:Atmel_STK_500_DSC00557_wp.jpg Source: https://upload.wikimedia.org/wikipedia/commons/d/d2/Atmel_STK_500_DSC00557_
wp.jpg License: FAL Contributors: Own work Original artist: smial (<a href='//commons.wikimedia.org/wiki/User_talk:Smial' title='User
talk:Smial'>talk</a>)
File:AvrDragon.png Source: https://upload.wikimedia.org/wikipedia/commons/1/1c/AvrDragon.png License: GFDL Contributors: Image
taken by Jim1138. Original artist: User:Jim1138
50
CHAPTER 9. PROCESSING
Source:
https://upload.wikimedia.org/wikipedia/commons/7/76/
CC BY-SA 2.0 Contributors: Flickr: Limited-edition orange Arduino
51
52
CHAPTER 9. PROCESSING
9.11.3
Content license