Introduction to Arduino Programming

Preview:

Citation preview

Arduino Programming(C) 2014 James Lewis

james@baldengineer.com

1

Arduino Langauge

2

Machine Language (Binary Code)

Assembly (Readable Code)

C / C++ (Readable Code)

C++ Libs

C++ Libs

C++ Libs“Arduino”

Arduino Langauge

3

Machine Language (Binary Code)

Assembly (Readable Code)

C / C++ (Readable Code)

C++ Libs

C++ Libs

C++ Libs“Arduino”

Hello World (Blink)

4

Hello World (Blink)

5

Variable

Hello World (Blink)

6

Comments

Hello World (Blink)

7

Comments

Good Comment: // Blue LED for Activity Indicator

Bad Comment: // Pin 13

Hello World (Blink)

8

Functions

Hello World (Blink)

9

Functions

Hello World (Blink)

10

Instruction

Hello World (Blink)

11

Instruction

Hello World (Blink)

12

Function Call

Hello World (Blink)

13A

rguments

Hello World (Blink)

14

IDE Tools Menu

15

IDE Tools Menu

16

IDE Tools Menu

17

IDE Tools Menu

18

Arduino IDE

19

Type Stuff Here

Compiler Output

Arduino IDE

20

Type Stuff Here

Compiler Output

Serial Monitor

Arduino IDE

21

Type Stuff Here

Compiler Output

Serial MonitorVerify & Upload

Arduino IDE

22

Type Stuff Here

Compiler Output

Serial MonitorVerify & Upload

Board & Serial Port

Blink Exercise

• Load the Blink Example and program it to your board

• Change the values of delay() to see how it affects the behavior

23Check the correct board and serial port are selected in the tools menu!

Hello WorldSerial Example

24

Serial objects

25

Serial objects

26

Enables Serial

Baud

Rate

Serial objects

27

Variables Strings

Control Characters

Print and Println

Serial objects

28

Variables Strings

Control Characters

Print and Println

NOTE: Strings and Variables Can’t be used on the same line

Hello World (Serial)

• Load up the serial code to the right

• Exercise:

• Change the 2000 in delay into a variable.

• Print value of variable on same line as “Hello World”

29

Variables

30

How Much Memory is in your Arduino?

31

Variable Types

32

Bits Unsigned Range Signed Range

byte 8 0 to 255 N/A

char 8 0 to 255 ‘A’..’b’..’X’ N/A

int 16 0 to 65535 -32,767 to 32,766

long 32 0 to 4,294,967,295-2,147,483,648 to

2,147,483,647

float 32 ±3.4028235E+38 n/a

double 32 n/a n/a

Variable Do and Don’t• DO Use Descriptive Names

• “BlueLED”, “ActivityIndicator”

• DON’T Use Bad Names

• “Integer”, “Pin13”

• DO Stick to a naming convention

• Variables are Case Sensitive!

• DON’T use same name for Local and Global Variables

33

Variable Scope

34

Variable Scope

35

Global

Variable Scope

36

Global

Local to loop()

Variable Don’t!

37

Variable Don’t!

38

Variable Don’t!

39

analogReadings[]

arrays

40

0 1 2 3 4 5

analogReadings[]

arrays

41

0 1 2 3 4 5

Size

Elements

analogReadings[]

arrays

42

0 1 2 3 4 5

Size

Elements

arrays are 0-index based.

So last element is always “1 less”

than the size!

Pin Functions

43

pinMode()

44

Analog(A0..A5)

Digital(0..13)

INPUT Digital Input, Pull-Up Off

Digital Input, Pull-Up Off

INPUT_PULLUP Digital Input, Pull-Up On

Digital Input, Pull-Up On

OUTPUT Digital Output Digital Output

Analog Pins can be used as Digital Pins pinMode(INPUT, Ax) isn’t necessary for analogRead()

digitalRead() & digitalWrite()

45

Pull-Up Resistor

46

INPUTs almost always need a Pull-Up or Pull-Down pinMode(INPUT_PULLUP) Turns on the Internal Pull-Up Resistor

http://www.baldengineer.com/tutorials/arduino-pull-ups/

I/O Exercise

• Objective: Understand Inputs and Outputs

• Exercise: “Fix” the random LED

47

analogRead()

48

Analog Signal

Convert Digital Value

10-bits, stored as 8-bits

Values 0 to 1023

Voltage

0v to 5v

5 volts

1023 Steps= 4.887mV per Step

Calling analogRead() on an Analog Pin, automatically converts to Input

analogWrite()

49

analogWrite() isn’t Analog (Except on the Due) Uno Pins: 3, 5, 6, 9, 10, 11

Actual AnalogPulse Width Modulation (PWM)

Analog Exercise

• Connect Pin 6 to Analog 0 Run this code

• Then, disconnect from Pin 6 While Running the Code

50Remember to open the Serial Monitor!

Analog Exercise

• Connect Pin 6 to Analog 0 Run this code

• Then, disconnect from Pin 6 While Running the Code

51Remember to open the Serial Monitor! A0, A1, A2..A5 are integers!

functions()

52

Functions Getting Data Back

Functions Getting Data Back

Tip: The Arduino IDE, doesn’t require “prototyping”

Functions Getting Data Back

Return Type

Argum

ents

“Ret

urn”

Function Nam

e

Functions Returning Nothing

56

Return Type

If the function doesn’t return anything, declare it as void

Function Exercise

• “Re-Write” the built-in Blink Example to use a Function

• Exercise: add a “argument” to adjust the delay time

57

Control Structures

58

if-statements

59

if-statements

60

if-statements

61

if-statements

62

control operators

63

== Equal to

>>=

Greater than (or equal)

<<=

Less Than (or equal)

!= Not Equal to

|| OR

&& AND

| Bitwise OR

& Bitwise AND

#1 if-statement mistake

64

#1 if-statement mistake

65

= != ==

for() loop example

66

for() loop

67

for() loop

68

Control Variable

for() loop

69

Control Variable

Condition

for() loop

70

Control Variable

Condition

Increment

Array and For Exercise

• Use an Array and two for-loops to read analog inputs, then display then

• Notice the difference in brackets between the two loops

71

while() loop

72

while() loop

73

Condition

while() loop

74

Condition

Loop conditions are same as “if conditions”

while() and Serial

• This program echoes whatever is on the serial buffer back out

75

76

More information?

Visit

baldengineer.com

Recommended