Arduino Cookbook
Arduino Cookbook
0LFKDHO0DUJROLV
Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo
Arduino Cookbook
E\0LFKDHO0DUJROLV
&RS\ULJKW0LFKDHO0DUJROLVDQG1LFKRODV:HOGLQ$OOULJKWVUHVHUYHG
3ULQWHGLQWKH8QLWHG6WDWHVRI$PHULFD
3XEOLVKHGE\2¦5HLOO\0HGLD,QF*UDYHQVWHLQ+LJKZD\1RUWK6HEDVWRSRO&$
2¦5HLOO\ERRNVPD\EHSXUFKDVHGIRUHGXFDWLRQDOEXVLQHVVRUVDOHVSURPRWLRQDOXVH2QOLQHHGLWLRQV
DUHDOVRDYDLODEOHIRUPRVWWLWOHVKWWSP\VDIDULERRNVRQOLQHFRP
)RUPRUHLQIRUPDWLRQFRQWDFWRXU
FRUSRUDWHLQVWLWXWLRQDOVDOHVGHSDUWPHQW
RUFRUSRUDWH#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
>/6,@
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
5HWXUQLQJ0RUH7KDQ2QH9DOXHIURPD)XQFWLRQ
7DNLQJ$FWLRQV%DVHGRQ&RQGLWLRQV
5HSHDWLQJD6HTXHQFHRI6WDWHPHQWV
5HSHDWLQJ6WDWHPHQWVZLWKD&RXQWHU
%UHDNLQJ2XWRI/RRSV
7DNLQJD9DULHW\RI$FWLRQV%DVHGRQD6LQJOH9DULDEOH
&RPSDULQJ&KDUDFWHUDQG1XPHULF9DOXHV
&RPSDULQJ6WULQJV
3HUIRUPLQJ/RJLFDO&RPSDULVRQV
v
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
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
6HQGLQJ'DWDWR7ZR6HULDO'HYLFHVDWWKH6DPH7LPH
5HFHLYLQJ6HULDO'DWDIURP7ZR'HYLFHVDWWKH6DPH7LPH
6HWWLQJ8S3URFHVVLQJRQ
DQG5HFHLYH6HULDO'DWD
5. Simple Digital and Analog Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
8VLQJD6ZLWFK
8VLQJD6ZLWFK:LWKRXW([WHUQDO5HVLVWRUV
5HOLDEO\'HWHFWLQJWKH&ORVLQJRID6ZLWFK
'HWHUPLQLQJ+RZ/RQJD6ZLWFK,V3UHVVHG
vi | Table of Contents
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
&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\
viii | Table of Contents
)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
5HVROYLQJ+RVWQDPHVWR,3$GGUHVVHV'16