handouts - day1

Post on 27-Dec-2015

46 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

arduino programming

TRANSCRIPT

THINKLAB WORKSHOP

DAY 1 – Arduino Introduction and Fundamentals 1

Outline

INTRODUCTION

GETTING STARTED WITH ARDUINO

INTERFACING FUNDAMENTALS

SERIAL COMMUNICATIONS

2

INTRODUCTION

3

Microcontroller

“One-chip solution”

Highly integrated chip that includes all or most of

the parts needed for a controller:

CPU

RAM

ROM

I/O Ports

Timer

Interrupt Control

4

What is Arduino?

Open-source physical computing platform based on

a simple microcontroller board and a development

environment for writing software for the board

The Gizduino board is an Arduino clone based on

Arduino Diecimila, which is based on the

ATmega168 microprocessor

Arduino comes with its own open-source Integrated

Development Environment (IDE)

5

Specifications

Microprocessor: ATmega168

Operating voltage: 5V

Input voltage (recommended): 7-12V

Input voltage (limits): 6-20V

Digital I/O Pins: 14 (6 provides PWM)

Analog Input Pins: 6

DC Current per pin: 40mA

Flash Memory: 16kB (2kB used by bootloader)

6

Why Arduino?

Inexpensive

Cross-platform

Simple, clear programming environment

Open-source and extensible software

Open-source and extensible hardware

7

GETTING STARTED

8

Handling the Arduino

Never plug in the USB cable and the DC adapter at

the same time!

Prevent the male pins from touching each other, as

well as the leads, on the bottom of the board.

Best practice is to hold the boards on its

sides/edges.

Another best practice is to unpower the board when

adding or removing components or connecting or

disconnecting modules.

9

Connect Arduino to PC

Connect the Gizduino board to your computer using

the USB cable. The green power LED should turn on.

10

Launching Arduino IDE

Double click the Arduino application

Open the HelloWorld example found on your

Thinklab examples folder

11

Setting-up Arduino IDE

Tools > Board menu and select Gizduino (mini)

12

Setting-up Arduino IDE

Select the serial device of the Arduino board from

the Tools > Serial Port menu

Disconnect-reconnect the USB of the Arduino to find

out which port to pick, or use the Device Manager

13

Uploading the Program

Click “Upload” to check the code and subsequently

upload the sketch to your board

If upload is successful, the message “Done

Uploading” will appear in the status bar

14

Uploading the Program

Click the Serial Monitor button

15

Uploading the Program

Select 9600

You should see

Hello World! Printed

If it does,

congratulations!

You’ve gotten

Arduino up and

running! c:

16

What is a Sketch?

It is the unit of code that is uploaded to and run on

an Arduino board

Example: HelloWorld code uploaded earlier

17

INTERFACING FUNDAMENTALS

18

Bare Minimum

There are two special functions that are part of

every Arduino sketch:

setup()

A function that is called once, when the sketch starts

Setting pin modes or initializing libraries are placed here

loop()

A function that is called over and over and is the heart of

most sketches

19

Grouping symbols

( )

{ }

“ “

Arithmetic symbols

+

-

*

/

%

Punctuation symbols

;

,

.

Comparators

=

<

>

&&

||

Syntax and Symbols

20

Comments

Statements ignored by the Arduino when it runs the

sketch

Used to give information about the sketch, and for

people reading the code

Multi-line comment: /* <statement> */

Single-line comment: //

21

Variables

Place for storing a piece of data

Has a name, value, and type

int, char, float

Variable names may not start with a numerical

character

Example:

int iamVariable = 9;

char storeChars;

float saveDecimal;

22

Variables

You may now refer to this variable by its name, at

which point its value will be looked up and used

Example:

In a statement: Serial.println(105);

Declaring: int storeNum = 105;

We can instead write: Serial.println(storeNum);

23

Variables

Variable Scope

Global – recognized anywhere in the sketch

Local – recognized in a certain function only

Variable Qualifiers

CONST – make assigned variable value unchangeable

STATIC – ensure variable will only and always be

manipulated by a certain function call

VOLATILE – load variable directly from RAM to prevent

inaccuracy due to access beyond the control of the main

code

24

Variables

Types

INT

UNSIGNED INT

LONG

UNSIGNED LONG

FLOAT

CHAR

BYTE

BOOLEAN

25

Variables

Type-cast Conversion – on-the-fly conversion of

variables from its default type to another whilst not

changing its original declared type

Syntax:

variable_type(value)

Example

int(‘N’)

float(100)

26

Variables

Array – a collection of variables of the same type

accessed via a numerical index

It is a series of variable instances placed adjacent

in memory, and labeled sequentially with the index

myArray[0]

myArray[1]

myArray[2]

myArray[3]

myArray[4]

int myArray[5]

27

Control Structures

Series of program instructions that handle data and

execute commands, exhibiting control

DECISIVE – exhibits control by decision making

RECURSIVE – exhibits control by continuous

execution of commands

Control element manifests in the form of

CONDITIONS

28

Control Structures

Syntax:

if (condition) {

// do something here

}

else {

// do something here

}

If-Else Statement

It allows you to

make something

happen or not

depending on

whether a given

condition is true or

not.

29

Control Structures

void setup() {

Serial.begin(9600);

int test = 0;

if (test == 1) {

Serial.print(“Success”);

}

else {

Serial.print(“Fail”);

}

}

void loop() { } 30

Control Structures

Replace setup() code with this to show branching

Serial.print(“Score = “);

Serial.println(test);

if (test == 100) Serial.print(“Perfect! Magaling!”);

else if (test >= 90) Serial.print(“Congrats! So close~”);

else if (test >= 85) Serial.print(“Pwedeeee”);

else if (test >= 80) Serial.print(“More effort”);

else if (test >= 75) Serial.print(“Study harder!”);

else Serial.print(“Nako summer na yan tsk tsk…”); 31

Control Structures

Syntax:

switch (var) {

case val01:

// do something when var = val01

break;

case val02:

// do something when var = val02

break;

default:

// if no match, do default

}

Switch-Case Statement

Depends on whether

the value of a

specified variable

matches the values

specified in case

statements.

32

Control Structures

void setup() {

Serial.begin(9600);

int test = 0;

switch (test) {

case 1:

Serial.print(“Success”);

break;

case 0:

Serial.print(“Fail”);

break;

}

}

void loop() { }

33

Control Structures

While Loop

Continue program until a given condition is true

Syntax:

while (condition) {

// do something here until condition

becomes false

}

34

Control Structures

void setup() {

Serial.begin(9600);

int count = 0;

while (count <= 2) {

Serial.println(“Hello”);

count++;

}

}

void loop() { } 35

Control Structures

Do-While Loop

Same as While loop however this structure allows

the loop to run once before checking the condition

Syntax:

do {

// do something here until condition

becomes false

} while (condition) ;

36

Control Structures

void setup() {

Serial.begin(9600);

int count = 0;

do {

Serial.println(“Hello”);

count++;

} while (count <= 2);

}

void loop() { } 37

Control Structures

For Loop

Distinguished by a increment/decrement counter

for termination

Syntax:

for (start value; condition; operation) {

// do something until condition becomes

false

}

38

Control Structures

void setup() {

Serial.begin(9600);

int count = 0;

for (count = 0; count <=5; count++) {

Serial.println(“Hello”);

}

}

void loop() { }

39

Control Structures

break;

Used to terminate a loop regardless of the state

of the condition

Required in Switch-Case statements as an exit

command

40

Control Structures

continue;

Used to skip loop iterations, bypassing the

command(s) set

Note that the condition handle of the loop is still

checked when using this command

41

Logic

Conditional AND

Symbolized by &&

Used when all conditions need to be satisfied.

Conditional OR

Symbolized by ||

Used when either of the conditions need to be

satisfied.

42

Logic

Conditional NOT

Symbolized by !

Appends to other statements to invert its state

43

Logic

Serial.begin(9600);

int gupit = 0;

int ahit = 0;

if ((gupit == 1) && (ahit == 1))

Serial.println("Gwapong-gwapo! Pwede nang artista!");

else if ((gupit == 1) || (ahit == 1))

Serial.println("May kulang, pero pwede nang model");

else

Serial.println("Eeeew mukhang gusgusin!");

44

Math Commands

min(x, y) – returns the SMALLER of two numbers x

and y

max(x, y) – returns the LARGER of two numbers x

and y

constrain(x, A, B) – constrain a number x between a

lower value A and a higher value B

map(x, A, B, C, D) – re-map a value x, whose

ORIGINAL RANGE runs from A to B, to a NEW

RANGE running from C to D 45

Math Commands

abs(x) – returns the ABSOLUTE VALUE of a

number x

pow(x, y) – exponential function, returns x^y

sqrt(x) – returns the SQUARE ROOT of a

number x

46

Timing Controls

delay()

Halts the sequence of execution during the time

specified

Syntax:

delay(milliseconds);

milliseconds = the time value in milliseconds

47

Timing Controls

millis()

Gives the number of milliseconds since the

Arduino board began running the uploaded

sketch

Syntax:

variable = millis();

48

Random Numbers

random()

Generates pseudo-random numbers

Syntax:

random(min, max);

min = lower bound of random value, inclusive

(optional)

max = upper bound of random value, exclusive

49

Random Numbers

randomSeed()

Varies the sequence of numbers at every start-up

Syntax:

randomSeed(source);

50

Functions

Modular pieces of code that perform a defined

task outside of the main program

Very useful to reduce

repetitive lines of code

due to multiple execution

of commands

Has a name, type, and

value – same as variables?

51

Functions

52

SERIAL COMMUNICATIONS

53

Initializing Serial

Serial.begin()

Initialize serial communication

Comonly placed at the setup function of your sketch

Syntax:

Serial.begin(baud)

baud: serial baud rate value to be used

e.g. 300, 1200, 2400, 4800, 9600, 14400, 28800,

38400, 57600, 115200)

Ex. Serial.begin(9600);

54

Printing Lines using Serial

Serial.println()

Prints data to the Serial port as ASCII text

Syntax:

Serial.println(val)

val: the value to print, which can be any data type

Ex. Serial.println(“Hello World!”);

Displays Hello World! In Serial Monitor

55

void setup() {

Serial.begin(9600);

}

void loop() {

Serial.println(“Hello World!”);

delay(1000);

}

Sample Code

56

Available Data from Serial

Serial.available()

Checks if there is data present on the line and returns

the number of bytes to be read

Syntax:

Serial.available()

Ex. if (Serial.available() > 0) { …

57

Reading from Serial

Serial.read()

Returns the first byte of incoming serial data

Syntax:

variable = Serial.read();

variable can be either an int or a char

58

void setup() {

Serial.begin(9600);

}

void loop() {

if (Serial.available() > 0) {

ReceivedByte = Serial.read();

Serial.print(ReceivedByte);

delay(10);

}

}

Sample Code

59

SEE YOU IN DAY 2!

60

CONTACT DETAILS

Landline: (02) 861-1531

Email: secretariat@thinklab.ph

FB account: facebook.com/thinklab.secretariat

FB page: facebook.com/thinklab.ph

THANK YOU FOR

COMING!

61

top related