• Nu S-Au Găsit Rezultate

Table of Contents

N/A
N/A
Protected

Academic year: 2022

Share "Table of Contents"

Copied!
658
0
0

Text complet

(1)
(2)
(3)

Arduino Cookbook

(4)
(5)

Arduino Cookbook

0LFKDHO0DUJROLV

Beijing Cambridge Farnham Köln Sebastopol Tokyo

(6)

Arduino Cookbook E\0LFKDHO0DUJROLV

&RS\ULJKW‹0LFKDHO0DUJROLVDQG1LFKRODV:HOGLQ$OOULJKWVUHVHUYHG 3ULQWHGLQWKH8QLWHG6WDWHVRI$PHULFD

3XEOLVKHGE\2¦5HLOO\0HGLD,QF*UDYHQVWHLQ+LJKZD\1RUWK6HEDVWRSRO&$

2¦5HLOO\ERRNVPD\EHSXUFKDVHGIRUHGXFDWLRQDOEXVLQHVVRUVDOHVSURPRWLRQDOXVH2QOLQHHGLWLRQV DUHDOVRDYDLODEOHIRUPRVWWLWOHVKWWSP\VDIDULERRNVRQOLQHFRP)RUPRUHLQIRUPDWLRQFRQWDFWRXU FRUSRUDWHLQVWLWXWLRQDOVDOHVGHSDUWPHQWRUFRUSRUDWH#RUHLOO\FRP

Editors: 6LPRQ6W/DXUHQWDQG%ULDQ-HSVRQ

Production Editor: 7HUHVD(OVH\

Copyeditor: $XGUH\'R\OH

Proofreader: 7HUHVD(OVH\

Indexer: /XFLH+DVNLQV

Cover Designer: .DUHQ0RQWJRPHU\

Interior Designer: 'DYLG)XWDWR

Illustrator: 5REHUW5RPDQR

Printing History:

0DUFK )LUVW(GLWLRQ

1XWVKHOO+DQGERRNWKH1XWVKHOO+DQGERRNORJRDQGWKH2¦5HLOO\ORJRDUHUHJLVWHUHGWUDGHPDUNVRI 2¦5HLOO\0HGLD,QF$UGXLQR&RRNERRNWKHLPDJHRIDWR\UDEELWDQGUHODWHGWUDGHGUHVVDUHWUDGHPDUNV RI2¦5HLOO\0HGLD,QF

0DQ\RIWKHGHVLJQDWLRQVXVHGE\PDQXIDFWXUHUVDQGVHOOHUVWRGLVWLQJXLVKWKHLUSURGXFWVDUHFODLPHGDV WUDGHPDUNV:KHUHWKRVHGHVLJQDWLRQVDSSHDULQWKLVERRNDQG2¦5HLOO\0HGLD,QFZDVDZDUHRID WUDGHPDUNFODLPWKHGHVLJQDWLRQVKDYHEHHQSULQWHGLQFDSVRULQLWLDOFDSV

:KLOHHYHU\SUHFDXWLRQKDVEHHQWDNHQLQWKHSUHSDUDWLRQRIWKLVERRNWKHSXEOLVKHUDQGDXWKRUVDVVXPH QRUHVSRQVLELOLW\IRUHUURUVRURPLVVLRQVRUIRUGDPDJHVUHVXOWLQJIURPWKHXVHRIWKHLQIRUPDWLRQFRQ WDLQHGKHUHLQ

,6%1

(7)

Table of Contents

Preface . . . xiii 1. Getting Started . . . 1

,QVWDOOLQJWKH,QWHJUDWHG'HYHORSPHQW(QYLURQPHQW,'(

6HWWLQJ8SWKH$UGXLQR%RDUG

8VLQJWKH,QWHJUDWHG'HYHORSPHQW(QYLURQPHQW,'(WR3UHSDUH

DQ$UGXLQR6NHWFK

8SORDGLQJDQG5XQQLQJWKH%OLQN6NHWFK

&UHDWLQJDQG6DYLQJD6NHWFK

8VLQJ$UGXLQR

2. Making the Sketch Do Your Bidding . . . 19

6WUXFWXULQJDQ$UGXLQR3URJUDP

8VLQJ6LPSOH3ULPLWLYH7\SHV9DULDEOHV

8VLQJ)ORDWLQJ3RLQW1XPEHUV

:RUNLQJZLWK*URXSVRI9DOXHV

8VLQJ$UGXLQR6WULQJ)XQFWLRQDOLW\

8VLQJ&&KDUDFWHU6WULQJV

6SOLWWLQJ&RPPD6HSDUDWHG7H[WLQWR*URXSV

&RQYHUWLQJD1XPEHUWRD6WULQJ

&RQYHUWLQJD6WULQJWRD1XPEHU

6WUXFWXULQJ<RXU&RGHLQWR)XQFWLRQDO%ORFNV

5HWXUQLQJ0RUH7KDQ2QH9DOXHIURPD)XQFWLRQ

7DNLQJ$FWLRQV%DVHGRQ&RQGLWLRQV

5HSHDWLQJD6HTXHQFHRI6WDWHPHQWV

5HSHDWLQJ6WDWHPHQWVZLWKD&RXQWHU

%UHDNLQJ2XWRI/RRSV

7DNLQJD9DULHW\RI$FWLRQV%DVHGRQD6LQJOH9DULDEOH &RPSDULQJ&KDUDFWHUDQG1XPHULF9DOXHV

&RPSDULQJ6WULQJV

3HUIRUPLQJ/RJLFDO&RPSDULVRQV

v

(8)

3HUIRUPLQJ%LWZLVH2SHUDWLRQV

&RPELQLQJ2SHUDWLRQVDQG$VVLJQPHQW

3. Using Mathematical Operators . . . 61

$GGLQJ6XEWUDFWLQJ0XOWLSO\LQJDQG'LYLGLQJ

,QFUHPHQWLQJDQG'HFUHPHQWLQJ9DOXHV

)LQGLQJWKH5HPDLQGHU$IWHU'LYLGLQJ7ZR9DOXHV

'HWHUPLQLQJWKH$EVROXWH9DOXH

&RQVWUDLQLQJD1XPEHUWRD5DQJHRI9DOXHV )LQGLQJWKH0LQLPXPRU0D[LPXPRI6RPH9DOXHV

5DLVLQJD1XPEHUWRD3RZHU

7DNLQJWKH6TXDUH5RRW

5RXQGLQJ)ORDWLQJ3RLQW1XPEHUV8SDQG'RZQ

8VLQJ7ULJRQRPHWULF)XQFWLRQV

*HQHUDWLQJ5DQGRP1XPEHUV

6HWWLQJDQG5HDGLQJ%LWV

6KLIWLQJ%LWV

([WUDFWLQJ+LJKDQG/RZ%\WHVLQDQLQWRUORQJ

)RUPLQJDQLQWRUORQJIURP+LJKDQG/RZ%\WHV

4. Serial Communications . . . 81

6HQGLQJ'HEXJ,QIRUPDWLRQIURP$UGXLQRWR<RXU&RPSXWHU 6HQGLQJ)RUPDWWHG7H[WDQG1XPHULF'DWDIURP$UGXLQR

5HFHLYLQJ6HULDO'DWDLQ$UGXLQR

6HQGLQJ0XOWLSOH7H[W)LHOGVIURP$UGXLQRLQD6LQJOH0HVVDJH 5HFHLYLQJ0XOWLSOH7H[W)LHOGVLQD6LQJOH0HVVDJHLQ$UGXLQR

6HQGLQJ%LQDU\'DWDIURP$UGXLQR

5HFHLYLQJ%LQDU\'DWDIURP$UGXLQRRQD&RPSXWHU 6HQGLQJ%LQDU\9DOXHVIURP3URFHVVLQJWR$UGXLQR

6HQGLQJWKH9DOXHRI0XOWLSOH$UGXLQR3LQV

+RZWR0RYHWKH0RXVH&XUVRURQD3&RU0DF

&RQWUROOLQJ*RRJOH(DUWK8VLQJ$UGXLQR

/RJJLQJ$UGXLQR'DWDWRD)LOHRQ<RXU&RPSXWHU 6HQGLQJ'DWDWR7ZR6HULDO'HYLFHVDWWKH6DPH7LPH 5HFHLYLQJ6HULDO'DWDIURP7ZR'HYLFHVDWWKH6DPH7LPH 6HWWLQJ8S3URFHVVLQJRQ<RXU&RPSXWHUWR6HQG

DQG5HFHLYH6HULDO'DWD

5. Simple Digital and Analog Input . . . 133

8VLQJD6ZLWFK

8VLQJD6ZLWFK:LWKRXW([WHUQDO5HVLVWRUV

5HOLDEO\'HWHFWLQJWKH&ORVLQJRID6ZLWFK

'HWHUPLQLQJ+RZ/RQJD6ZLWFK,V3UHVVHG

(9)

5HDGLQJD.H\SDG

5HDGLQJ$QDORJ9DOXHV

&KDQJLQJWKH5DQJHRI9DOXHV

5HDGLQJ0RUH7KDQ6L[$QDORJ,QSXWV

'LVSOD\LQJ9ROWDJHV8SWR9

5HVSRQGLQJWR&KDQJHVLQ9ROWDJH

0HDVXULQJ9ROWDJHV0RUH7KDQ99ROWDJH'LYLGHUV

6. Getting Input from Sensors . . . 165

'HWHFWLQJ0RYHPHQW

'HWHFWLQJ/LJKW

'HWHFWLQJ0RWLRQ,QWHJUDWLQJ3DVVLYH,QIUDUHG'HWHFWRUV

0HDVXULQJ'LVWDQFH

0HDVXULQJ'LVWDQFH$FFXUDWHO\

'HWHFWLQJ9LEUDWLRQ

'HWHFWLQJ6RXQG

0HDVXULQJ7HPSHUDWXUH

5HDGLQJ5),'7DJV

7UDFNLQJWKH0RYHPHQWRID'LDO

7UDFNLQJWKH0RYHPHQWRI0RUH7KDQ2QH5RWDU\(QFRGHU 7UDFNLQJWKH0RYHPHQWRID'LDOLQD%XV\6NHWFK

8VLQJD0RXVH

*HWWLQJ/RFDWLRQIURPD*36

'HWHFWLQJ5RWDWLRQ8VLQJD*\URVFRSH

'HWHFWLQJ'LUHFWLRQ

*HWWLQJ,QSXWIURPD*DPH&RQWURO3DG3OD\6WDWLRQ

5HDGLQJ$FFHOHUDWLRQ

7. Visual Output . . . 217

&RQQHFWLQJDQG8VLQJ/('V

$GMXVWLQJWKH%ULJKWQHVVRIDQ/('

'ULYLQJ+LJK3RZHU/('V

$GMXVWLQJWKH&RORURIDQ/('

6HTXHQFLQJ0XOWLSOH/('V&UHDWLQJD%DU*UDSK 6HTXHQFLQJ0XOWLSOH/('V0DNLQJD&KDVH6HTXHQFH.QLJKW

5LGHU

&RQWUROOLQJDQ/('0DWUL[8VLQJ0XOWLSOH[LQJ

'LVSOD\LQJ,PDJHVRQDQ/('0DWUL[

&RQWUROOLQJD0DWUL[RI/('V&KDUOLHSOH[LQJ

'ULYLQJD6HJPHQW/(''LVSOD\

'ULYLQJ0XOWLGLJLW6HJPHQW/(''LVSOD\V0XOWLSOH[LQJ 'ULYLQJ0XOWLGLJLW6HJPHQW/(''LVSOD\V8VLQJ0$;6KLIW

5HJLVWHUV

Table of Contents | vii

(10)

&RQWUROOLQJDQ$UUD\RI/('VE\8VLQJ0$;[[6KLIW5HJLVWHUV ,QFUHDVLQJWKH1XPEHURI$QDORJ2XWSXWV8VLQJ3:0([WHQGHU

&KLSV7/&

8VLQJDQ$QDORJ3DQHO0HWHU$VD'LVSOD\

8. Physical Output . . . 261

&RQWUROOLQJWKH3RVLWLRQRID6HUYR

&RQWUROOLQJ2QHRU7ZR6HUYRVZLWKD3RWHQWLRPHWHU

RU6HQVRU

&RQWUROOLQJWKH6SHHGRI&RQWLQXRXV5RWDWLRQ6HUYRV &RQWUROOLQJ6HUYRVIURPWKH6HULDO3RUW 'ULYLQJD%UXVKOHVV0RWRU8VLQJD+REE\6SHHG&RQWUROOHU

&RQWUROOLQJ6ROHQRLGVDQG5HOD\V

0DNLQJDQ2EMHFW9LEUDWH

'ULYLQJD%UXVKHG0RWRU8VLQJD7UDQVLVWRU

&RQWUROOLQJWKH'LUHFWLRQRID%UXVKHG0RWRU

ZLWKDQ+%ULGJH

&RQWUROOLQJWKH'LUHFWLRQDQG6SHHGRID%UXVKHG0RWRUZLWKDQ

+%ULGJH

8VLQJ6HQVRUVWR&RQWUROWKH'LUHFWLRQDQG6SHHGRI%UXVKHG

0RWRUV/+%ULGJH

'ULYLQJD%LSRODU6WHSSHU0RWRU

'ULYLQJD%LSRODU6WHSSHU0RWRU8VLQJWKH(DV\'ULYHU%RDUG

'ULYLQJD8QLSRODU6WHSSHU0RWRU8/1$

9. Audio Output . . . 297

3OD\LQJ7RQHV

3OD\LQJD6LPSOH0HORG\

*HQHUDWLQJ0RUH7KDQ2QH6LPXOWDQHRXV7RQH

*HQHUDWLQJ$XGLR7RQHVDQG)DGLQJDQ/('

3OD\LQJD:$9)LOH

&RQWUROOLQJ0,',

0DNLQJDQ$XGLR6\QWKHVL]HU

10. Remotely Controlling External Devices . . . 317

5HVSRQGLQJWRDQ,QIUDUHG5HPRWH&RQWURO 'HFRGLQJ,QIUDUHG5HPRWH&RQWURO6LJQDOV

,PLWDWLQJ5HPRWH&RQWURO6LJQDOV

&RQWUROOLQJD'LJLWDO&DPHUD

&RQWUROOLQJ$&'HYLFHVE\+DFNLQJD5HPRWH&RQWUROOHG6ZLWFK

11. Using Displays . . . 333

&RQQHFWLQJDQG8VLQJD7H[W/&''LVSOD\

(11)

)RUPDWWLQJ7H[W

7XUQLQJWKH&XUVRUDQG'LVSOD\2QRU2II

6FUROOLQJ7H[W

'LVSOD\LQJ6SHFLDO6\PEROV

&UHDWLQJ&XVWRP&KDUDFWHUV

'LVSOD\LQJ6\PEROV/DUJHU7KDQD6LQJOH&KDUDFWHU 'LVSOD\LQJ3L[HOV6PDOOHU7KDQD6LQJOH&KDUDFWHU &RQQHFWLQJDQG8VLQJD*UDSKLFDO/&''LVSOD\

&UHDWLQJ%LWPDSVIRU8VHZLWKD*UDSKLFDO'LVSOD\

'LVSOD\LQJ7H[WRQD79

12. Using Time and Dates . . . 367

&UHDWLQJ'HOD\V

8VLQJPLOOLVWR'HWHUPLQH'XUDWLRQ

0RUH3UHFLVHO\0HDVXULQJWKH'XUDWLRQRID3XOVH

8VLQJ$UGXLQR$VD&ORFN

&UHDWLQJDQ$ODUPWR3HULRGLFDOO\&DOOD)XQFWLRQ

8VLQJD5HDO7LPH&ORFN

13. Communicating Using I2C and SPI . . . 389

&RQWUROOLQJDQ5*%/('8VLQJWKH%OLQN00RGXOH

8VLQJWKH:LL1XQFKXFN$FFHOHURPHWHU

,QWHUIDFLQJWRDQ([WHUQDO5HDO7LPH&ORFN

$GGLQJ([WHUQDO((35200HPRU\

5HDGLQJ7HPSHUDWXUHZLWKD'LJLWDO7KHUPRPHWHU 'ULYLQJ)RXU6HJPHQW/('V8VLQJ2QO\7ZR:LUHV

,QWHJUDWLQJDQ,&3RUW([SDQGHU

'ULYLQJ0XOWLGLJLW6HJPHQW'LVSOD\V8VLQJ63, &RPPXQLFDWLQJ%HWZHHQ7ZRRU0RUH$UGXLQR%RDUGV

14. Wireless Communication . . . 425

6HQGLQJ0HVVDJHV8VLQJ/RZ&RVW:LUHOHVV0RGXOHV &RQQHFWLQJ$UGXLQRWRD=LJ%HHRU1HWZRUN

6HQGLQJD0HVVDJHWRD3DUWLFXODU;%HH

6HQGLQJ6HQVRU'DWD%HWZHHQ;%HHV

$FWLYDWLQJDQ$FWXDWRU&RQQHFWHGWRDQ;%HH

15. Ethernet and Networking . . . 451

6HWWLQJ8SWKH(WKHUQHW6KLHOG

2EWDLQLQJ<RXU,3$GGUHVV$XWRPDWLFDOO\

5HVROYLQJ+RVWQDPHVWR,3$GGUHVVHV'16

5HTXHVWLQJ'DWDIURPD:HE6HUYHU

5HTXHVWLQJ'DWDIURPD:HE6HUYHU8VLQJ;0/

Table of Contents | ix

(12)

6HWWLQJ8SDQ$UGXLQRWR%HD:HE6HUYHU

+DQGOLQJ,QFRPLQJ:HE5HTXHVWV

+DQGOLQJ,QFRPLQJ5HTXHVWVIRU6SHFLILF3DJHV

8VLQJ+70/WR)RUPDW:HE6HUYHU5HVSRQVHV

6HUYLQJ:HE3DJHV8VLQJ)RUPV3267

6HUYLQJ:HE3DJHV&RQWDLQLQJ/DUJH$PRXQWVRI'DWD

6HQGLQJ7ZLWWHU0HVVDJHV

6HQGLQJDQG5HFHLYLQJ6LPSOH0HVVDJHV8'3

*HWWLQJWKH7LPHIURPDQ,QWHUQHW7LPH6HUYHU

0RQLWRULQJ3DFKXEH)HHGV

6HQGLQJ,QIRUPDWLRQWR3DFKXEH

16. Using, Modifying, and Creating Libraries . . . 515

8VLQJWKH%XLOWLQ/LEUDULHV

,QVWDOOLQJ7KLUG3DUW\/LEUDULHV

0RGLI\LQJD/LEUDU\

&UHDWLQJ<RXU2ZQ/LEUDU\

&UHDWLQJD/LEUDU\7KDW8VHV2WKHU/LEUDULHV

17. Advanced Coding and Memory Handling . . . 531

8QGHUVWDQGLQJWKH$UGXLQR%XLOG3URFHVV

'HWHUPLQLQJWKH$PRXQWRI)UHHDQG8VHG5$0

6WRULQJDQG5HWULHYLQJ1XPHULF9DOXHVLQ3URJUDP0HPRU\

6WRULQJDQG5HWULHYLQJ6WULQJVLQ3URJUDP0HPRU\

8VLQJGHILQHDQGFRQVW,QVWHDGRI,QWHJHUV

8VLQJ&RQGLWLRQDO&RPSLODWLRQV

18. Using the Controller Chip Hardware . . . 547

6WRULQJ'DWDLQ3HUPDQHQW((35200HPRU\

8VLQJ+DUGZDUH,QWHUUXSWV

6HWWLQJ7LPHU'XUDWLRQ

6HWWLQJ7LPHU3XOVH:LGWKDQG'XUDWLRQ

&UHDWLQJD3XOVH*HQHUDWRU

&KDQJLQJD7LPHU¦V3:0)UHTXHQF\

&RXQWLQJ3XOVHV

0HDVXULQJ3XOVHV0RUH$FFXUDWHO\

0HDVXULQJ$QDORJ9DOXHV4XLFNO\

5HGXFLQJ%DWWHU\'UDLQ

6HWWLQJ'LJLWDO3LQV4XLFNO\

A. Electronic Components . . . 579

B. Using Schematic Diagrams and Data Sheets . . . 585

(13)

C. Building and Connecting the Circuit . . . 591

D. Tips on Troubleshooting Software Problems . . . 595

E. Tips on Troubleshooting Hardware Problems . . . 599

F. Digital and Analog Pins . . . 603

G. ASCII and Extended Character Sets . . . 607

Index . . . 611

Table of Contents | xi

(14)
(15)

Preface

7KLVERRNZDVZULWWHQE\0LFKDHO0DUJROLVZLWK1LFN:HOGLQWRKHOS\RXH[SORUHWKH DPD]LQJWKLQJV\RXFDQGRZLWK$UGXLQR

$UGXLQRLVDIDPLO\RIPLFURFRQWUROOHUVWLQ\FRPSXWHUVDQGDVRIWZDUHFUHDWLRQHQYL URQPHQWWKDWPDNHVLWHDV\IRU\RXWRFUHDWHSURJUDPVFDOOHGVNHWFKHVWKDWFDQLQWHUDFW ZLWKWKHSK\VLFDOZRUOG7KLQJV\RXPDNHZLWK$UGXLQRFDQVHQVHDQGUHVSRQGWR WRXFKVRXQGSRVLWLRQKHDWDQGOLJKW7KLVW\SHRIWHFKQRORJ\RIWHQUHIHUUHGWRDV SK\VLFDOFRPSXWLQJLVXVHGLQDOONLQGVRIWKLQJVIURPWKHL3KRQHWRDXWRPRELOHHOHF WURQLFVV\VWHPV$UGXLQRPDNHVLWSRVVLEOHIRUDQ\RQH¢HYHQSHRSOHZLWKQRSURJUDP PLQJRUHOHFWURQLFVH[SHULHQFH¢WRXVHWKLVULFKDQGFRPSOH[WHFKQRORJ\

Who This Book Is For

8QOLNHLQPRVWWHFKQLFDOFRRNERRNVH[SHULHQFHZLWKVRIWZDUHDQGKDUGZDUHLVQRW DVVXPHG7KLVERRNLVDLPHGDWDEURDGUDQJHRIUHDGHUVLQWHUHVWHGLQXVLQJFRPSXWHU WHFKQRORJ\WRLQWHUDFWZLWKWKHHQYLURQPHQW,WLVIRUSHRSOHZKRZDQWWRTXLFNO\ILQG WKHVROXWLRQWRKDUGZDUHDQGVRIWZDUHSUREOHPV

<RXPD\KDYHQRSURJUDPPLQJH[SHULHQFH¢SHUKDSV\RXKDYHDJUHDWLGHDIRUDQLQ WHUDFWLYHSURMHFWEXWGRQ¦WKDYHWKHVNLOOVWRGHYHORSLW7KLVERRNZLOOKHOS\RXOHDUQ ZKDW\RXQHHGWRNQRZWRZULWHFRGHWKDWZRUNVXVLQJH[DPSOHVWKDWFRYHUWKHNLQGV RIWDVNV\RXZDQWWRSHUIRUP

,I\RXKDYHVRPHSURJUDPPLQJH[SHULHQFHEXWDUHQHZWR$UGXLQRWKHERRNZLOOKHOS

\RXEHFRPHSURGXFWLYHTXLFNO\E\GHPRQVWUDWLQJKRZWRLPSOHPHQWVSHFLILF$UGXLQR FDSDELOLWLHVIRU\RXUSURMHFW

3HRSOHDOUHDG\XVLQJ$UGXLQRVKRXOGILQGWKHFRQWHQWKHOSIXOIRUTXLFNO\OHDUQLQJQHZ WHFKQLTXHVZKLFKDUHH[SODLQHGXVLQJSUDFWLFDOH[DPSOHV7KLVZLOOKHOS\RXWRHPEDUN RQPRUHFRPSOH[SURMHFWVE\VKRZLQJKRZWRVROYHSUREOHPVDQGXVHFDSDELOLWLHVWKDW PD\EHQHZWR\RX

([SHULHQFHG&&SURJUDPPHUVZLOOILQGH[DPSOHVRIKRZWRXVHWKHORZOHYHO$95 UHVRXUFHV LQWHUUXSWV WLPHUV ,& (WKHUQHW HWF WR EXLOG DSSOLFDWLRQV XVLQJ WKH

$UGXLQRHQYLURQPHQW

xiii

(16)

How This Book Is Organized

7KHERRNFRQWDLQVLQIRUPDWLRQWKDWFRYHUVWKHEURDGUDQJHRIWKH$UGXLQR¦VFDSDELOL WLHVIURPEDVLFFRQFHSWVDQGFRPPRQWDVNVWRDGYDQFHGWHFKQRORJ\(DFKWHFKQLTXH LVH[SODLQHGLQDUHFLSHWKDWVKRZV\RXKRZWRLPSOHPHQWDVSHFLILFFDSDELOLW\<RXGR QRWQHHGWRUHDGWKHFRQWHQWLQVHTXHQFH

&KDSWHU*HWWLQJ6WDUWHGLQWURGXFHVWKH$UGXLQRHQYLURQPHQWDQGSURYLGHVKHOSRQ JHWWLQJWKH$UGXLQRGHYHORSPHQWHQYLURQPHQWDQGKDUGZDUHLQVWDOOHGDQGZRUNLQJ 7KH QH[W FRXSOH RI FKDSWHUV LQWURGXFH $UGXLQR VRIWZDUH GHYHORSPHQW&KDSWHU 0DNLQJWKH6NHWFK'R<RXU%LGGLQJFRYHUVHVVHQWLDOVRIWZDUHFRQFHSWVDQGWDVNVDQG

&KDSWHU8VLQJ0DWKHPDWLFDO2SHUDWRUVVKRZVKRZWRPDNHXVHRIWKHPRVWFRPPRQ PDWKHPDWLFDOIXQFWLRQV

&KDSWHU6HULDO&RPPXQLFDWLRQVGHVFULEHVKRZWRJHW$UGXLQRWRFRQQHFWDQGFRP PXQLFDWHZLWK\RXUFRPSXWHUDQGRWKHUGHYLFHV6HULDOLVWKHPRVWFRPPRQPHWKRG IRU $UGXLQR LQSXW DQG RXWSXW DQG WKLV FDSDELOLW\ LV XVHG LQ PDQ\ RI WKH UHFLSHV WKURXJKRXWWKHERRN

&KDSWHU6LPSOH'LJLWDODQG$QDORJ,QSXWLQWURGXFHVDUDQJHRIEDVLFWHFKQLTXHVIRU UHDGLQJGLJLWDODQGDQDORJVLJQDOV&KDSWHU*HWWLQJ,QSXWIURP6HQVRUVEXLOGVRQWKLV ZLWKUHFLSHVWKDWH[SODLQKRZWRXVHGHYLFHVWKDWHQDEOH$UGXLQRWRVHQVHWRXFKVRXQG SRVLWLRQKHDWDQGOLJKW

&KDSWHU9LVXDO2XWSXWFRYHUVFRQWUROOLQJOLJKW5HFLSHVFRYHUVZLWFKLQJRQRQHRU PDQ\/('VDQGFRQWUROOLQJEULJKWQHVVDQGFRORU7KLVFKDSWHUH[SODLQVKRZ\RXFDQ GULYHEDUJUDSKVDQGQXPHULF/('GLVSOD\VDVZHOODVFUHDWHSDWWHUQVDQGDQLPDWLRQV ZLWK/('DUUD\V,QDGGLWLRQWKHFKDSWHUSURYLGHVDJHQHUDOLQWURGXFWLRQWRGLJLWDODQG DQDORJRXWSXWIRUWKRVHZKRDUHQHZWRWKLV

&KDSWHU3K\VLFDO2XWSXWH[SODLQVKRZ\RXFDQPDNHWKLQJVPRYHE\FRQWUROOLQJ PRWRUVZLWK$UGXLQR$ZLGHUDQJHRIPRWRUW\SHVDUHFRYHUHGVROHQRLGVVHUYRPRWRUV '&PRWRUVDQGVWHSSHUPRWRUV

&KDSWHU$XGLR2XWSXWVKRZVKRZWRJHQHUDWHVRXQGZLWK$UGXLQRWKURXJKDQRXW SXWGHYLFHVXFKDVDVSHDNHU,WFRYHUVSOD\LQJVLPSOHWRQHVDQGPHORGLHVDQGSOD\LQJ :$9ILOHVDQG0,',

&KDSWHU5HPRWHO\&RQWUROOLQJ([WHUQDO'HYLFHVGHVFULEHVWHFKQLTXHVWKDWFDQEH XVHGWRLQWHUDFWZLWKDOPRVWDQ\GHYLFHWKDWXVHVVRPHIRUPRIUHPRWHFRQWUROOHULQ FOXGLQJ79DXGLRHTXLSPHQWFDPHUDVJDUDJHGRRUVDSSOLDQFHVDQGWR\V,WEXLOGV RQ WHFKQLTXHV XVHG LQ SUHYLRXV FKDSWHUV IRU FRQQHFWLQJ $UGXLQR WR GHYLFHV DQG PRGXOHV

&KDSWHU8VLQJ'LVSOD\VFRYHUVLQWHUIDFLQJWH[WDQGJUDSKLFDO/&'GLVSOD\V7KH FKDSWHUVKRZVKRZ\RXFDQFRQQHFWWKHVHGHYLFHVWRGLVSOD\WH[WVFUROORUKLJKOLJKW ZRUGVDQGFUHDWHVSHFLDOV\PEROVDQGFKDUDFWHUV

(17)

&KDSWHU8VLQJ7LPHDQG'DWHVFRYHUVEXLOWLQ$UGXLQRWLPHUHODWHGIXQFWLRQVDQG LQWURGXFHVPDQ\DGGLWLRQDOWHFKQLTXHVIRUKDQGOLQJWLPHGHOD\VWLPHPHDVXUHPHQW DQGUHDOZRUOGWLPHVDQGGDWHV

&KDSWHU &RPPXQLFDWLQJ 8VLQJ ,& DQG 63, FRYHUV WKH ,QWHU,QWHJUDWHG &LUFXLW ,&DQG6HULDO3HULSKHUDO,QWHUIDFH63,VWDQGDUGV7KHVHVWDQGDUGVSURYLGHVLPSOH ZD\VIRUGLJLWDOLQIRUPDWLRQWREHWUDQVIHUUHGEHWZHHQVHQVRUVDQG$UGXLQR7KLVFKDS WHUVKRZVKRZWRXVH,&DQG63,WRFRQQHFWWRFRPPRQGHYLFHV,WDOVRVKRZVKRZWR FRQQHFWWZRRUPRUH$UGXLQRERDUGVXVLQJ,&IRUPXOWLERDUGDSSOLFDWLRQV

&KDSWHU:LUHOHVV&RPPXQLFDWLRQFRYHUVZLUHOHVVFRPPXQLFDWLRQZLWK;%HH7KLV FKDSWHUSURYLGHVH[DPSOHVUDQJLQJIURPVLPSOHZLUHOHVVVHULDOSRUWUHSODFHPHQWVWR PHVKQHWZRUNVFRQQHFWLQJPXOWLSOHERDUGVWRPXOWLSOHVHQVRUV

&KDSWHU(WKHUQHWDQG1HWZRUNLQJGHVFULEHVWKHPDQ\ZD\V\RXFDQXVH$UGXLQR ZLWKWKH,QWHUQHW,WKDVH[DPSOHVWKDWGHPRQVWUDWHKRZWREXLOGDQGXVHZHEFOLHQWV DQGVHUYHUVDQGVKRZVKRZWRXVHWKHPRVWFRPPRQ,QWHUQHWFRPPXQLFDWLRQSURWRFROV ZLWK$UGXLQR

$UGXLQRVRIWZDUHOLEUDULHVDUHDVWDQGDUGZD\RIDGGLQJIXQFWLRQDOLW\WRWKH$UGXLQR HQYLURQPHQW&KDSWHU8VLQJ0RGLI\LQJDQG&UHDWLQJ/LEUDULHVH[SODLQVKRZWR XVHDQGPRGLI\VRIWZDUHOLEUDULHV,WDOVRSURYLGHVJXLGDQFHRQKRZWRFUHDWH\RXURZQ OLEUDULHV

&KDSWHU$GYDQFHG&RGLQJDQG0HPRU\+DQGOLQJFRYHUVDGYDQFHGSURJUDPPLQJ WHFKQLTXHVDQGWKHWRSLFVKHUHDUHPRUHWHFKQLFDOWKDQWKHRWKHUUHFLSHVLQWKLVERRN EHFDXVHWKH\FRYHUWKLQJVWKDWDUHXVXDOO\FRQFHDOHGE\WKHIULHQGO\$UGXLQRZUDSSHU 7KHWHFKQLTXHVLQWKLVFKDSWHUFDQEHXVHGWRPDNHDVNHWFKPRUHHIILFLHQW¢WKH\FDQ KHOSLPSURYHSHUIRUPDQFHDQGUHGXFHWKHFRGHVL]HRI\RXUVNHWFKHV

&KDSWHU8VLQJWKH&RQWUROOHU&KLS+DUGZDUHVKRZVKRZWRDFFHVVDQGXVHKDUG ZDUHIXQFWLRQVWKDWDUHQRWIXOO\H[SRVHGWKURXJKWKHGRFXPHQWHG$UGXLQRODQJXDJH ,WFRYHUVORZOHYHOXVDJHRIWKHKDUGZDUHLQSXWRXWSXWUHJLVWHUVWLPHUVDQGLQWHUUXSWV

$SSHQGL[$(OHFWURQLF&RPSRQHQWVSURYLGHVDQRYHUYLHZRIWKHFRPSRQHQWVXVHG WKURXJKRXWWKHERRN

$SSHQGL[%8VLQJ6FKHPDWLF'LDJUDPVDQG'DWD6KHHWVH[SODLQVKRZWRXVHVFKHPDWLF GLDJUDPVDQGGDWDVKHHWV

$SSHQGL[&%XLOGLQJDQG&RQQHFWLQJWKH&LUFXLWSURYLGHVDEULHILQWURGXFWLRQWRXVLQJ DEUHDGERDUGFRQQHFWLQJDQGXVLQJH[WHUQDOSRZHUVXSSOLHVDQGEDWWHULHVDQGXVLQJ FDSDFLWRUVIRUGHFRXSOLQJ

$SSHQGL['7LSVRQ7URXEOHVKRRWLQJ6RIWZDUH3UREOHPVSURYLGHVWLSVRQIL[LQJFRP SLOHDQGUXQWLPHSUREOHPV

$SSHQGL[(7LSVRQ7URXEOHVKRRWLQJ+DUGZDUH3UREOHPVFRYHUVSUREOHPVZLWKHOHF WURQLFFLUFXLWV

Preface | xv

(18)

$SSHQGL[)'LJLWDODQG$QDORJ3LQVSURYLGHVWDEOHVLQGLFDWLQJIXQFWLRQDOLW\SURYLGHG E\WKHSLQVRQVWDQGDUG$UGXLQRERDUGV

$SSHQGL[ *$6&,, DQG ([WHQGHG &KDUDFWHU 6HWV SURYLGHV WDEOHV VKRZLQJ $6&,, FKDUDFWHUV

What Was Left Out

7KHUHLVQ¦WURRPLQWKLVERRNWRFRYHUHOHFWURQLFVWKHRU\DQGSUDFWLFHDOWKRXJKJXLG DQFHLVSURYLGHGIRUEXLOGLQJWKHFLUFXLWVXVHGLQWKHUHFLSHV)RUPRUHGHWDLOUHDGHUV PD\ZDQWWRUHIHUWRPDWHULDOWKDWLVZLGHO\DYDLODEOHRQWKH,QWHUQHWRUWRERRNVVXFK DVWKHIROORZLQJ

‡ 0DNH(OHFWURQLFVE\&KDUOHV3ODWW2¦5HLOO\

‡ *HWWLQJ6WDUWHGLQ(OHFWURQLFVE\)RUUHVW0LPV0DVWHU3XEOLVKLQJ

‡ 3K\VLFDO&RPSXWLQJE\7RP,JRH&HQJDJH

‡ 3UDFWLFDO(OHFWURQLFVIRU,QYHQWRUVE\3DXO6FKHU]0F*UDZ+LOO

7KLVFRRNERRNH[SODLQVKRZWRZULWHFRGHWRDFFRPSOLVKVSHFLILFWDVNVEXWLWLVQRWDQ LQWURGXFWLRQWRSURJUDPPLQJ5HOHYDQWSURJUDPPLQJFRQFHSWVDUHEULHIO\H[SODLQHG EXWWKHUHLVLQVXIILFLHQWURRPWRFRYHUWKHGHWDLOV,I\RXZDQWWROHDUQPRUHDERXW SURJUDPPLQJ\RXPD\ZDQWWRUHIHUWRWKH,QWHUQHWRUWRRQHRIWKHIROORZLQJERRNV

‡ 3UDFWLFDO&3URJUDPPLQJE\6WHYH2XDOOLQH2¦5HLOO\

‡ $%RRNRQ&E\$O.HOOH\DQG,UD3RKO$GGLVRQ:HVOH\

0\ IDYRULWH DOWKRXJK QRW UHDOO\ D EHJLQQHU¦V ERRN LV WKH ERRN , XVHG WR OHDUQ

&SURJUDPPLQJ

‡ 7KH & 3URJUDPPLQJ /DQJXDJH E\ %ULDQ : .HUQLJKDQ DQG 'HQQLV 0 5LWFKLH 3UHQWLFH+DOO

Code Style (About the Code)

7KHFRGHXVHGWKURXJKRXWWKLVERRNKDVEHHQWDLORUHGWRFOHDUO\LOOXVWUDWHWKHWRSLF FRYHUHGLQHDFKUHFLSH$VDFRQVHTXHQFHVRPHFRPPRQFRGLQJVKRUWFXWVKDYHEHHQ DYRLGHGSDUWLFXODUO\LQWKHHDUO\FKDSWHUV([SHULHQFHG&SURJUDPPHUVRIWHQXVHULFK EXWWHUVHH[SUHVVLRQVWKDWDUHHIILFLHQWEXWFDQEHDOLWWOHGLIILFXOWIRUEHJLQQHUVWRUHDG )RUH[DPSOHWKHHDUO\FKDSWHUVLQFUHPHQWYDULDEOHVXVLQJH[SOLFLWH[SUHVVLRQVWKDWDUH HDV\IRUQRQSURJUDPPHUVWRUHDG

result = result + 1; // increment the count

5DWKHUWKDQWKHIROORZLQJFRPPRQO\XVHGE\H[SHULHQFHGSURJUDPPHUVWKDWGRHVWKH VDPHWKLQJ

result++; // increment using the post increment operator

(19)

)HHOIUHHWRVXEVWLWXWH\RXUSUHIHUUHGVW\OH%HJLQQHUVVKRXOGEHUHDVVXUHGWKDWWKHUHLV QREHQHILWLQSHUIRUPDQFHRUFRGHVL]HLQXVLQJWKHWHUVHIRUP

6RPHSURJUDPPLQJH[SUHVVLRQVDUHVRFRPPRQWKDWWKH\DUHXVHGLQWKHLUWHUVHIRUP )RUH[DPSOHWKHORRSH[SUHVVLRQVDUHZULWWHQDVIROORZV

for(int i=0; i < 4; i++)

7KLVLVHTXLYDOHQWWRWKHIROORZLQJ

int i;

for(i=0; i < 4; i = i+1)

6HH&KDSWHUIRUPRUHGHWDLOVRQWKHVHDQGRWKHUH[SUHVVLRQVXVHGWKURXJKRXWWKH ERRN

*RRGSURJUDPPLQJSUDFWLFHLQYROYHVHQVXULQJWKDWYDOXHVXVHGDUHYDOLGJDUEDJHLQ HTXDOVJDUEDJHRXWE\FKHFNLQJWKHPEHIRUHXVLQJWKHPLQFDOFXODWLRQV+RZHYHUWR NHHSWKHFRGHIRFXVHGRQWKHUHFLSHWRSLFYHU\OLWWOHHUURUFKHFNLQJFRGHKDVEHHQ LQFOXGHG

Arduino Platform Release Notes

7KHFRGHKDVEHHQWHVWHGXVLQJ$UGXLQRUHOHDVHVIURPYHUVLRQWKURXJKYHUVLRQ 7KLVERRNZDVZULWWHQEHIRUH$UGXLQRYZDVILQDOL]HGDQGDOWKRXJKDOPRVW DOORIWKHH[DPSOHVVKRXOGVWLOOZRUNVPDOOFKDQJHVUHTXLUHGIRUUXQQLQJZLWKYZLOO EHSXEOLVKHGRQWKHVLWHIRUWKHERRN

KWWSZZZRUHLOO\FRPFDWDORJ

7KHUH¦VDOVRDOLQNWRHUUDWDWKHUH(UUDWDJLYHUHDGHUVDZD\WROHWXVNQRZDERXWW\SRV HUURUVDQGRWKHUSUREOHPVZLWKWKHERRN(UUDWDZLOOEHYLVLEOHRQWKHSDJHLPPHGL DWHO\DQGZH¦OOFRQILUPWKHPDIWHUFKHFNLQJWKHPRXW2¦5HLOO\FDQDOVRIL[HUUDWDLQ IXWXUHSULQWLQJVRIWKHERRNDQGRQ6DIDULPDNLQJIRUDEHWWHUUHDGHUH[SHULHQFHSUHWW\

TXLFNO\

,I\RXKDYHSUREOHPVPDNLQJH[DPSOHVZRUNFKHFNWKHZHEOLQNWRVHHLIWKHFRGHKDV EHHQXSGDWHG,IWKDWGRHVQ¦WIL[WKHSUREOHPVHH$SSHQGL['ZKLFKFRYHUVWURXEOH VKRRWLQJVRIWZDUHSUREOHPV7KH$UGXLQRIRUXPLVDJRRGSODFHWRSRVWDTXHVWLRQLI

\RXQHHGPRUHKHOSKWWSZZZDUGXLQRFF

:H KRSH WR NHHS WKLV ERRN XSGDWHG IRU IXWXUH $UGXLQR YHUVLRQV DQG ZH ZLOO DOVR LQFRUSRUDWHVXJJHVWLRQVDQGFRPSODLQWVLQWRIXWXUHHGLWLRQV

,I\RXOLNH¢RUGRQ¦WOLNH¢WKLVERRNE\DOOPHDQVSOHDVHOHWSHRSOHNQRZ$PD]RQ UHYLHZVDUHRQHSRSXODUZD\WRVKDUH\RXUKDSSLQHVVRUODFNRIKDSSLQHVVRU\RXFDQ OHDYHUHYLHZVDWWKHVLWHIRUWKHERRN

Preface | xvii

(20)

Conventions Used in This Book

7KHIROORZLQJIRQWFRQYHQWLRQVDUHXVHGLQWKLVERRN ,WDOLF

,QGLFDWHVSDWKQDPHVILOHQDPHVDQGSURJUDPQDPHV,QWHUQHWDGGUHVVHVVXFKDV GRPDLQQDPHVDQG85/VDQGQHZLWHPVZKHUHWKH\DUHGHILQHG

Constant width

,QGLFDWHVFRPPDQGOLQHVDQGRSWLRQVWKDWVKRXOGEHW\SHGYHUEDWLPQDPHVDQG NH\ZRUGVLQSURJUDPVLQFOXGLQJPHWKRGQDPHVYDULDEOHQDPHVDQGFODVVQDPHV DQG+70/HOHPHQWWDJV

Constant width bold

,QGLFDWHVHPSKDVLVLQSURJUDPFRGHOLQHV Constant width italic

,QGLFDWHVWH[WWKDWVKRXOGEHUHSODFHGZLWKXVHUVXSSOLHGYDOXHV 7KLVLFRQVLJQLILHVDWLSVXJJHVWLRQRUJHQHUDOQRWH

7KLVLFRQLQGLFDWHVDZDUQLQJRUFDXWLRQ

Using Code Examples

7KLVERRNLVKHUHWRKHOS\RXPDNHWKLQJVZLWK$UGXLQR,QJHQHUDO\RXPD\XVHWKH FRGHLQWKLVERRNLQ\RXUSURJUDPVDQGGRFXPHQWDWLRQ<RXGRQRWQHHGWRFRQWDFW XVIRUSHUPLVVLRQXQOHVV\RX¦UHUHSURGXFLQJDVLJQLILFDQWSRUWLRQRIWKHFRGH)RUH[

DPSOHZULWLQJDSURJUDPWKDWXVHVVHYHUDOFKXQNVRIFRGHIURPWKLVERRNGRHVQRW UHTXLUH SHUPLVVLRQ 6HOOLQJ RU GLVWULEXWLQJ D &'520 RI H[DPSOHV IURP WKLV ERRN GRHVUHTXLUHSHUPLVVLRQ$QVZHULQJDTXHVWLRQE\FLWLQJWKLVERRNDQGTXRWLQJH[DPSOH FRGHGRHVQRWUHTXLUHSHUPLVVLRQ,QFRUSRUDWLQJDVLJQLILFDQWDPRXQWRIH[DPSOHFRGH IURPWKLVERRNLQWR\RXUSURGXFW¦VGRFXPHQWDWLRQGRHVUHTXLUHSHUPLVVLRQ

:HDSSUHFLDWHEXWGRQRWUHTXLUHDWWULEXWLRQ$QDWWULEXWLRQXVXDOO\LQFOXGHVWKHWLWOH DXWKRUSXEOLVKHUDQG,6%1)RUH[DPSOH£$UGXLQR&RRNERRNE\0LFKDHO0DUJROLV ZLWK1LFN:HOGLQ2¦5HLOO\&RS\ULJKW0LFKDHO0DUJROLVDQG1LFKRODV:HOGLQ

¤

,I\RXIHHO\RXUXVHRIFRGHH[DPSOHVIDOOVRXWVLGHIDLUXVHRUWKHSHUPLVVLRQJLYHQKHUH IHHOIUHHWRFRQWDFWXVDWSHUPLVVLRQV#RUHLOO\FRP

(21)

Safari® Books Online

6DIDUL%RRNV2QOLQHLVDQRQGHPDQGGLJLWDOOLEUDU\WKDWOHWV\RXHDVLO\

VHDUFKRYHUWHFKQRORJ\DQGFUHDWLYHUHIHUHQFHERRNVDQGYLGHRVWR ILQGWKHDQVZHUV\RXQHHGTXLFNO\

:LWKDVXEVFULSWLRQ\RXFDQUHDGDQ\SDJHDQGZDWFKDQ\YLGHRIURPRXUOLEUDU\RQOLQH 5HDGERRNVRQ\RXUFHOOSKRQHDQGPRELOHGHYLFHV$FFHVVQHZWLWOHVEHIRUHWKH\DUH DYDLODEOHIRUSULQWDQGJHWH[FOXVLYHDFFHVVWRPDQXVFULSWVLQGHYHORSPHQWDQGSRVW IHHGEDFNIRUWKHDXWKRUV&RS\DQGSDVWHFRGHVDPSOHVRUJDQL]H\RXUIDYRULWHVGRZQ ORDGFKDSWHUVERRNPDUNNH\VHFWLRQVFUHDWHQRWHVSULQWRXWSDJHVDQGEHQHILWIURP WRQVRIRWKHUWLPHVDYLQJIHDWXUHV

2¦5HLOO\0HGLDKDVXSORDGHGWKLVERRNWRWKH6DIDUL%RRNV2QOLQHVHUYLFH7RKDYHIXOO GLJLWDODFFHVVWRWKLVERRNDQGRWKHUVRQVLPLODUWRSLFVIURP2¦5HLOO\DQGRWKHUSXE OLVKHUVVLJQXSIRUIUHHDWKWWSP\VDIDULERRNVRQOLQHFRP

How to Contact Us

:HKDYHWHVWHGDQGYHULILHGWKHLQIRUPDWLRQLQWKLVERRNWRWKHEHVWRIRXUDELOLW\EXW

\RXPD\ILQGWKDWIHDWXUHVKDYHFKDQJHGRUHYHQWKDWZHKDYHPDGHDIHZPLVWDNHV 3OHDVHOHWXVNQRZDERXWDQ\HUURUV\RXILQGDVZHOODV\RXUVXJJHVWLRQVIRUIXWXUH HGLWLRQVE\ZULWLQJWR

2¦5HLOO\0HGLD,QF

*UDYHQVWHLQ+LJKZD\1RUWK 6HEDVWRSRO&$

LQWKH8QLWHG6WDWHVRU&DQDGD LQWHUQDWLRQDOORFDO

ID[

:HKDYHDZHESDJHIRUWKLVERRNZKHUHZHOLVWHUUDWDH[DPSOHVDQGDQ\DGGLWLRQDO LQIRUPDWLRQ<RXFDQDFFHVVWKLVSDJHDW

KWWSZZZRUHLOO\FRPFDWDORJ

7RFRPPHQWRUDVNWHFKQLFDOTXHVWLRQVDERXWWKLVERRNVHQGHPDLOWR ERRNTXHVWLRQV#RUHLOO\FRP

)RUPRUHLQIRUPDWLRQDERXWRXUERRNVFRXUVHVFRQIHUHQFHVDQGQHZVVHHRXUZHEVLWH DWKWWSZZZRUHLOO\FRP

)LQGXVRQ)DFHERRNKWWSIDFHERRNFRPRUHLOO\

)ROORZXVRQ7ZLWWHUKWWSWZLWWHUFRPRUHLOO\PHGLD

:DWFKXVRQ<RX7XEHKWWSZZZ\RXWXEHFRPRUHLOO\PHGLD

Preface | xix

(22)

Acknowledgments

1LFN:HOGLQ¦VFRQWULEXWLRQZDVLQYDOXDEOHIRUWKHFRPSOHWLRQRIWKLVERRN,WZDV SHUFHQWZULWWHQZKHQ1LFNFDPHRQERDUG¢DQGZLWKRXWKLVVNLOODQGHQWKXVLDVP LWZRXOGVWLOOEHSHUFHQWZULWWHQ+LVKDQGVRQH[SHULHQFHUXQQLQJ$UGXLQRZRUN VKRSVIRUDOOOHYHOVRIXVHUVHQDEOHGXVWRPDNHWKHDGYLFHLQWKLVERRNSUDFWLFDOIRURXU EURDGUDQJHRIUHDGHUV7KDQN\RX1LFNIRU\RXUNQRZOHGJHDQGJHQLDOFROODERUDWLYH QDWXUH

6LPRQ6W/DXUHQWZDVWKHHGLWRUDW2¦5HLOO\ZKRILUVWH[SUHVVHGLQWHUHVWLQWKLVERRN

$QGLQWKHHQGKHLVWKHPDQZKRSXOOHGLWWRJHWKHU+LVVXSSRUWDQGHQFRXUDJHPHQW NHSWXVLQVSLUHGDVZHVLIWHGRXUZD\WKURXJKWKHYROXPHVRIPDWHULDOQHFHVVDU\WRGR WKHVXEMHFWMXVWLFH

%ULDQ-HSVRQKHOSHGPHJHWVWDUWHGZLWKWKHZULWLQJRIWKLVERRN+LVYDVWNQRZOHGJH RIWKLQJV$UGXLQRDQGKLVFRQFHUQDQGH[SHUWLVHIRUFRPPXQLFDWLQJDERXWWHFKQRORJ\

LQSODLQ(QJOLVKVHWDKLJKVWDQGDUG+HZDVDQLGHDOJXLGLQJKDQGIRUVKDSLQJWKHERRN DQGPDNLQJWHFKQRORJ\UHDGLO\DFFHVVLEOHIRUUHDGHUV:HDOVRKDYH%ULDQWRWKDQNIRU WKH;%HHFRQWHQWLQ&KDSWHU

$XGUH\ 'R\OH ZRUNHG WLUHOHVVO\ WR VWDPS RXW W\SRV DQG JUDPPDWLFDO HUURUV LQ WKH PDQXVFULSWDQGXQWDQJOHVRPHRIWKHPRUHFRQYROXWHGH[SUHVVLRQV

3KLOLS /LQGVD\ FROODERUDWHG RQ&KDSWHU DQG KLV FRPELQDWLRQ RI GHHS WHFKQLFDO NQRZOHGJHDQGFOHDUXQGHUVWDQGLQJRIWKHQHHGVRIQRQWHFKQLFDOSHRSOHZDVHVVHQWLDO LQPDNLQJWKHFRPSOH[VXEMHFWRI(WKHUQHWDFFHVVLEOH

0LNDO +DUW ZURWH UHFLSHV FRYHULQJ *36 DQG VRIWZDUH VHULDO 0LNDO ZDV WKH QDWXUDO FKRLFHIRUWKLV¢QRWRQO\EHFDXVHKHZURWHWKHOLEUDULHVEXWDOVREHFDXVHKHLVDIOXHQW FRPPXQLFDWRUDQ$UGXLQRHQWKXVLDVWDQGDSOHDVXUHWRFROODERUDWHZLWK

$UGXLQRLVSRVVLEOHEHFDXVHRIWKHFUHDWLYLW\RIWKHFRUH$UGXLQRGHYHORSPHQWWHDP 0DVVLPR%DQ]L'DYLG&XDUWLHOOHV7RP,JRH*LDQOXFD0DUWLQRDQG'DYLG0HOOLV2Q EHKDOIRIDOO$UGXLQRXVHUV,ZLVKWRH[SUHVVRXUDSSUHFLDWLRQIRUWKHLUHIIRUWVLQPDNLQJ WKLVIDVFLQDWLQJWHFKQRORJ\VLPSOHDQGWKHLUJHQHURVLW\LQPDNLQJLWIUHH

6SHFLDO WKDQNV WR $OH[DQGUD 'HVFKDPSV6RQVLQR &(2 RI 7LQNHU /RQGRQ ZKRVH ZRUNVKRSVSURYLGHGLPSRUWDQWXQGHUVWDQGLQJRIWKHQHHGVRIXVHUV7KDQNVDOVRWR 3HWHU.QLJKWZKRKDVSURYLGHGDOONLQGVRIFOHYHU$UGXLQRVROXWLRQVDVZHOODVWKHEDVLV RIDQXPEHURIUHFLSHVLQWKLVERRN

2Q EHKDOI RI HYHU\RQH ZKR KDV GRZQORDGHG XVHUFRQWULEXWHG $UGXLQR OLEUDULHV , ZRXOGOLNHWRWKDQNWKHDXWKRUVZKRKDYHJHQHURXVO\VKDUHGWKHLUNQRZOHGJH 7KHDYDLODELOLW\RIDZLGHUDQJHRIKDUGZDUHLVDODUJHSDUWRIZKDWPDNHV$UGXLQR H[FLWLQJ¢WKDQNVWRWKHVXSSOLHUVIRUVWRFNLQJDQGVXSSRUWLQJDEURDGUDQJHRIJUHDW GHYLFHV7KHIROORZLQJZHUHKHOSIXOLQSURYLGLQJKDUGZDUHXVHGLQWKHERRN6SDUN)XQ 0DNHU6WRUH*UDYLWHFKDQG1.&(OHFWURQLFV2WKHUVXSSOLHUVWKDWKDYHEHHQKHOSIXO

(23)

LQFOXGH 0RGHUQ 'HYLFH /LTXLGZDUH $GDIUXLW 0DNHUERW ,QGXVWULHV 0LQGNLWV 2RPORXWDQG6.3DQJ

1LFNZRXOGOLNHWRWKDQN$OH[DQGUDDQG3HWHUDW7LQNHU/RQGRQDVZHOODV%URFN&UDIW DQGHVSHFLDOO\'DQLHO6ROWLVIRUDOOWKHZRUNVKRSVZHKDYHGRQHWRJHWKHU

1LFNZRXOGDOVROLNHWRWKDQNHYHU\RQHZKRKDVDVVLVWHGDWZRUNVKRSVDQGSDUWLFLSDQWV ZKRDVNHGD£VLOO\¤TXHVWLRQDVWKHUHDUHQRVLOO\TXHVWLRQV0DQ\RIWKRVHKDYHOHGWR FODULILFDWLRQVDQGFRUUHFWLRQVLQWKLVERRN

1LFN¦VILQDOWKDQNVJRWRKLVIDPLO\-HDQLH(PLO\DQG)LQQZKRDJUHHGWROHWKLPGR WKLVRYHUWKHLUVXPPHUKROLGD\DQGRIFRXUVHPXFKORQJHUDIWHUWKDWWKDQWKH\RULJL QDOO\WKRXJKWDQGWRKLVSDUHQWV)UDQNDQG(YDIRUEULQJLQJKLPXSWRWDNHWKLQJV DSDUW

/DVWEXWQRWOHDVW,H[SUHVVWKDQNVWRWKHIROORZLQJSHRSOH

-RVKXD1REOHIRULQWURGXFLQJPHWR2¦5HLOO\+LVERRN3URJUDPPLQJ,QWHUDFWLYLW\LV KLJKO\UHFRPPHQGHGIRUWKRVHLQWHUHVWHGLQEURDGHQLQJWKHLUNQRZOHGJHLQLQWHUDFWLYH FRPSXWLQJ

5REHUW/DF\7KRPSVRQIRURIIHULQJDGYLFHHDUO\RQZLWKWKHERRN

0DUN0DUJROLVIRUKLVVXSSRUWDQGKHOSDVDVRXQGLQJERDUGLQWKHERRN¦VFRQFHSWLRQ DQGGHYHORSPHQW

,WKDQNP\SDUHQWVIRUKHOSLQJPHWRVHHWKDWWKHFUHDWLYHDUWVDQGWHFKQRORJ\ZHUHQRW GLVWLQFWLYHHQWLWLHVDQGWKDWZKHQFRPELQHGWKH\FDQOHDGWRH[WUDRUGLQDU\UHVXOWV

$QGILQDOO\WKLVERRNZRXOGQRWKDYHEHHQVWDUWHGRUILQLVKHGZLWKRXWWKHVXSSRUWRI P\ZLIH%DUEDUD)DGHQ0\JUDWHIXODSSUHFLDWLRQWRKHUIRUNHHSLQJPHPRWLYDWHGDQG IRUKHUFDUHIXOUHDGLQJDQGFRQWULEXWLRQVWRWKHPDQXVFULSW

Preface | xxi

(24)
(25)

CHAPTER 1

Getting Started

1.0 Introduction

7KH$UGXLQRHQYLURQPHQWKDVEHHQGHVLJQHGWREHHDV\WRXVHIRUEHJLQQHUVZKRKDYH QRVRIWZDUHRUHOHFWURQLFVH[SHULHQFH:LWK$UGXLQR\RXFDQEXLOGREMHFWVWKDWFDQ UHVSRQGWRDQGRUFRQWUROOLJKWVRXQGWRXFKDQGPRYHPHQW$UGXLQRKDVEHHQXVHG WRFUHDWHDQDPD]LQJYDULHW\RIWKLQJVLQFOXGLQJPXVLFDOLQVWUXPHQWVURERWVOLJKW VFXOSWXUHVJDPHVLQWHUDFWLYHIXUQLWXUHDQGHYHQLQWHUDFWLYHFORWKLQJ

,I\RX¦UHQRWDEHJLQQHUSOHDVHIHHOIUHHWRVNLSDKHDGWRUHFLSHVWKDW LQWHUHVW\RX

$UGXLQRLVXVHGLQPDQ\HGXFDWLRQDOSURJUDPVDURXQGWKHZRUOGSDUWLFXODUO\E\GH VLJQHUVDQGDUWLVWVZKRZDQWWRHDVLO\FUHDWHSURWRW\SHVEXWGRQRWQHHGDGHHSXQGHU VWDQGLQJRIWKHWHFKQLFDOGHWDLOVEHKLQGWKHLUFUHDWLRQV%HFDXVHLWLVGHVLJQHGWREHXVHG E\QRQWHFKQLFDOSHRSOHWKHVRIWZDUHLQFOXGHVSOHQW\RIH[DPSOHFRGHWRGHPRQVWUDWH KRZWRXVHWKH$UGXLQRERDUG¦VYDULRXVIDFLOLWLHV

7KRXJKLWLVHDV\WRXVH$UGXLQR¦VXQGHUO\LQJKDUGZDUHZRUNVDWWKHVDPHOHYHORI VRSKLVWLFDWLRQWKDWHQJLQHHUVHPSOR\WREXLOGHPEHGGHGGHYLFHV3HRSOHDOUHDG\ZRUN LQJZLWKPLFURFRQWUROOHUVDUHDOVRDWWUDFWHGWR$UGXLQREHFDXVHRILWVDJLOHGHYHORSPHQW FDSDELOLWLHVDQGLWVIDFLOLW\IRUTXLFNLPSOHPHQWDWLRQRILGHDV

$UGXLQRLVEHVWNQRZQIRULWVKDUGZDUHEXW\RXDOVRQHHGVRIWZDUHWRSURJUDPWKDW KDUGZDUH%RWKWKHKDUGZDUHDQGWKHVRIWZDUHDUHFDOOHG£$UGXLQR¤7KHFRPELQDWLRQ HQDEOHV\RXWRFUHDWHSURMHFWVWKDWVHQVHDQGFRQWUROWKHSK\VLFDOZRUOG7KHVRIWZDUH LVIUHHRSHQVRXUFHDQGFURVVSODWIRUP7KHERDUGVDUHLQH[SHQVLYHWREX\RU\RXFDQ EXLOG\RXURZQWKHKDUGZDUHGHVLJQVDUHDOVRRSHQVRXUFH,QDGGLWLRQWKHUHLVDQ DFWLYHDQGVXSSRUWLYH$UGXLQRFRPPXQLW\WKDWLVDFFHVVLEOHZRUOGZLGHWKURXJKWKH

$UGXLQRIRUXPVDQGWKHZLNLNQRZQDVWKH$UGXLQR3OD\JURXQG7KHIRUXPVDQGWKH

1

(26)

ZLNLRIIHUSURMHFWGHYHORSPHQWH[DPSOHVDQGVROXWLRQVWRSUREOHPVWKDWFDQSURYLGH LQVSLUDWLRQDQGDVVLVWDQFHDV\RXSXUVXH\RXURZQSURMHFWV

7KHUHFLSHVLQWKLVFKDSWHUZLOOJHW\RXVWDUWHGE\H[SODLQLQJKRZWRVHWXSWKHGHYHO RSPHQWHQYLURQPHQWDQGKRZWRFRPSLOHDQGUXQDQH[DPSOHVNHWFK

6RXUFHFRGHFRQWDLQLQJFRPSXWHULQVWUXFWLRQVIRUFRQWUROOLQJ$UGXLQR IXQFWLRQDOLW\LVXVXDOO\UHIHUUHGWRDVDVNHWFKLQWKH$UGXLQRFRPPXQLW\

7KHZRUGVNHWFKZLOOEHXVHGWKURXJKRXWWKLVERRNWRUHIHUWR$UGXLQR SURJUDPFRGH

7KH%OLQNVNHWFKZKLFKFRPHVZLWK$UGXLQRLVXVHGDVDQH[DPSOHIRUUHFLSHVLQWKLV FKDSWHUWKRXJKWKHODVWUHFLSHLQWKHFKDSWHUJRHVIXUWKHUE\DGGLQJVRXQGDQGFRO OHFWLQJLQSXWWKURXJKVRPHDGGLWLRQDOKDUGZDUHQRWMXVWEOLQNLQJWKHOLJKWEXLOWLQWR WKHERDUG&KDSWHUFRYHUVKRZWRVWUXFWXUHDVNHWFKIRU$UGXLQRDQGSURYLGHVDQ LQWURGXFWLRQWRSURJUDPPLQJ

,I\RXDOUHDG\NQRZ\RXUZD\DURXQG$UGXLQREDVLFVIHHOIUHHWRMXPS IRUZDUGWRODWHUFKDSWHUV,I\RX¦UHDILUVWWLPH$UGXLQRXVHUSDWLHQFH LQWKHVHHDUO\UHFLSHVZLOOSD\RIIZLWKVPRRWKHUUHVXOWVODWHU

Arduino Software

6RIWZDUHSURJUDPVFDOOHGVNHWFKHVDUHFUHDWHGRQDFRPSXWHUXVLQJWKH$UGXLQRLQWH JUDWHGGHYHORSPHQWHQYLURQPHQW,'(7KH,'(HQDEOHV\RXWRZULWHDQGHGLWFRGH DQGFRQYHUWWKLVFRGHLQWRLQVWUXFWLRQVWKDW$UGXLQRKDUGZDUHXQGHUVWDQGV7KH,'(

DOVRWUDQVIHUVWKRVHLQVWUXFWLRQVWRWKH$UGXLQRERDUGDSURFHVVFDOOHGXSORDGLQJ

Arduino Hardware

7KH$UGXLQRERDUGLVZKHUHWKHFRGH\RXZULWHLVH[HFXWHG7KHERDUGFDQRQO\FRQWURO DQGUHVSRQGWRHOHFWULFLW\VRVSHFLILFFRPSRQHQWVDUHDWWDFKHGWRLWWRHQDEOHLWWR LQWHUDFWZLWKWKHUHDOZRUOG7KHVHFRPSRQHQWVFDQEHVHQVRUVZKLFKFRQYHUWVRPH DVSHFWRIWKHSK\VLFDOZRUOGWRHOHFWULFLW\VRWKDWWKHERDUGFDQVHQVHLWRUDFWXDWRUV ZKLFKJHWHOHFWULFLW\IURPWKHERDUGDQGFRQYHUWLWLQWRVRPHWKLQJWKDWFKDQJHVWKH ZRUOG([DPSOHVRIVHQVRUVLQFOXGHVZLWFKHVDFFHOHURPHWHUVDQGXOWUDVRXQGGLVWDQFH VHQVRUV$FWXDWRUVDUHWKLQJVOLNHOLJKWVDQG/('VVSHDNHUVPRWRUVDQGGLVSOD\V 7KHUHDUHDYDULHW\RIRIILFLDOERDUGVWKDW\RXFDQXVHZLWK$UGXLQRVRIWZDUHDQGDZLGH UDQJHRI$UGXLQRFRPSDWLEOHERDUGVSURGXFHGE\PHPEHUVRIWKHFRPPXQLW\

7KHPRVWSRSXODUERDUGVFRQWDLQD86%FRQQHFWRUWKDWLVXVHGWRSURYLGHSRZHUDQG FRQQHFWLYLW\ IRU XSORDGLQJ \RXU VRIWZDUH RQWR WKH ERDUG)LJXUH VKRZV D EDVLF ERDUGWKH$UGXLQR8QR

(27)

<RXFDQJHWERDUGVDVVPDOODVDSRVWDJHVWDPSVXFKDVWKH$UGXLQR0LQLDQG3UR0LQL ODUJHUERDUGVWKDWKDYHPRUHFRQQHFWLRQRSWLRQVDQGPRUHSRZHUIXOSURFHVVRUVVXFK DVWKH$UGXLQR0HJDDQGERDUGVWDLORUHGIRUVSHFLILFDSSOLFDWLRQVVXFKDVWKH/LO\3DG IRUZHDUDEOHDSSOLFDWLRQVWKH)LRIRUZLUHOHVVSURMHFWVDQGWKH$UGXLQR3URIRUHP EHGGHGDSSOLFDWLRQVVWDQGDORQHSURMHFWVWKDWDUHRIWHQEDWWHU\RSHUDWHG0DQ\RWKHU

$UGXLQRFRPSDWLEOHERDUGVDUHDOVRDYDLODEOHLQFOXGLQJWKHIROORZLQJ

‡ $UGXLQR1DQRDWLQ\ERDUGZLWK86%FDSDELOLW\IURP*UDYLWHFKKWWSVWRUHJUDY LWHFKXVDUQDZLDWQKWPO

‡ %DUH%RQHV%RDUGDORZFRVWERDUGDYDLODEOHZLWKRUZLWKRXW86%FDSDELOLW\IURP 0RGHUQ'HYLFHKWWSZZZPRGHUQGHYLFHFRPSURGXFWVEEENLW

‡ %RDUGXLQR D ORZFRVW EUHDGERDUGFRPSDWLEOH ERDUG IURP $GDIUXLW ,QGXVWULHV KWWSZZZDGDIUXLWFRP

‡ 6HHHGXLQR D IOH[LEOH YDULDWLRQ RI WKH VWDQGDUG 86% ERDUG IURP 6HHHG 6WXGLR

%D]DDUKWWSZZZVHHHGVWXGLRFRP

‡ 7HHQV\DQG7HHQV\WLQ\EXWH[WUHPHO\YHUVDWLOHERDUGVIURP3-5&KWWSZZZ SMUFFRPWHHQV\

$FRPSUHKHQVLYHOLVWRI$UGXLQRFRPSDWLEOHERDUGVLVDYDLODEOHDWKWWSZZZIUHHGXLQR RUJ

See Also

$QRYHUYLHZRI$UGXLQRERDUGVKWWSZZZDUGXLQRFFHQ0DLQ+DUGZDUH

2QOLQH JXLGHV IRU JHWWLQJ VWDUWHG ZLWK $UGXLQR DUH DYDLODEOH DWKWWSDUGXLQRFFHQ

*XLGH:LQGRZVIRU:LQGRZVKWWSDUGXLQRFFHQ*XLGH0DF26;IRU0DF26;DQG KWWSZZZDUGXLQRFFSOD\JURXQG/HDUQLQJ/LQX[IRU/LQX[

)LJXUH%DVLFERDUGWKH$UGXLQR8QR

1.0 Introduction | 3

(28)

1.1 Installing the Integrated Development Environment (IDE)

Problem

<RXZDQWWRLQVWDOOWKH$UGXLQRGHYHORSPHQWHQYLURQPHQWRQ\RXUFRPSXWHU

Solution

7KH$UGXLQRVRIWZDUHIRU:LQGRZV0DFDQG/LQX[FDQEHGRZQORDGHGIURPKWWS DUGXLQRFFHQ0DLQ6RIWZDUH

7KH:LQGRZVGRZQORDGLVD=,3ILOH8Q]LSWKHILOHWRDQ\FRQYHQLHQWGLUHFWRU\¢

3URJUDP)LOHV$UGXLQRLVDVHQVLEOHSODFH

$IUHHXWLOLW\IRUXQ]LSSLQJILOHVFDOOHG=LSFDQEHGRZQORDGHGIURP KWWSZZZ]LSRUJ

8Q]LSSLQJWKHILOHZLOOFUHDWHDIROGHUQDPHG$UGXLQRQQ!ZKHUHQQ!LVWKHYHU VLRQ QXPEHU RI WKH $UGXLQR UHOHDVH \RX GRZQORDGHG 7KH GLUHFWRU\ FRQWDLQV WKH H[HFXWDEOHILOHQDPHG$UGXLQRH[HDORQJZLWKYDULRXVRWKHUILOHVDQGIROGHUV'RXEOH FOLFNWKH$UGXLQRH[HILOHDQGWKHVSODVKVFUHHQVKRXOGDSSHDUVHH)LJXUHIROORZHG E\WKHPDLQSURJUDPZLQGRZVHH)LJXUH%HSDWLHQWDVLWFDQWDNHVRPHWLPHIRU WKHVRIWZDUHWRORDG

)LJXUH$UGXLQRVSODVKVFUHHQYHUVLRQLQ:LQGRZV

(29)

7KH$UGXLQRGRZQORDGIRUWKH0DFLVDGLVNLPDJHGPJGRXEOHFOLFNWKHILOHZKHQ WKHGRZQORDGLVFRPSOHWH7KHLPDJHZLOOPRXQWLWZLOODSSHDUOLNHDPHPRU\VWLFN RQWKHGHVNWRS,QVLGHWKHGLVNLPDJHLVWKH$UGXLQRDSSOLFDWLRQ&RS\WKLVWRVRPH ZKHUHFRQYHQLHQW¢WKH$SSOLFDWLRQVIROGHULVDVHQVLEOHSODFH'RXEOHFOLFNWKHDSSOL FDWLRQRQFH\RXKDYHFRSLHGLWRYHULWLVQRWDJRRGLGHDWRUXQLWIURPWKHGLVNLPDJH 7KHVSODVKVFUHHQZLOODSSHDUIROORZHGE\WKHPDLQSURJUDPZLQGRZ

/LQX[LQVWDOODWLRQYDULHVGHSHQGLQJRQWKH/LQX[GLVWULEXWLRQ\RXDUHXVLQJ6HHWKH

$UGXLQRZLNLIRULQIRUPDWLRQKWWSZZZDUGXLQRFFSOD\JURXQG/HDUQLQJ/LQX[

7RHQDEOHWKH$UGXLQRGHYHORSPHQWHQYLURQPHQWWRFRPPXQLFDWHZLWKWKHERDUG\RX QHHGWRLQVWDOOGULYHUV

)LJXUH$UGXLQR,'(PDLQZLQGRZYHUVLRQLQ:LQGRZV

1.1 Installing the Integrated Development Environment (IDE) | 5

(30)

2Q:LQGRZVXVHWKH86%FDEOHWRFRQQHFW\RXU3&DQGWKH$UGXLQRERDUGDQGZDLW IRUWKH)RXQG1HZ+DUGZDUH:L]DUGWRDSSHDU,I\RXDUHXVLQJ:LQGRZV9LVWDRU :LQGRZVDQGDUHRQOLQH\RXFDQOHWWKHZL]DUGVHDUFKIRUGULYHUVDQGWKH\ZLOOLQVWDOO DXWRPDWLFDOO\2Q:LQGRZV;3\RXVKRXOGVSHFLI\WKHORFDWLRQRIWKHGULYHUV8VHWKH ILOH VHOHFWRU WR QDYLJDWH WR WKHGULYHUV GLUHFWRU\ ORFDWHG LQ WKH GLUHFWRU\ ZKHUH \RX XQ]LSSHGWKH$UGXLQRILOHV:KHQWKHGULYHUKDVLQVWDOOHGWKH)RXQG1HZ+DUGZDUH :L]DUGZLOODSSHDUDJDLQVD\LQJDQHZVHULDOSRUWKDVEHHQIRXQG)ROORZWKHVDPH SURFHVVDVEHIRUH

,WLVLPSRUWDQWWKDW\RXJRWKURXJKWKHVHTXHQFHRIVWHSVWRLQVWDOOWKH GULYHUVWZRWLPHVRUWKHVRIWZDUHZLOOQRWEHDEOHWRFRPPXQLFDWHZLWK WKHERDUG

2QWKH0DFWKHODWHVW$UGXLQRERDUGVVXFKDVWKH8QRFDQEHXVHGZLWKRXWDGGLWLRQDO GULYHUVEXWLI\RXDUHXVLQJHDUOLHUERDUGV\RXZLOOQHHGWRLQVWDOOGULYHUVRIWZDUH7KHUH LVDSDFNDJHQDPHG)7',86%6HULDO'ULYHUZLWKDUDQJHRIQXPEHUVDIWHULWLQVLGHWKH GLVNLPDJH'RXEOHFOLFNWKLVDQGWKHLQVWDOOHUZLOOWDNH\RXWKURXJKWKHSURFHVV<RX ZLOOQHHGWRNQRZDQDGPLQLVWUDWRUSDVVZRUGWRFRPSOHWHWKHSURFHVV

2Q/LQX[PRVWGLVWULEXWLRQVKDYHWKHGULYHUDOUHDG\LQVWDOOHGEXWIROORZWKH/LQX[

OLQNJLYHQLQWKLVFKDSWHU¦VLQWURGXFWLRQIRUVSHFLILFLQIRUPDWLRQIRU\RXUGLVWULEXWLRQ

Discussion

,IWKHVRIWZDUHIDLOVWRVWDUWFKHFNWKHWURXEOHVKRRWLQJVHFWLRQRIWKH$UGXLQRZHEVLWH KWWSDUGXLQRFFHQ*XLGH7URXEOHVKRRWLQJIRUKHOSVROYLQJLQVWDOODWLRQSUREOHPV

See Also

2QOLQH JXLGHV IRU JHWWLQJ VWDUWHG ZLWK $UGXLQR DUH DYDLODEOH DWKWWSDUGXLQRFFHQ

*XLGH:LQGRZVIRU:LQGRZVKWWSDUGXLQRFFHQ*XLGH0DF26;IRU0DF26;DQG KWWSZZZDUGXLQRFFSOD\JURXQG/HDUQLQJ/LQX[IRU/LQX[

1.2 Setting Up the Arduino Board

Problem

<RXZDQWWRSRZHUXSDQHZERDUGDQGYHULI\WKDWLWLVZRUNLQJ

Solution

3OXJWKHERDUGLQWRD86%SRUWRQ\RXUFRPSXWHUDQGFKHFNWKDWWKHJUHHQ/('SRZHU LQGLFDWRURQWKHERDUGLOOXPLQDWHV6WDQGDUG$UGXLQRERDUGV8QR'XHPLODQRYHDQG 0HJDKDYHDJUHHQ/('SRZHULQGLFDWRUORFDWHGQHDUWKHUHVHWVZLWFK

(31)

$QRUDQJH/('QHDUWKHFHQWHURIWKHERDUGODEHOHG£3LQ/('¤LQ)LJXUHVKRXOG IODVKRQDQGRIIZKHQWKHERDUGLVSRZHUHGXSERDUGVFRPHIURPWKHIDFWRU\SUHORDGHG ZLWKVRIWZDUHWRIODVKWKH/('DVDVLPSOHFKHFNWKDWWKHERDUGLVZRUNLQJ

)LJXUH%DVLF$UGXLQRERDUG8QRDQG'XHPLODQRYH

Discussion

,IWKHSRZHU/('GRHVQRWLOOXPLQDWHZKHQWKHERDUGLVFRQQHFWHGWR\RXUFRPSXWHU WKHERDUGLVSUREDEO\QRWUHFHLYLQJSRZHU

7KH IODVKLQJ /(' FRQQHFWHG WR GLJLWDO RXWSXW SLQ LV EHLQJ FRQWUROOHG E\ FRGH UXQQLQJRQWKHERDUGQHZERDUGVDUHSUHORDGHGZLWKWKH%OLQNH[DPSOHVNHWFK,IWKH SLQ/('LVIODVKLQJWKHVNHWFKLVUXQQLQJFRUUHFWO\ZKLFKPHDQVWKHFKLSRQWKH ERDUGLVZRUNLQJ,IWKHJUHHQSRZHU/('LVRQEXWWKHSLQ/('LVQRWIODVKLQJLW FRXOG EH WKDW WKH IDFWRU\ FRGH LV QRW RQ WKH FKLS IROORZ WKH LQVWUXFWLRQV LQ5HF LSHWRORDGWKH%OLQNVNHWFKRQWRWKHERDUGWRYHULI\WKDWWKHERDUGLVZRUNLQJ,I

\RXDUHQRWXVLQJDVWDQGDUGERDUGLWPD\QRWKDYHDEXLOWLQ/('RQSLQVRFKHFN WKHGRFXPHQWDWLRQIRUGHWDLOVRI\RXUERDUG

See Also

2QOLQH JXLGHV IRU JHWWLQJ VWDUWHG ZLWK $UGXLQR DUH DYDLODEOH DWKWWSDUGXLQRFFHQ

*XLGH:LQGRZVIRU:LQGRZVKWWSDUGXLQRFFHQ*XLGH0DF26;IRU0DF26;DQG KWWSZZZDUGXLQRFFSOD\JURXQG/HDUQLQJ/LQX[IRU/LQX[

$WURXEOHVKRRWLQJJXLGHFDQEHIRXQGDWKWWSDUGXLQRFFHQ*XLGH7URXEOHVKRRWLQJ 1.2 Setting Up the Arduino Board | 7

(32)

1.3 Using the Integrated Development Environment (IDE) to Prepare an Arduino Sketch

Problem

<RXZDQWWRJHWDVNHWFKDQGSUHSDUHLWIRUXSORDGLQJWRWKHERDUG

Solution

8VHWKH$UGXLQR,'(WRFUHDWHRSHQDQGPRGLI\VNHWFKHVWKDWGHILQHZKDWWKHERDUG ZLOOGR<RXFDQXVHEXWWRQVDORQJWKHWRSRIWKH,'(WRSHUIRUPWKHVHDFWLRQVVKRZQ LQ)LJXUHRU\RXFDQXVHWKHPHQXVRUNH\ERDUGVKRUWFXWVVKRZQLQ)LJXUH 7KH6NHWFK(GLWRUDUHDLVZKHUH\RXYLHZDQGHGLWFRGHIRUDVNHWFK,WVXSSRUWVFRP PRQWH[WHGLWLQJNH\VVXFKDV&WUO) )RQD0DFIRUILQG&WUO= =RQD0DF IRUXQGR&WUO& &RQD0DFWRFRS\KLJKOLJKWHGWH[WDQG&WUO9 9RQD0DF WRSDVWHKLJKOLJKWHGWH[W

)LJXUHVKRZVKRZWRORDGWKH%OLQNVNHWFKWKHVNHWFKWKDWFRPHVSUHORDGHGRQD QHZ$UGXLQRERDUG

$IWHU\RX¦YHVWDUWHGWKH,'(JRWRWKH)LOH ([DPSOHVPHQXDQGVHOHFW%DVLFV %OLQN DVVKRZQLQ)LJXUH7KHFRGHIRUEOLQNLQJWKHEXLOWLQ/('ZLOOEHGLVSOD\HGLQWKH 6NHWFK(GLWRUZLQGRZUHIHUWR)LJXUH

%HIRUHWKHFRGHFDQEHVHQWWRWKHERDUGLWQHHGVWREHFRQYHUWHGLQWRLQVWUXFWLRQVWKDW FDQEHUHDGDQGH[HFXWHGE\WKH$UGXLQRFRQWUROOHUFKLSWKLVLVFDOOHGFRPSLOLQJ7R GRWKLVFOLFNWKHFRPSLOHEXWWRQWKHWRSOHIWEXWWRQZLWKDWULDQJOHLQVLGHRUVHOHFW 6NHWFK 9HULI\&RPSLOH

<RXVKRXOGVHHDPHVVDJHWKDWUHDGV£&RPSLOLQJ¤LQWKHPHVVDJHDUHDEHORZWKHWH[W HGLWLQJZLQGRZ$IWHUDVHFRQGRUWZRDPHVVDJHWKDWUHDGV£'RQH&RPSLOLQJ¤ZLOO DSSHDU7KHEODFNFRQVROHDUHDZLOOFRQWDLQWKHIROORZLQJDGGLWLRQDOPHVVDJH

Binary sketch size: 1008 bytes (of a 32256 byte maximum)

7KHH[DFWPHVVDJHPD\GLIIHUGHSHQGLQJRQWKH$UGXLQRYHUVLRQLWLVWHOOLQJ\RXWKH VL]HRIWKHVNHWFKDQGWKHPD[LPXPVL]HWKDW\RXUERDUGFDQDFFHSW

(33)

)LJXUH$UGXLQR,'(

Discussion

6RXUFHFRGHIRU$UGXLQRLVFDOOHGDVNHWFK7KHSURFHVVWKDWWDNHVDVNHWFKDQGFRQYHUWV LWLQWRDIRUPWKDWZLOOZRUNRQWKHERDUGLVFDOOHGFRPSLODWLRQ7KH,'(XVHVDQXPEHU RIFRPPDQGOLQHWRROVEHKLQGWKHVFHQHVWRFRPSLOHDVNHWFK)RUPRUHLQIRUPDWLRQ RQWKLVVHH5HFLSH

1.3 Using the Integrated Development Environment (IDE) to Prepare an Arduino Sketch | 9

(34)

)LJXUH,'(PHQXVHOHFWLQJWKH%OLQNH[DPSOHVNHWFK

7KHILQDOPHVVDJHWHOOLQJ\RXWKHVL]HRIWKHVNHWFKLQGLFDWHVKRZPXFKSURJUDPVSDFH LVQHHGHGWRVWRUHWKHFRQWUROOHULQVWUXFWLRQVRQWKHERDUG,IWKHVL]HRIWKHFRPSLOHG VNHWFKLVJUHDWHUWKDQWKHDYDLODEOHPHPRU\RQWKHERDUGWKHIROORZLQJHUURUPHVVDJH LVGLVSOD\HG

Sketch too big; see http://www.arduino.cc/en/Guide/Troubleshooting#size for tips on reducing it.

,IWKLVKDSSHQV\RXQHHGWRPDNH\RXUVNHWFKVPDOOHUWREHDEOHWRSXWLWRQWKHERDUG RUJHWDERDUGZLWKKLJKHUFDSDFLW\

(35)

,IWKHUHDUHHUURUVLQWKHFRGHWKHFRPSLOHUZLOOSULQWRQHRUPRUHHUURUPHVVDJHVLQWKH FRQVROHZLQGRZ7KHVHPHVVDJHVFDQKHOSLGHQWLI\WKHHUURU¢VHH$SSHQGL['RQVRIW ZDUHHUURUVIRUWURXEOHVKRRWLQJWLSV

7RSUHYHQWDFFLGHQWDORYHUZULWLQJRIWKHH[DPSOHVWKH$UGXLQR,'(

GRHVQRWDOORZ\RXWRVDYHFKDQJHVWRWKHSURYLGHGH[DPSOHVNHWFKHV

<RXPXVWUHQDPHWKHPXVLQJWKH6DYH$VPHQXRSWLRQ<RXFDQVDYH VNHWFKHV\RXZULWH\RXUVHOIZLWKWKH6DYHEXWWRQVHH5HFLSH

$V\RXGHYHORSDQGPRGLI\DVNHWFK\RXVKRXOGDOVRFRQVLGHUXVLQJWKH)LOH 6DYH$V PHQXRSWLRQDQGXVLQJDGLIIHUHQWQDPHRUYHUVLRQQXPEHUUHJXODUO\VRWKDWDV\RX LPSOHPHQWHDFKELW\RXFDQJREDFNWRDQROGHUYHUVLRQLI\RXQHHGWR

&RGHXSORDGHGRQWRWKHERDUGFDQQRWEHGRZQORDGHGEDFNRQWR\RXU FRPSXWHU0DNHVXUH\RXVDYH\RXUVNHWFKFRGHRQ\RXUFRPSXWHU<RX FDQQRWVDYHFKDQJHVEDFNWRWKHH[DPSOHILOHV\RXQHHGWRXVH6DYH$V DQGJLYHWKHFKDQJHGILOHDQRWKHUQDPH

See Also

5HFLSHVKRZVDQH[DPSOHVNHWFK$SSHQGL['KDVWLSVRQWURXEOHVKRRWLQJVRIWZDUH SUREOHPV

1.4 Uploading and Running the Blink Sketch

Problem

<RXZDQWWRWUDQVIHU\RXUFRPSLOHGVNHWFKWRWKH$UGXLQRERDUGDQGVHHLWZRUNLQJ

Solution

&RQQHFW\RXU$UGXLQRERDUGWR\RXUFRPSXWHUXVLQJWKH86%FDEOH/RDGWKH%OLQN VNHWFKLQWRWKH,'(DVGHVFULEHGLQ5HFLSH

1H[WVHOHFW7RROV %RDUGIURPWKHGURSGRZQPHQXDQGVHOHFWWKHQDPHRIWKHERDUG

\RXKDYHFRQQHFWHGLILWLVWKHVWDQGDUG8QRERDUGLWLVSUREDEO\WKHILUVWHQWU\LQWKH ERDUGOLVW

1RZVHOHFW7RROV 6HULDO3RUW<RXZLOOJHWDGURSGRZQOLVWRIDYDLODEOHVHULDOSRUWVRQ

\RXUFRPSXWHU(DFKPDFKLQHZLOOKDYHDGLIIHUHQWFRPELQDWLRQRIVHULDOSRUWVGH SHQGLQJRQZKDWRWKHUGHYLFHV\RXKDYHXVHGZLWK\RXUFRPSXWHU

2Q:LQGRZVWKH\ZLOOEHOLVWHGDVQXPEHUHG&20HQWULHV,IWKHUHLVRQO\RQHHQWU\

VHOHFWLW,IWKHUHDUHPXOWLSOHHQWULHV\RXUERDUGZLOOSUREDEO\EHWKHODVWHQWU\

1.4 Uploading and Running the Blink Sketch | 11

(36)

2QWKH0DF\RXUERDUGZLOOEHOLVWHGWZLFHLILWLVDQ8QRERDUG

/dev/tty.usbmodem-XXXXXXX /dev/cu.usbmodem-XXXXXXX

,I\RXKDYHDQROGHUERDUGLWZLOOEHOLVWHGDVIROORZV

/dev/tty.usbserial-XXXXXXX /dev/cu.usbserial-XXXXXXX

(DFKERDUGZLOOKDYHGLIIHUHQWYDOXHVIRUXXXXXXX6HOHFWHLWKHUHQWU\

&OLFNRQWKHXSORDGEXWWRQLQ)LJXUHLW¦VWKHILIWKEXWWRQIURPWKHOHIWRUFKRRVH )LOH 8SORDGWR,2ERDUG

7KHVRIWZDUHZLOOFRPSLOHWKHFRGHDVLQ5HFLSH$IWHUWKHVRIWZDUHLVFRPSLOHGLW LVXSORDGHGWRWKHERDUG,I\RXORRNDW\RXUERDUG\RXZLOOVHHWKH/('VWRSIODVKLQJ DQGWZROLJKWVODEHOHGDV6HULDO/('VLQ)LJXUHMXVWEHORZWKHSUHYLRXVO\IODVKLQJ /('VKRXOGIOLFNHUIRUDFRXSOHRIVHFRQGVDVWKHFRGHXSORDGV7KHRULJLQDOOLJKWVKRXOG WKHQVWDUWIODVKLQJDJDLQDVWKHFRGHUXQV

Discussion

)RUWKH,'(WRVHQGWKHFRPSLOHGFRGHWRWKHERDUGWKHERDUGQHHGVWREHSOXJJHG LQWRWKHFRPSXWHUDQG\RXQHHGWRWHOOWKH,'(ZKLFKERDUGDQGVHULDOSRUW\RXDUH XVLQJ

:KHQDQXSORDGVWDUWVZKDWHYHUVNHWFKLVUXQQLQJRQWKHERDUGLVVWRSSHGLI\RXZHUH UXQQLQJWKH%OLQNVNHWFKWKH/('ZLOOVWRSIODVKLQJ7KHQHZVNHWFKLVXSORDGHGWR WKHERDUGUHSODFLQJWKHSUHYLRXVVNHWFK7KHQHZVNHWFKZLOOVWDUWUXQQLQJZKHQWKH XSORDGKDVVXFFHVVIXOO\FRPSOHWHG

2OGHU$UGXLQRERDUGVDQGVRPHFRPSDWLEOHVGRQRWDXWRPDWLFDOO\LQ WHUUXSWWKHUXQQLQJVNHWFKWRLQLWLDWHXSORDG,QWKLVFDVH\RXQHHGWR SUHVVWKH5HVHWEXWWRQRQWKHERDUGMXVWDIWHUWKHVRIWZDUHUHSRUWVWKDW LWLVGRQHFRPSLOLQJZKHQ\RXVHHWKHPHVVDJHDERXWWKHVL]HRIWKH VNHWFK,WPD\WDNHDIHZDWWHPSWVWRJHWWKHWLPLQJULJKWEHWZHHQWKH HQGRIWKHFRPSLODWLRQDQGSUHVVLQJWKH5HVHWEXWWRQ

7KH,'(ZLOOGLVSOD\DQHUURUPHVVDJHLIWKHXSORDGLVQRWVXFFHVVIXO3UREOHPVDUH XVXDOO\GXHWRWKHZURQJERDUGRUVHULDOSRUWEHLQJVHOHFWHGRUWKHERDUGQRWEHLQJ SOXJJHGLQ

,I\RXKDYHWURXEOHLGHQWLI\LQJWKHFRUUHFWSRUWRQ:LQGRZVWU\XQSOXJJLQJWKHERDUG DQGWKHQVHOHFWLQJ7RROV 6HULDO3RUWWRVHHZKLFK&20SRUWLVQRORQJHURQWKHGLVSOD\

OLVW$QRWKHUDSSURDFKLVWRVHOHFWWKHSRUWVRQHE\RQHXQWLO\RXVHHWKHOLJKWVRQWKH ERDUGIOLFNHUWRLQGLFDWHWKDWWKHFRGHLVXSORDGLQJ

(37)

See Also

7KH$UGXLQRWURXEOHVKRRWLQJSDJHKWWSZZZDUGXLQRFFHQ*XLGH7URXEOHVKRRWLQJ

1.5 Creating and Saving a Sketch

Problem

<RXZDQWWRFUHDWHDVNHWFKDQGVDYHLWWR\RXUFRPSXWHU

Solution

7RRSHQDQHGLWRUZLQGRZUHDG\IRUDQHZVNHWFKODXQFKWKH,'(VHH5HFLSHJR WRWKH)LOHPHQXDQGVHOHFW1HZ3DVWHWKHIROORZLQJFRGHLQWRWKH6NHWFK(GLWRUZLQ GRZLW¦VVLPLODUWRWKH%OLQNVNHWFKEXWWKHEOLQNVODVWWZLFHDVORQJ

const int ledPin = 13; // LED connected to digital pin 13 void setup()

{

pinMode(ledPin, OUTPUT);

}

void loop() {

digitalWrite(ledPin, HIGH); // set the LED on delay(2000); // wait for two seconds digitalWrite(ledPin, LOW); // set the LED off delay(2000); // wait for two seconds }

&RPSLOHWKHFRGHE\FOLFNLQJWKHFRPSLOHEXWWRQWKHWRSOHIWEXWWRQZLWKDWULDQJOH LQVLGHRUVHOHFW6NHWFK 9HULI\&RPSLOHVHH5HFLSH

8SORDGWKHFRGHE\FOLFNLQJRQWKHXSORDGEXWWRQRUFKRRVH)LOH 8SORDGWR,2ERDUG VHH5HFLSH$IWHUXSORDGLQJWKH/('VKRXOGEOLQNZLWKHDFKIODVKODVWLQJWZR VHFRQGV

<RX FDQ VDYH WKLV VNHWFK WR \RXU FRPSXWHU E\ FOLFNLQJ WKH 6DYH EXWWRQ RU VHOHFW )LOH 6DYH

<RXFDQVDYHWKHVNHWFKXVLQJDQHZQDPHE\VHOHFWLQJWKH6DYH$VPHQXRSWLRQ$

GLDORJER[ZLOORSHQZKHUH\RXFDQHQWHUWKHILOHQDPH

Discussion

:KHQ\RXVDYHDILOHLQWKH,'(DVWDQGDUGGLDORJER[IRUWKHRSHUDWLQJV\VWHPZLOO RSHQ,WVXJJHVWVWKDW\RXVDYHWKHVNHWFKWRDIROGHUFDOOHG$UGXLQRLQ\RXU0\'RFX PHQWVIROGHURU\RXU'RFXPHQWVIROGHURQD0DF<RXFDQUHSODFHWKHGHIDXOWVNHWFK

1.5 Creating and Saving a Sketch | 13

(38)

QDPHZLWKDPHDQLQJIXOQDPHWKDWUHIOHFWVWKHSXUSRVHRI\RXUVNHWFK&OLFN6DYHWR VDYHWKHILOH

7KHGHIDXOWQDPHLVWKHZRUGVNHWFKIROORZHGE\WKHFXUUHQWGDWH6H TXHQWLDOOHWWHUVVWDUWLQJIURPDDUHXVHGWRGLVWLQJXLVKVNHWFKHVFUHDWHG RQWKHVDPHGD\5HSODFLQJWKHGHIDXOWQDPHZLWKVRPHWKLQJPHDQLQJ IXOKHOSV\RXWRLGHQWLI\WKHSXUSRVHRIDVNHWFKZKHQ\RXFRPHEDFN WRLWODWHU

,I\RXXVHFKDUDFWHUVWKDWWKH,'(GRHVQRWDOORZHJWKHVSDFHFKDUDFWHUWKH,'(

ZLOODXWRPDWLFDOO\UHSODFHWKHVHZLWKYDOLGFKDUDFWHUV

$UGXLQRVNHWFKHVDUHVDYHGDVSODLQWH[WILOHVZLWKWKHH[WHQVLRQSGH7KH\DUHDXWR PDWLFDOO\VDYHGLQDIROGHUZLWKWKHVDPHQDPHDVWKHVNHWFK

<RXFDQVDYH\RXUVNHWFKHVWRDQ\IROGHURQ\RXUFRPSXWHUEXWLI\RXXVHWKHGHIDXOW IROGHUWKH$UGXLQRIROGHULQ\RXU'RFXPHQWVIROGHU\RXUVNHWFKHVZLOODXWRPDWLFDOO\

DSSHDULQWKH6NHWFKERRNPHQXRIWKH$UGXLQRVRIWZDUHDQGEHHDVLHUWRORFDWH

,I\RXKDYHHGLWHGRQHRIWKHH[DPSOHVIURPWKH$UGXLQRGRZQORDG\RX ZLOOQRWEHDEOHWRVDYHWKHFKDQJHGILOHXVLQJWKHVDPHILOHQDPH7KLV SUHVHUYHVWKHVWDQGDUGH[DPSOHVLQWDFW,I\RXZDQWWRVDYHDPRGLILHG H[DPSOH\RXZLOOQHHGWRVHOHFWDQRWKHUORFDWLRQIRUWKHVNHWFK

$IWHU\RXKDYHPDGHFKDQJHV\RXZLOOVHHDGLDORJER[DVNLQJLI\RXZDQWWRVDYHWKH VNHWFKZKHQDVNHWFKLVFORVHG

7KH†V\PEROIROORZLQJWKHQDPHRIWKHVNHWFKLQWKHWRSEDURIWKH,'(

ZLQGRZLQGLFDWHVWKDWWKHVNHWFKFRGHKDVFKDQJHVWKDWKDYHQRW\HW EHHQVDYHGRQWKHFRPSXWHU7KLVV\PEROLVUHPRYHGZKHQ\RXVDYHWKH VNHWFK

7KH$UGXLQRVRIWZDUHGRHVQRWSURYLGHDQ\NLQGRIYHUVLRQFRQWUROVRLI\RXZDQWWR EHDEOHWRUHYHUWWRROGHUYHUVLRQVRIDVNHWFK\RXFDQXVH6DYH$VUHJXODUO\DQGJLYH HDFKUHYLVLRQRIWKHVNHWFKDVOLJKWO\GLIIHUHQWQDPH

)UHTXHQWFRPSLOLQJDV\RXPRGLI\RUDGGFRGHLVDJRRGZD\WRFKHFNIRUHUURUVDV\RX ZULWH\RXUFRGH,WZLOOEHHDVLHUWRILQGDQGIL[DQ\HUURUVEHFDXVHWKH\ZLOOXVXDOO\EH DVVRFLDWHGZLWKZKDW\RXKDYHMXVWZULWWHQ

2QFHDVNHWFKKDVEHHQXSORDGHGRQWRWKHERDUGWKHUHLVQRZD\WR GRZQORDGLWEDFNWR\RXUFRPSXWHU0DNHVXUH\RXVDYHDQ\FKDQJHV WR\RXUVNHWFKHVWKDW\RXZDQWWRNHHS

(39)

,I\RXRSHQVNHWFKHV\RXJHWIURPRWKHUSHRSOHWKDWDUHQRWLQDIROGHUZLWKWKHVDPH QDPHDVWKHVNHWFKWKH,'(ZLOOWHOO\RXDQG\RXFDQFOLFN2.WRSXWWKHPLQDIROGHU ZLWKWKHVDPHQDPH

6NHWFKHVPXVWEHORFDWHGLQDIROGHUZLWKWKHVDPHQDPHDVWKHVNHWFK 7KH,'(ZLOOFUHDWHWKHIROGHUDXWRPDWLFDOO\ZKHQ\RXVDYHDQHZVNHWFK

1.6 Using Arduino

Problem

<RXZDQWWRJHWVWDUWHGZLWKDSURMHFWWKDWLVHDV\WREXLOGDQGIXQWRXVH

Solution

7KLVUHFLSHSURYLGHVDWDVWHRIVRPHRIWKHWHFKQLTXHVWKDWDUHFRYHUHGLQGHWDLOLQODWHU FKDSWHUV

7KHVNHWFKLVEDVHGRQWKH/('EOLQNLQJFRGHIURPWKHSUHYLRXVUHFLSHEXWLQVWHDGRI XVLQJDIL[HGGHOD\WKHUDWHLVGHWHUPLQHGE\DOLJKWVHQVLWLYHVHQVRUFDOOHGDOLJKWGH SHQGHQWUHVLVWRURU/'5VHH5HFLSH:LUHWKH/'5DVVKRZQLQ)LJXUH

)LJXUH$UGXLQRZLWKOLJKWGHSHQGHQWUHVLVWRU

7KHIROORZLQJVNHWFKUHDGVWKHOLJKWOHYHORIDQ/'5FRQQHFWHGWRDQDORJSLQ7KH OLJKWOHYHOVWULNLQJWKH/'5ZLOOFKDQJHWKHEOLQNUDWHRIWKHLQWHUQDO/('FRQQHFWHGWR SLQ

1.6 Using Arduino | 15

(40)

const int ledPin = 13; // LED connected to digital pin 13 const int sensorPin = 0; // connect sensor to analog input 0 void setup()

{

pinMode(ledPin, OUTPUT); // enable output on the led pin }

void loop() {

int rate = analogRead(sensorPin); // read the analog input Serial.println(rate);

rate = map(rate, 200,800,minDuration, maxDuration); // convert to blink rate digitalWrite(ledPin, HIGH); // set the LED on

delay(rate); // wait duration dependent on light level digitalWrite(ledPin, LOW); // set the LED off

delay(rate);

}

Discussion

7KHYDOXHRIWKH.UHVLVWRULVQRWFULWLFDO$Q\WKLQJIURP.WR.FDQEHXVHG7KH OLJKWOHYHORQWKH/'5ZLOOFKDQJHWKHYROWDJHOHYHORQDQDORJSLQ7KHanalogRead FRPPDQGVHH&KDSWHUSURYLGHVDYDOXHWKDWUDQJHVIURPDURXQGZKHQWKH/'5 LVGDUNWRRUVRZKHQLWLVYHU\EULJKW7KLVYDOXHGHWHUPLQHVWKHGXUDWLRQRIWKH /('RQDQGRIIWLPHVVRWKHEOLQNUDWHLQFUHDVHVZLWKOLJKWLQWHQVLW\

<RXFDQVFDOHWKHEOLQNUDWHE\XVLQJWKH$UGXLQRmapIXQFWLRQDVIROORZV

const int ledPin = 13; // LED connected to digital pin 13 const int sensorPin = 0; // connect sensor to analog input 0 // the next two lines set the min and max delay between blinks const int minDuration = 100; // minimum wait between blinks const int maxDuration = 1000; // maximum wait between blinks

void setup() {

pinMode(ledPin, OUTPUT); // enable output on the led pin }

void loop() {

int rate = analogRead(sensorPin); // read the analog input // the next line scales the blink rate between the min and max values rate = map(rate, 200,800,minDuration, maxDuration); // convert to blink rate digitalWrite(ledPin, HIGH); // set the LED on

delay(rate); // wait duration dependent on light level digitalWrite(ledPin, LOW); // set the LED off

delay(rate);

}

5HFLSHSURYLGHVPRUHGHWDLOVRQXVLQJWKHmapIXQFWLRQWRVFDOHYDOXHV

(41)

,I\RXZDQWWRYLHZWKHYDOXHRIWKHUDWHYDULDEOHRQ\RXUFRPSXWHU\RXFDQSULQWWKLV WRWKH$UGXLQR6HULDO0RQLWRUDVVKRZQLQWKHUHYLVHGORRSFRGHWKDWIROORZV7KH VNHWFKZLOOGLVSOD\WKHEOLQNUDWHLQWKH6HULDO0RQLWRU<RXRSHQWKH6HULDO0RQLWRU ZLQGRZLQWKH$UGXLQR,'(VHH&KDSWHUIRUPRUHRQXVLQJWKH6HULDO0RQLWRU

const int ledPin = 13; // LED connected to digital pin 13 const int sensorPin = 0; // connect sensor to analog input 0 // the next two lines set the min and max delay between blinks const int minDuration = 100; // minimum wait between blinks const int maxDuration = 1000; // maximum wait between blinks

void setup() {

pinMode(ledPin, OUTPUT); // enable output on the led pin Serial.begin(9600); // initialize Serial

}

void loop() {

int rate = analogRead(sensorPin); // read the analog input // the next line scales the blink rate between the min and max values rate = map(rate, 200,800,minDuration, maxDuration); // convert to blink rate Serial.println(rate); // print rate to serial monitor

digitalWrite(ledPin, HIGH); // set the LED on

delay(rate); // wait duration dependent on light level digitalWrite(ledPin, LOW); // set the LED off

delay(rate);

}

<RXFDQXVHWKH/'5WRFRQWUROWKHSLWFKRIDVRXQGE\FRQQHFWLQJDVPDOOVSHDNHUWR WKHSLQDVVKRZQLQ)LJXUH

)LJXUH&RQQHFWLRQVIRUDVSHDNHUZLWKWKH/'5FLUFXLW

1.6 Using Arduino | 17

(42)

<RXZLOOQHHGWRLQFUHDVHWKHRQRIIUDWHRQWKHSLQWRDIUHTXHQF\LQWKHDXGLRVSHFWUXP 7KLVLVDFKLHYHGDVVKRZQLQWKHIROORZLQJFRGHE\GLYLGLQJWKHUDWHE\LQWKHOLQH DIWHUWKHmapIXQFWLRQ

const int ledPin = 13; // LED connected to digital pin 13 const int sensorPin = 0; // connect sensor to analog input 0 const int minDuration = 100; // minimum wait between blinks const int maxDuration = 1000; // maximum wait between blinks void setup()

{

pinMode(ledPin, OUTPUT); // enable output on the led pin }

void loop() {

int sensorReading = analogRead(sensorPin); // read the analog input int rate = map(sensorReading, 200,800,minDuration, maxDuration);

rate = rate / 100; // add this line for audio frequency digitalWrite(ledPin, HIGH); // set the LED on

delay(rate); // wait duration dependent on light level digitalWrite(ledPin, LOW); // set the LED off

delay(rate);

}

See Also

6HH&KDSWHUIRUPRUHRQFUHDWLQJVRXQGZLWK$UGXLQR

(43)

CHAPTER 2

Making the Sketch Do Your Bidding

2.0 Introduction

7KRXJKPXFKRIDQ$UGXLQRSURMHFWZLOOLQYROYHLQWHJUDWLQJWKH$UGXLQRERDUGZLWK VXSSRUWLQJKDUGZDUH\RXQHHGWREHDEOHWRWHOOWKHERDUGZKDWWRGRZLWKWKHUHVWRI

\RXUSURMHFW7KLVFKDSWHULQWURGXFHVFRUHHOHPHQWVRI$UGXLQRSURJUDPPLQJVKRZLQJ QRQSURJUDPPHUVKRZWRXVHFRPPRQODQJXDJHFRQVWUXFWVDQGSURYLGLQJDQRYHUYLHZ RIWKHODQJXDJHV\QWD[IRUUHDGHUVZKRDUHQRWIDPLOLDUZLWK&RU&WKHODQJXDJH EHLQJXVHG

6LQFHPDNLQJWKHH[DPSOHVLQWHUHVWLQJUHTXLUHVPDNLQJ$UGXLQRGRVRPHWKLQJWKH UHFLSHVXVHSK\VLFDOFDSDELOLWLHVRIWKHERDUGWKDWDUHH[SODLQHGLQGHWDLOLQODWHUFKDS WHUV,IDQ\RIWKHFRGHLQWKLVFKDSWHULVQRWFOHDUIHHOIUHHWRMXPSIRUZDUGSDUWLFXODUO\

WR&KDSWHUIRUPRUHRQVHULDORXWSXWDQG&KDSWHUIRUPRUHRQXVLQJGLJLWDODQG DQDORJSLQV<RXGRQ¦WQHHGWRXQGHUVWDQGDOOWKHFRGHLQWKHH[DPSOHVWKRXJKWRVHH KRZWRSHUIRUPWKHVSHFLILFFDSDELOLWLHVWKDWDUHWKHIRFXVRIWKHUHFLSHV+HUHDUHVRPH RIWKHPRUHFRPPRQIXQFWLRQVXVHGLQWKHH[DPSOHVWKDWDUHFRYHUHGLQWKHQH[WIHZ FKDSWHUV

Serial.println(value);

3ULQWVWKHYDOXHWRWKH6HULDO0RQLWRURQ\RXUFRPSXWHUVHH5HFLSH pinMode(pin, mode);

&RQILJXUHVDGLJLWDOSLQWRUHDGLQSXWRUZULWHRXWSXWDGLJLWDOYDOXHVHHWKH LQWURGXFWLRQWR&KDSWHU

digitalRead(pin);

5HDGVDGLJLWDOYDOXHHIGHRULOWRQDSLQVHWIRULQSXWVHH5HFLSH digitalWrite(pin, value);

:ULWHVWKHGLJLWDOYDOXHHIGHRULOWWRDSLQVHWIRURXWSXWVHH5HFLSH

19

Download  from  Wow!  eBook  <www.wowebook.com>

(44)

2.1 Structuring an Arduino Program

Problem

<RXDUHQHZWRSURJUDPPLQJDQGZDQWWRXQGHUVWDQGWKHEXLOGLQJEORFNVRIDQ$UGXLQR SURJUDP

Solution

3URJUDPVIRU$UGXLQRDUHXVXDOO\UHIHUUHGWRDVVNHWFKHVWRHPSKDVL]HWKHDJLOHQDWXUH RIGHYHORSPHQW7KHWHUPVVNHWFKDQGSURJUDPDUHLQWHUFKDQJHDEOH6NHWFKHVFRQWDLQ FRGH¢WKHLQVWUXFWLRQVWKHERDUGZLOOFDUU\RXW&RGHWKDWQHHGVWRUXQRQO\RQFHVXFK DVWRVHWXSWKHERDUGIRU\RXUDSSOLFDWLRQVKRXOGEHSODFHGLQWKHsetupIXQFWLRQ

&RGHWREHUXQFRQWLQXRXVO\DIWHUWKHLQLWLDOVHWXSKDVILQLVKHGJRHVLQWRWKHloopIXQF WLRQ+HUHLVDW\SLFDOVNHWFK

const int ledPin = 13; // LED connected to digital pin 13 // The setup() method runs once, when the sketch starts void setup()

{

pinMode(ledPin, OUTPUT); // initialize the digital pin as an output }

// the loop() method runs over and over again, void loop()

{

digitalWrite(ledPin, HIGH); // turn the LED on delay(1000); // wait a second digitalWrite(ledPin, LOW); // turn the LED off delay(1000); // wait a second }

:KHQWKHERDUGILQLVKHVXSORDGLQJWKHFRGHRULVWXUQHGRQRQFHLWFRQWDLQVWKLVFRGH LWVWDUWVDWWKHWRSRIWKHVNHWFKDQGFDUULHVRXWWKHLQVWUXFWLRQVVHTXHQWLDOO\,WUXQVWKH FRGHLQsetupRQFHDQGWKHQJRHVWKURXJKWKHFRGHLQloop:KHQLWJHWVWRWKHHQGRI loopPDUNHGE\WKHFORVLQJEUDFNHW}LWJRHVEDFNWRWKHEHJLQQLQJRIloop

Discussion

7KLVH[DPSOHFRQWLQXRXVO\IODVKHVDQ/('E\ZULWLQJHIGHDQGLOWRXWSXWVWRDSLQ 6HH&KDSWHUWROHDUQPRUHDERXWXVLQJ$UGXLQRSLQV:KHQWKHVNHWFKEHJLQVWKH FRGHLQsetupVHWVWKHSLQPRGHVRLW¦VFDSDEOHRIOLJKWLQJDQ/('$IWHUWKHFRGHLQ setupLVFRPSOHWHGWKHFRGHLQloopLVUHSHDWHGO\FDOOHGWRIODVKWKH/('IRUDVORQJ DVWKH$UGXLQRERDUGLVSRZHUHGRQ

<RXGRQ¦WQHHGWRNQRZWKLVWRZULWH$UGXLQRVNHWFKHVEXWH[SHULHQFHG&&SUR JUDPPHUVPD\ZRQGHUZKHUHWKHH[SHFWHGmain()HQWU\SRLQWIXQFWLRQKDVJRQH,W¦V WKHUHEXWLW¦VKLGGHQXQGHUWKHFRYHUVE\WKH$UGXLQREXLOGHQYLURQPHQW7KHEXLOG

(45)

SURFHVVFUHDWHVDQLQWHUPHGLDWHILOHWKDWLQFOXGHVWKHVNHWFKFRGHDQGWKHIROORZLQJ DGGLWLRQDOVWDWHPHQWV

int main(void) {

init();

setup();

for (;;) loop();

return 0;

}

7KHILUVWWKLQJWKDWKDSSHQVLVDFDOOWRDQinit()IXQFWLRQWKDWLQLWLDOL]HVWKH$UGXLQR KDUGZDUH1H[WWKHVNHWFK¦Vsetup()IXQFWLRQLVFDOOHG)LQDOO\WKHloop()IXQFWLRQLV FDOOHGRYHUDQGRYHU%HFDXVHWKHforORRSQHYHUWHUPLQDWHVWKHreturnVWDWHPHQWLV QHYHUH[HFXWHG

See Also

&KDSWHUDQGKWWSZZZDUGXLQRFFHQ+DFNLQJ%XLOG3URFHVVSURYLGHPRUHRQWKH EXLOGSURFHVV

2.2 Using Simple Primitive Types (Variables)

Problem

$UGXLQRKDVGLIIHUHQWW\SHVRIYDULDEOHVWRHIILFLHQWO\UHSUHVHQWYDOXHV<RXZDQWWR NQRZKRZWRVHOHFWDQGXVHWKHVH$UGXLQRGDWDW\SHV

Solution

$OWKRXJKWKHintVKRUWIRULQWHJHUDELWYDOXHLQ$UGXLQRGDWDW\SHLVWKHPRVW FRPPRQFKRLFHIRUWKHQXPHULFYDOXHVHQFRXQWHUHGLQ$UGXLQRDSSOLFDWLRQV\RXFDQ XVH7DEOHWRGHWHUPLQHWKHGDWDW\SHWKDWILWVWKHUDQJHRIYDOXHV\RXUDSSOLFDWLRQ H[SHFWV

7DEOH$UGXLQRGDWDW\SHV

Numeric types Bytes Range Use

int 2 -32768 to 32767 Represents positive and negative integer values.

unsigned int 2 0 to 65535 Represents only positive values; otherwise, similar to int.

long 4 -2147483648 to

2147483647 Represents a very large range of positive and negative values.

unsigned long

4 4294967295 Represents a very large range of positive values.

2.2 Using Simple Primitive Types (Variables) | 21

(46)

Numeric types Bytes Range Use

float 4 3.4028235E+38 to

-3.4028235E+38 Represents numbers with fractions; use to approximate real- world measurements.

double 4 Same as float In Arduino, double is just another name for float. boolean 1 false (0) or true (1) Represents true and false values.

char 1 -128 to 127 Represents a single character. Can also represent a signed value between -128 and 127.

byte 1 0 to 255 Similar to char, but for unsigned values.

Other types

string Represents arrays of chars (characters) typically used to contain text.

void Used only in function declarations where no value is returned.

Discussion

([FHSWLQVLWXDWLRQVZKHUHPD[LPXPSHUIRUPDQFHRUPHPRU\HIILFLHQF\LVUHTXLUHG YDULDEOHVGHFODUHGXVLQJintZLOOEHVXLWDEOHIRUQXPHULFYDOXHVLIWKHYDOXHVGRQRW H[FHHGWKHUDQJHVKRZQLQWKHILUVWURZLQ7DEOHDQGLI\RXGRQ¦WQHHGWRZRUN ZLWKIUDFWLRQDOYDOXHV0RVWRIWKHRIILFLDO$UGXLQRH[DPSOHFRGHGHFODUHVQXPHULF YDULDEOHVDVint%XWVRPHWLPHV\RXGRQHHGWRFKRRVHDW\SHWKDWVSHFLILFDOO\VXLWV\RXU DSSOLFDWLRQ

6RPHWLPHV\RXQHHGQHJDWLYHQXPEHUVDQGVRPHWLPHV\RXGRQ¦WVRQXPHULFW\SHV FRPHLQWZRYDULHWLHVsignedDQGunsignedunsignedYDOXHVDUHDOZD\VSRVLWLYH9DUL DEOHVZLWKRXWWKHNH\ZRUGunsignedLQIURQWDUHVLJQHGVRWKDWWKH\FDQUHSUHVHQWQHJ DWLYH DQG SRVLWLYH YDOXHV 2QH UHDVRQ WR XVHunsigned YDOXHV LV ZKHQ WKH UDQJH RI signedYDOXHVZLOOQRWILWWKHUDQJHRIWKHYDULDEOHDQXQVLJQHGYDULDEOHKDVWZLFHWKH FDSDFLW\RIDVLJQHGYDULDEOH$QRWKHUUHDVRQSURJUDPPHUVFKRRVHWRXVHunsigned W\SHVLVWRFOHDUO\LQGLFDWHWRSHRSOHUHDGLQJWKHFRGHWKDWWKHYDOXHH[SHFWHGZLOOQHYHU EHDQHJDWLYHQXPEHU

booleanW\SHVKDYHWZRSRVVLEOHYDOXHVtrueRUfalse7KH\DUHFRPPRQO\XVHGIRU WKLQJVOLNHFKHFNLQJWKHVWDWHRIDVZLWFKLILW¦VSUHVVHGRUQRW<RXFDQDOVRXVHHIGH DQGLOW DV HTXLYDOHQWV WRtrue DQGfalse ZKHUH WKLV PDNHV PRUH VHQVHdigital Write(pin, HIGH)LVDPRUHH[SUHVVLYHZD\WRWXUQRQDQ/('WKDQdigitalWrite(pin, true)RUdigitalWrite(pin,1)DOWKRXJKDOORIWKHVHDUHWUHDWHGLGHQWLFDOO\ZKHQWKH VNHWFKDFWXDOO\UXQVDQG\RXDUHOLNHO\WRFRPHDFURVVDOORIWKHVHIRUPVLQFRGHSRVWHG RQWKH:HE

See Also

7KH$UGXLQRUHIHUHQFHDWKWWSZZZDUGXLQRFFHQ5HIHUHQFH+RPH3DJHSURYLGHVGH WDLOVRQGDWDW\SHV

(47)

2.3 Using Floating-Point Numbers

Problem

)ORDWLQJSRLQWQXPEHUVDUHXVHGIRUYDOXHVH[SUHVVHGZLWKGHFLPDOSRLQWVWKLVLVWKH ZD\WRUHSUHVHQWIUDFWLRQDOYDOXHV<RXZDQWWRFDOFXODWHDQGFRPSDUHWKHVHYDOXHVLQ

\RXUVNHWFK

Solution

7KHIROORZLQJFRGHVKRZVKRZWRGHFODUHIORDWLQJSRLQWYDULDEOHVLOOXVWUDWHVSUREOHPV

\RXFDQHQFRXQWHUZKHQFRPSDULQJIORDWLQJSRLQWYDOXHVDQGGHPRQVWUDWHVKRZWR RYHUFRPHWKHP

/*

* Floating-point example

* This sketch initialized a float value to 1.1

* It repeatedly reduces the value by 0.1 until the value is 0 */

float value = 1.1;

void setup() {

Serial.begin(9600);

}

void loop() {

value = value - 0.1; // reduce value by 0.1 each time through the loop if( value == 0)

Serial.println("The value is exactly zero");

else if(fabs(value) < .0001) // function to take the absolute value of a float Serial.println("The value is close enough to zero");

else

Serial.println(value);

delay(100);

}

Discussion

)ORDWLQJSRLQWPDWKLVQRWH[DFWDQGYDOXHVUHWXUQHGFDQKDYHDVPDOODSSUR[LPDWLRQ HUURU7KHHUURURFFXUVEHFDXVHIORDWLQJSRLQWYDOXHVFRYHUDKXJHUDQJHVRWKHLQWHUQDO UHSUHVHQWDWLRQRIWKHYDOXHFDQRQO\KROGDQDSSUR[LPDWLRQ%HFDXVHRIWKLV\RXQHHG WRWHVWLIWKHYDOXHVDUHZLWKLQDUDQJHRIWROHUDQFHUDWKHUWKDQH[DFWO\HTXDO

7KHRXWSXWIURPWKLVVNHWFKLVDVIROORZV

1.00 0.90

2.3 Using Floating-Point Numbers | 23

(48)

0.80 0.70 0.60 0.50 0.40 0.30 0.20 0.10

The value is close enough to zero -0.10

-0.20

7KHRXWSXWFRQWLQXHVWRSURGXFHQHJDWLYHQXPEHUV

<RXPD\H[SHFWWKHORRSWRVWRSDIWHUvalueLV0.1DQGWKHQLVVXEWUDFWHGIURPWKLV

%XWvalueQHYHUHTXDOV]HURLWJHWVYHU\FORVHEXWWKDWLVQRWJRRGHQRXJKWRSDVVWKH WHVWif (value == 0)7KLVLVEHFDXVHWKHRQO\PHPRU\HIILFLHQWZD\WKDWIORDWLQJSRLQW QXPEHUVFDQFRQWDLQWKHKXJHUDQJHLQYDOXHVWKH\FDQUHSUHVHQWLVE\VWRULQJDQDS SUR[LPDWLRQRIWKHQXPEHU

7KHVROXWLRQWRWKLVLVWRFKHFNLIDYDULDEOHLVFORVHWRWKHGHVLUHGYDOXHDVVKRZQLQ WKHFRGHLQWKLVUHFLSH¦V6ROXWLRQ

else if(fabs(value) < .0001) // function to take absolute value of a float Serial.println("The value is close enough to zero");

7KLVWHVWVLIWKHYDULDEOHvalueLVZLWKLQRIWKHGHVLUHGWDUJHWDQGSULQWVDPHVVDJH LIVR7KHIXQFWLRQQDPHGfabsVKRUWIRUIORDWLQJSRLQWDEVROXWHYDOXHUHWXUQVWKHDE VROXWHYDOXHRIDIORDWLQJSRLQWYDULDEOH7KHIXQFWLRQUHWXUQVWKHPDJQLWXGHRIWKH YDOXHDQGLIWKLVLVZLWKLQRIWKHFRGHZLOOSULQWWKHPHVVDJHWKDWWKHYDOXHV DUHFORVHHQRXJK

)ORDWLQJSRLQWDSSUR[LPDWHVQXPEHUVEHFDXVHLWRQO\XVHVELWVWR KROGDOOYDOXHVZLWKLQDKXJHUDQJH(LJKWELWVDUHXVHGIRUWKHGHFLPDO PXOWLSOLHU WKH H[SRQHQW DQG WKDW OHDYHV ELWV IRU WKH VLJQ DQG YDOXH¢RQO\HQRXJKIRUVHYHQVLJQLILFDQWGHFLPDOGLJLWV

$OWKRXJKfloatDQGdoubleDUHH[DFWO\WKHVDPHRQ$UGXLQRdoubleVGR KDYHDKLJKHUSUHFLVLRQRQPDQ\RWKHUSODWIRUPV,I\RXDUHLPSRUWLQJ FRGHWKDWXVHVfloatDQGdoubleIURPDQRWKHUSODWIRUPFKHFNWKDWWKHUH LVVXIILFLHQWSUHFLVLRQIRU\RXUDSSOLFDWLRQ

See Also

7KH$UGXLQRUHIHUHQFHIRUfloatKWWSZZZDUGXLQRFFHQ5HIHUHQFH)ORDW

Referințe

DOCUMENTE SIMILARE

Taking into account that exponential trichotomy generalizes the concept of exponential dichotomy for the case when the neutral subspace contains only the zero vector, and that

Temperature field (x - the direction of laser beam propagation, y=0 mm) inside the Au bulk target for a single pulse irradiation with a duration.. of 10 -13 s, and a relaxation

The set of sorts, denoted by S (INT ), consists of the sorts Int and Bool, and the set of operation symbols, denoted by F (INT ), includes the usual operations over integers

The cyclosporine amorphization was probably a consequence of its interaction with copolymers in SDD-CsA/P-α-CD, P-β-CD and P-γ-CD as was confirmed by 13 C CPMAS NMR

It is concluded from this figure that the designed observer can reduce the time needed to identify the sample height from ~ 300 to less than 4 normalized time ( t = τω 0 ) units..

Statistical work of determining the content of each branch according to the type of product has to contain the following: compiling lists of goods and services that are

To protect sensitive cell p containing value a i in a input table, the statistical office is interested in publishing an output containing several congruent tables, including

The mean value of safety indices, the percentage of suc- cessful examination of the heart (♦) and the learning curve for first-trimester fetal echocardiography (―) in relation