收藏 分销(赏)

Arduino遙控車設計與製作.pdf

上传人:曲**** 文档编号:12592110 上传时间:2025-11-07 格式:PDF 页数:268 大小:15.30MB 下载积分:15 金币
下载 相关 举报
Arduino遙控車設計與製作.pdf_第1页
第1页 / 共268页
Arduino遙控車設計與製作.pdf_第2页
第2页 / 共268页


点击查看更多>>
资源描述
知速成系列Arduino遥控事言殳言十典蒙作The Design and Development of a Remote Control Car by Arduino Technology渥瑞数位目Sft自序.2自序.4目金条.6m目等条.9表目金条.11知速成系列.12Arduino 的始.15Arduino 起源.15Arduino 特色.17Arduino 硬ft曾介.17程式.20解.24燮数.25型熊醇换.29暹辑控制.31算斫算.37串俞人串俞出脚位定.41畤函式.45数阜函式.47置L数函式.51通函式.536章SP小结.57遥控事.59一般型遥控串.59探用的遥控串.61章第小尔吉.63禹连.65焉逵介貂.65控制焉连介貂.70L298N DC 甯ttH勤板.74章第小皓.77LCD螯幕.79章小皓.86LCD KeyPad Shield.88章小皓.92缸外名泉彝射接收感测器.94缸外遥控.94缸外泉接收模条且.95缸外射模条且.97通.98章小皓.101盛芽控制.104盛芽名字由来.104甚麽是盛芽.105盛芽起源.105叠芽的作原理-跳频展频技彳而.1067盛芽的特性.108叠芽的用.no盛芽模Ifi.111叠芽的迤E皆鹰用.118章第小吉.126遥控功能.128缸外名泉遥控言十.128使用缸外名泉装置控制遥控事.134章小皓.141羟品.143使用叠芽装置控制遥控事.143整合多重摇控装置控制遥控事.155章第小吉.168作者介貂.170附金条.171LCD 1602 函式廛.171LCD&Keypad Shield 函式.185IR接收模条且函式.191LCM 1602 原资料.226LCDKeypad Shield 名泉路圈资料.242L298N甯路圈.243L298N原H资料手册.244盛芽模afi(HC-05)原H资料手册.257参考文献.2718SI目畲亲H 1 Arduino Duemilanove 樊板外觐圜.18H 2 Arduino UNO 板外ISIH.19H 3 Arduino Mega2560 3彝板外.20HI 4跑跑卡丁津:(正面).59H 5跑跑卡丁卓(dU面).59H 6大型遥控事.60H 7寡棠型遥控事.60H 8 用遥控串.62H 9弗莱明左手定刖示意圈.67H 10焉逵情造示意圈.68H 11直流焉逵情造示意圈.68H 12 H Bridge.71H 13 L298N Circuit Diagram.72H 14 L298N DC甯ttH勤板模条且.72ffl 15 L298N DC甯勤板模余且解.73H 16 L298N DC甯ttgl勤板接脚圈.75H 17禹逵阳唁式一皓果耋面.77H 18LCD1602 接脚.79H 19 LCD 1602接名泉示意圈.81H 20 LCD 1602 接名泉圈.82H 21 LCD Keypad Shield.88H 22 LCD Keypad Shield PCB Layout ffl.89H 23 keypadshield 法式耋面.92H 24缸外名泉彝射器.959H 25 工外名泉接收器.95H 26 VS1838B IR Receiver Module.96H 27 VS 1838B外觐尺寸圈.96H 28 VS 1838B 工作1I位.97ffl 29迷你遥控器.98H 30 工外名泉接收模条且速接名泉路圈.99H 31条工外名泉接收模余且设畸式程式结果耋面.101H 32叠芽模.112H 33叠芽模a且(HC-05)接脚方现圈.115H 34叠芽模aS(HC-05)舆军品片版速接名泉路曾圈.116H 35叠芽模a且(珏;05)添唁式程式耋面结果.118H 36叠芽模aS(HC-05)舆罩品片版速暹F皆接路曾圈.119H 37后攵勤平板甯月辍的BluetoothRC软醴.120H 38舆具叠芽装置之遥控汽卓建立速接.120H 39已速接遥控卓盛芽装置.121H 40迤入模擦PS摇才旱耋面.121H 41叠芽遥控接收资料编礁添唁式耋面.126H 42缸外名泉模玄且之遥控功能接名泉圈.129H 43条工外名泉模条且之遥控功能僖串俞.133H 44整合缸外名泉遥控功能之遥控.140H 45具缸外名泉遥控之遥控事.141H 46叠芽模条且之遥控功能接名泉圈.144H 47整合盛芽遥控功能之遥控.154H 48整合多重遥控模条且之遥控功能接名泉圈.157H 49透谩DipSwitch切换遥控装置.16810表目壬亲表1常用军位醇换表.46表2依甯源之焉逵分.69表3依情造之焉逵分.70表4L298NDC甯勤板接腕表.75表5 LCD1602接监得兑明表.80表 6 LCD Keypad Shield 接腕表.89表7叠芽模afi(HC-05)接脚圈.115表8叠芽模条且(珏;05)接脚圈(含指示燎).119表9 Ps摇才旱编礁值.125表10条工外名泉接收模余且接腕表.128表11整合多重摇控装置接脚圈.155n知速成系列科技赞逵今日,资科技技彳而日新月累,言午多相科技的科技人,每天 被十倍速的畤代屋力,摘屋著生活品,卷了追逐最新的科技典技彳而,不惜焚膏 01号日夜追程,只怕追程不上就被科技洪流所淘汰,造成多年整的科技菁英,年a己轻馨的郤都是一高、二高、甚至三高皆有,殿重的甚至、中凰、遇劈死,W 富今社曾造成人才的重大损失。随著璟保色革命,我凭思考著,是否在道知言战湃畤代,也有彳固知亲 色革命。本系列知速成系列由此概念而生。面堂寸越来越多的知学子,焉 了追程最新的技彳而潮流,往往没有往下絮根,去了解言午多知背俊所必须酿再襄的 知基磁,追求到多最新的技彳而遏彖,往往忘言已了如果没有配套的基磁科技知 II,所阜到的知舆科技,在失去造些基磁科技资源德的支持之下,往往瓢法崖 生除生羟效力。如多学曾程式言殳言十的学子,卷了最新的科技潮流,使用著最新的科技工具 典软醴元件,富他优面坐宿午多原有的软醴元件,攵有支持的需求或软醴架横下,攵有 直接直持的工具,此日寺就羟生了莫大的瓶,道些都是悬了追求最新的 科技技彳而而忘郤了学雪原有基磁科技制修柬所致。肇著饕於造檬的困境,思考著如何醇化冢人技彳而悬我的知iL的概念,如 果我凭可以透遇拆解原有的完整崖品,暹而了解原有崖品的檄横作原理典方 法,加鲁著符原有崖品暹行拆解、改造、升东及、置换原有控制核心等方式,阜曾到用其他技彳桁或新技彳桁来原有的崖品,或可以道些辛苦追求新技 彳布的学子,在学雪技彳而富日寺,可以了解所面封的技彳而中,如何研彝舆裂造技彳而 的相品,相信道檬的学雪方式,曾比起在已建情好的模东且或学雪套件中 阜曾某彳固新技彳布或原理,来的更踏的多。目前多学子在学雪程式言殳之畤,恐怕最不能了解的冏题是,我悬何要离 九九乘法表、悬何要离遮退程式,悬何要离成函式型式等等疑冏,只因悬在学 12校的阜子,阜雪程式是卷了可以了解撰嘉程式的暹辑,加就怪柬且建立如何 用程式暹辑的能力,解群中面封的冏题。然而中的冏题往往太遇於褛 B,在校授言果的老肺瓢法有多绘的日寺典资源去解中褛杂隹冏堰,期望能符中褛杂隹冏堰淬金柬成暹本茸上的思路,加以in修柬学生其解题思路,但是冢多学子 宥於的困惑,舞法罩触用触粹的解题思路来暹行擘雪典an怪柬,反而以琨 中的褛亲隹来反驳老肺教学太遇学理,攵有矜上的)1用卷由,拒a色深入学雪,道檬的情形,反而自己造成了学雪上的障碾程。本系列的善籍,金十封目前学雪上的盲黑占,希望透遇现有羟品的羟品解析,透 遇崖品曾军的拆解,以逆向工程的手法,符目前已有崖品拆解之彼,符核心控制 系统之软硬ft,透遇曾罩易学的Arduino军品片典C言吾言,重新十出原有羟品 之核心控制系统,暹而改暹、加弓金、升东及其控制方法。如此一来,因卷阜子俨已原有羟品有深入了解,在暹行重裂核心控制系统遇程之中,可以很有把 握的了解自己正在暹行什麽,而非金理指午多暹辑化的需求暹行。即使在暹行 中,多需求也多醇化成暹本茸化的需求,学子俨仍然可以了解道些暹辑化的需求 背彼的矜需求,封於学雪遇程之中,因矜需求簿引著遇程,可以 子年第襄暹辑化思考舆矜崖出崖生速,如此可以一捕遇去除霾,更踏的暹行造本善以阜子常兄的遥控事卷主要襟的,彳怎小到到,玩具汽事陪伴我凭 的度遇快槃的童年生活,有多玩具隼:如弹力隼,手推隼Y泉控隼,瓢名泉遥控 卓等等,都是我凭童年日寺的美好回,情,但是瓢名泉遥控卓一旦不能多句遥控,往往 我凭就就丢粢整台卓,不但造成浪费,更忘郤了那些玩具曾伴随著我年聒午多羲 月。其那些瓢名泉遥控卓除了遥控装置壤掉之外,勤力装置舆外部结情大部分都 是可以用的,如果我凭可以透遇言十裂造出蒸遥控事的控制器之虞,暹而了解 瓢名泉通的,那符是一彳固非常好的学留言果程。所以本耆要以瓢名泉送控事,透谩瓢名泉通控制器的,可以更加了解其瓢名泉控制系统,相信 整彳固研彝谩程曾更加了解。131CHAPTERArduino 的始14Arduino 的始Arduino 起源Massimo Banzi之前是羲大利Ivrea 一家高科技校的老肺,他的阜生 产蹩常抱怨找不到便宜好用的微圈野t控制器。西元2005年,Massimo Banzi跟 David Cuartielles言汁言俞了道彳固冏题,David Cuartielles是一彳固西班牙籍品片工程,富日寺是道所阜校的冏阜者。丽人言神俞之彼,决定自己言殳言十甯路板,加弓入 了 Banzi的学生David Meilis卷甯路板言十用的言吾言。雨天以彼5 David Meilis就离出了程式碣。又遇了黑天,甯路板就完工了。於是他年朋等道瑰甯路板 命名卷Arduino富初Arduino 言十的觐黑占,就是希望金十螯寸不懂甯目您言吾言的族群,也能用 Arduino做出很酷的柬西,例如:螯寸感测器作出回)1、为堞燎光、控制焉逵等 等。随彼Banzi,Cuartielles,和Meilis把1言十IB放到了余鄙黑罔路上。他凭保持 晋十的放源礁(Open Source)理念,因悬版|瞿法可以盛管放原始礁软醴,郤很It 用在硬ft上,他用夬定探用盒佣CC 可(Creative_Commons,2013)0盒(J用CC(Creative_Commons,2013)是卷保放版正瞿行卷而出现的类真似 GPU的一手重声午可(license),乘自於自由基金曾(Free Software Foundation)的GNU通用公共授才瞿僚款(GNU GPL):在创用CC 可下,任何人都被允言午 1 2 *1 GNU 通用公冢授才瞿僚款(英言吾:GNU General Public License,ffiGNU GPL 或 GPL),是一他潢泛被使用的自由软飕授才瞿脩款,最初由理察斯托曼卷GNU言十副而撰嘉。2自由软醴指尊重使用者及社群自由的软醴。曾军来京兑使用者可以自由行、M、彝怖、擘雪、修改及改良软醴。他小号有操控软醴用途的才瞿利。15生羟甯路板的品,且逮能重新十,甚至金肖售原言十的品。你逮不需要 付版税,甚至不用取得Arduino困除的可。然而,如果你重新散怖了弓用言十,你必须在其羟品中注解明原始Arduino 困陵的。如果你整或改勤了甯路板,你的最新言十必彳真使用相同或类好以的 创用CC 可,以保瞪新版本的Arduino甯路板也曾一檬的自由和放。唯一被保留的只有Arduino造彳固名字Arduino已被注册成了商襟3 Arduino。如果有人想用道彳固名字甯路板,那他凭可能必须付一黑占商襟费 用合Arduino(Arduino,2013)的核心IDE豕成具。Arduino的核心廛除成员包括:Massimo Banzi,David Cuartielles,Tom Igoe,Gianluca Martino,David Meilis 和 Nicholas Zambetti (Arduino,2013),若者有任何不懂Arduino的地方,都可以15冏Arduino官方余罔站:w w w.arduino.cc/Arduino,是一彳固放原始礁的军品片控制器,它使用了 Atmel AVR 罩品片(Atmel_Corporation,2013)用了基於放原始礁的戟:硬ft平台,横建 於放原始礁Simple I/O介面版,加且具有使用类直似Java,C言吾言的 Processingwiring 璟境(B.F.a.C.Reas,2013;C.Reas&Fry,2007,2010)0 Processing 由 MIT 媒醴室美阜典言十算小(Aesthetics&Computation Group)的 Ben Fry(Reas 彝明,Processing 已有意午多的 Open Source的社群所提倡,科技的樊展是一彳固非常大的直献。您可以快速使用Arduino言吾言作出互勤作品,Arduino可以使用完成3商才票专主册人享有商才票的事用才瞿,也有才瞿官午可他人使用商才票以才蔓取幸艮酬。各阈封商才票才瞿的保 期限是短不一,但期满之彳姿,只要另外缴付费用,即可封商才票予以展,次数不限。4 Processing是一倜Open Source的程式言吾言及璟境,提供给那些想要封影像、/、馨音 暹行程式虞理的工作者。此外,擘生、蓼彳行家、建篥自币、研究员以及有典趣的人,也可以用来擘雪,原型及裂作16的甯子元件:例如Switch 感测器、其他控制器件、LED、步暹焉连、其他串俞出 装置等。Arduino IDE介面基於放原始礁,可以您免费下载使用,彝出更多令人鹫髓的互勤作品(Banzi,2009)。Arduino 特色 放原始礁的甯路言十,程式介面 免费下载,也可依需求自己修改!!www.arduino.ee/Arduino可使用ISCP名泉上入器,自我招新的IC晶片入bootloader()arduino.cc/en/Hacking/Bootloader?from=Main.Bootloader 可依摞官方甯路圈|(1111口:/刖川2出山1106/),曾化Arduino模余且,完成彳蜀立 作的微虑理控制 感测器可曾罩速接各式各檬的甯子元件恪工外泉,超音波,热敏甯阻,光敏 甯阻,伺服焉逵,等)支援多檬的互勤程式 使用低慎格的微虑理控制器(ATMEGA8-16)USB介面,不需外接甯源。另外有提供9VDC串俞人)1用方面,利用Arduino,突破以往只能使用滑鼠,CCD等串俞人 的装置的互勤内容,可以更曾罩地逵成罩人或多人遁激互勤Arduino硬骨期重类真曾介Duemilanove 主要潢通介面:USB 核心:ATMEGA328 自勤判断她逗撵供甯方式(USB/外部供甯)崖品规格:17 控制器核心:ATmega328 控制甯屋-5V 建入甯(recommended):7-12 V 最大串俞入甯屋(limits):6-20 V 数位 I/O Pins-14(of which 6 provide PWM output)娄直比串俞入Pins:6*且 DC Current per I/O Pin:40 mA DC Current for 3.3V Pin:50 mA Flash Memory:32 KB(of which 2 KB used by bootloader)SRAM:2 KB EEPROM:1 KB Clock Speed:16 MHz具有bootloader能多句入程式而不需谩其他外部甯路。此版本十了自 勤回彳复保陂6,在Arduino 板搭载太多的言殳倩或甯路短路日寺能有效保Arduino 板的USB通埠,同日寺也保了您的甯,加且故障排除彼能自 IM灰彳复正常。HI 1 Arduino Duemilanove 板外IB HI5启攵勤程式(英言吾:boot loader,也耦第攵勤载入器,引簿程式)位於甯月第或其他言十算檄愿用上,是指引簿操作系统第攵勤的程式。6自恢彳复保除青条是一矛重谩流霜子保元件,探用高分子有檄聚合物在高屋、高温,硫化反鹰的脩 件下,接加醇甯粒子材料彳姿,谩特殊的工蓼加工而成。在皆If上把PPTC(PolyerPositiveTemperature Coefficent)也叫自恢彳复保。殿格意羲:PPTC 不是自恢 彳复保除,ResettableFuse才是自恢彳复保 18UNO使用ATMega 8U2来常作USB第序列通前加多了一laiCSPa合MEGA8U2 使用:未来使用者可以自行撰嘉内部的程式也因悬拾粢FTDI USB晶片Arduino 板需要多一果善屋IC来提供3.3V的甯源。控制器核心:ATmega328 控制甯屋-5V 建入霜(recommended):7-12 V 最大串俞人甯屋(limits):6-20 V 数位 I/O Pins:14(of which 6 provide PWM output)娄耻庭俞人Pins:6&且 DC Current per I/O Pin:40 mA DC Current for 3.3V Pin:50 mA Flash Memory:32 KB(of which 0.5 KB used by bootloader)SRAM:2 KB EEPROM:1 KB Clock Speed:16 MHzffl 2 Arduino UNO 板外SI BlMEGA2560可以是Arduino巨大版:控制器核心:ATmega2560 控制甯屋:5V 建审俞入甯(recommended):7-12 V19 最大输入甯JE(limits):6-20 V 数位 I/O Pins:54(of which 14 provide PWM output)UART:4 类耻匕串俞入Pins:164且 DC Current per I/O Pin:40 mA DC Current for 3.3V Pin:50 mA Flash Memory:256 KB of which 8 KB used by bootloader SRAM:8 KB EEPROM:4 KB Clock Speed*16 MHz.厘塞三MADE IN ITALYO0i.QA)ARDUINO 2560lgffl 3 Arduino Mega2560 板外II 圃tI程式言殳言十者若封本章gB程式东都苛不了解之虞,Arduino官方余罔站的Language20Reference(arduino.cc/en/Reference/HomePage),相信曾某寸 Arduino 程式石再更 加了解舆熟悉。程式吉情 setup()loop()一彳固Arduino程式礁(SKETCH)由甬部分余且成程式初始化void setup()在道彳固函式圉内放置初始化Arduino 板的程式-在重禊轨行的程式(loop。)之前孰行,主要功能是符所有Arduino 板的pin脚定,元件定,需要初始化的部分言殳定等等。退圈重行void loop()在此放置你的Arduino程式碣。道部份的程式曾一直重的被轨行,直到 Arduino 板被。H瑰式吉横(block structure)的程式言吾言C言吾言是展现式结情的程式言吾言,所耦的展现是一封大括虢:所界 定的靶圉,每一封大括虢及其涵括的所有叙述横成C言吾法中所耦的合叙述(Compound Statement),道檬子的禊合叙述不但封於编群器而言,情成一彳固有 意羲的文法罩位,封於程式言殳言十者而言,一彳固H现也愿言亥要代表一彳固完整的程 21式暹辑罩元,内含的叙述m亥具有相富的资料耦合性(一彳固叙述虑理谩的资料 曾被彼面的叙述拿来使用),及控制耦合性(CPU虑理完一彳固叙述俊曾接 理另一彳固叙述指定的勤作),富看到程式中一彳固国现日寺,鹰官亥要可以假言殳其内 所包含的叙述都是匾於某些相功能的,富然其内部所使用的资料都是完 成言亥槿功能所必需的,适些资料雁言亥是於造彳固显境内的叙述,是造彳固显现 之外的叙述不需要的。命名空(naming space)C言吾言中国现定羲了一境所耦的命名空(naming space)在每一彳固命名 空内,程式言十者可以封其内定羲的燮数任意取名字,耦卷显域燮数(local variable),道些燮数只有在命名空(显现)内部可以暹行存取,到了 境之外程式就不能在藉由名耦来存取了,如下例中int型熊的燮数z。由於 显现是E皆屑式的,大国境可以内含小显瑰,大显现内的燮数也可以在内含显现 内使用,例如:int x,r;x=10;r=20;(int y,z;float r;y=x;x=1;r=10.5;)z=X;金昔,不可使用燮数Z上面造彳固例子狸有雨彳固IS现,也就有雨彳固命名空有任一彳固命名空中不可有雨彳固燮数使用相同的名字,不同的命名空即可以取相同的名字,例如 22建数r因此金十封某一彳固燮数来言兑,可以使用到道彳固燮数的程式圉就耦卷道彳固燮数的作用圉(scope)燮数的生命期(Lifetime)燮数的生命始於定羲之叙述而一直延到定羲燮数之显现结束悬止,燮 数的作用15圉:意指程式在何虑可以存取燮数,有畤燮数是存在的,但是程 式郤瓢法藉由其名耦来存取它,例如,上例中内眉癌现内瓢法存取外眉显现所 定羲的燮数因悬在内眉显现中r道彳固名耦赋予另一彳固float型熊的燮数了。缩小燮数的作用靶圉利用C言吾言的国现命名空的言十,程式言十者可以儒量把燮数的作用$513缩小,如下例:int tmp;for(tmp=0;tmp HIGH I LOW INPUT I OUTPUT true I false Integer Constants25资料型憨 boolean char byte int unsigned int longA unsigned long float double stringA array void常数在Arduino言吾言中事先定羲了一些具特殊用途的保留字。HIGH和LOW用 来表示你店攵或是层曷朗了一彳固Arduino的脚位(pin)。INPUT和OUTPUT用来 指示道彳固Arduino的脚位(pin)是匾於串俞人或是串俞出用途。true和false用来指 示一彳固脩件或表示式卷真或是假。燮数燮数用来指定Arduino言己情ft中的一彳固位置,燮数可以用来信者存资料,程 式人具可以透遇程式礁去不限次数的操作燮数的值。因卷Arduino是一彳固非常曾易的微虑理器,但你要宣告一彳固燮数畤必须先 定羲他的资料型熊,好微虑理器知道津借多大的空以信者存道彳固燮数值。Arduino 言支援的资料型憨:布林 boolean26布林建数的值只能卷真(true)或是假(false)字元char罩一字元例如A,和一般的甯做法一檬Arduino符字元信者存成一彳固数 字,即使你看到的明明就是一彳固文字。用数字表示一彳固字元畤,它的值有效15圉卷-128到127。PS:目前有雨槿主流的甯编礁系统ASCII和UNICODE。ASCII表示了 127彳固字元,用来在序列端檄和分日寺言十算檄之傅串俞 文字。UNICODE可表示的字量比较多,在现代甯作棠系统内它可以用来表 示多IS言吾言。在位元数需求较少的傅翰日寺,例如羲大利文或英文道类直由拉丁文,阿拉 伯数字和一般常兄符虢情成的言吾言,ASCII仍是目前主要用来交的编礁 法。位元 byte信者存的数值fglS卷0到255。如同字元一檬位元型魅的燮数只需要用一彳固 位元余且(8位元)的言己情ft空信者存。整数int整数资料型憨用到2位元东且的言由意ft空,可表示的整数靶圉卷-32,768 到32,767;整数燮数是Arduino内最常用到的资料型魅。整数 unsigned int27辗虢整数同檬利用2位元条目的言人意醴空,辗虢意耦著它不能信者存的数 值,因此瓢虢整数可表示的整数$圉卷0到65,535。晨整数long是整数利用到的言己情ft大小是整数的雨倍,因此它可表示的整数15圉 彳能-2,147,483,648 至2,147,483,647。是整数 unsigned long辗虢是整数可表示的整数圉卷0到4,294,967,295。浮黠数float浮黑占数就是用来表逵有小数黑占的数值,每彳固浮黑占数曾用掉四位元条目的 RAM,注意品片者出意醴空的限制,慎的使用浮黑占数。曼精型度浮黠数double曼精度浮黑占数可表逵最大值卷1.7976931348623157x 10308。字串string字串用来表连文字信息,它是由多彳固ASCII字元余且成(你可以透遇序串埠彝 送一彳固文字或者符之示在液品示器上)。字串中的每一彳固字元都用一彳固 余且元东且空信者存,加且在字串的最尾端加上一彳固空字元以提示Ardunio虑理器字 串的结束。下面雨槿宣告方式是相同的。char wordl=Arduino world;/7 字元+1 空字元char word2=Arduino is a good developed kit;/舆上行相同弹歹J array一串燮数可以透遇索弓去直接取得。假如你想要信者存不同程度的LED亮度 28日寺,你可以宣告六彳固燮数 lightOl light02 lightO3 light04 lightO5 light06,但其你有更好的逗撵,例如宣告一彳固整数障列燮数如下:int light=0,20,40,65,80,100;“array”造彳固字没有直接用在燮数宣告,而是口和宣告障列。控制指令型熊醇操 char()byte()int()long()float()char()指令用法耨资料醇程字元形魅:言吾:去:char(x)参数x:想要串第奂资料的燮数或内容回僖字元形魅资料byte()指令用法符资料醇换位元资料形魅:29法:byte(x)参数x:想要醇换资料的燮数或内容回傅位元资料形憩的资料int(x)指令用法符资料醇换整数资料形魅:言吾法:int(x)x:想要醇换资料的燮数或内容回傅整数资料形魅的资料long()指令用法耨资料申鼾奂是整数资料形魅:言吾法:int(x)参数x:想要醇换资料的燮数或内容回傅是整数资料形魅的资料float()指令用法符资料醇换浮黑占数资料形魅:30言吾法:float(x)参数x:想要醇换资料的燮数或内容回僖浮黑占数资料形魅的资料暹事苜控制控制流程ifif.elseforswitch casewhiledo.whilebreakcontinuereturnArdunio利用一些层融建字控制程式礁的暹本茸。if.elseIf必彳真聚接著一彳固冏堰表示式(expression),若道彳固表示式卷真,聚速著表 示式彼的代礁就曾被孰行。若道彳固表示式卷假,期轨行聚接著else之彼的代礁.只使用if不搭配else是被允的。蒯列:#define LED 1231void setup()(int val=1;if(val=1)digitalWrite(LED,HIGH);void loop()for用来明定一段IS域代礁重覆指行的次数。蒯列:void setup()(for(int i=1;i 9;i+)Serial.print(2*);Serial.print(i);Serial.printf=);Serial.print(2*i);void loop()()switch caseif叙述是程式桂的分叉逗撵,switch case是更多的分叉逗撵。swith case根撼燮数值程式有更多的逗撵,比起一串冗晨的if叙述,使用swith case 可使程式代礁看起来比较曾瀑。例:32void setup()(int sensorValue;sensorValue=analogRead(l);switch(sensorValue)case 10:digitalWrite(13,HIGH);break;case 20:digitalWrite(12,HIGH);break;default:/以上修件都不符合畤,予真1孰行的勤作digitalWrite(12,LOW);digitalWrite(13,LOW);)void loop()while富while之接的脩件成立畤,轨行括虢内的程式礁。5例:void setup()(int sensorValue;/富sensor值小於256,两架LED 1燎 sensorValue=analogRead(l);while(sensorValue 256)digitalWrite(13,HIGH);delay(100);digitalWrite(13,HIGH);33delay(100);sensorValue=analogRead(l);)void loop()do.while和while相似,不同的是while前的那段程式礁曾先被孰行一次,不管特定 的修件式卷真或悬假。因此若有一段程式代礁至少需要被孰行一次,就可以使用 do.while 架横。蒯列:void setup()(int sensorValue;do(digitalWrite(13,HIGH);delay(100);digitalWrite(135HIGH);delay(100);sensorValue=analogRead(l);)while(sensorValue 256);)void loop()breakBreaks襄程式礁跳高隹逗圈,加0!行道彳固退圈之彼的程式碣。此外,在break也用於分隔switch case不同的叙述。34例:void setup()void loop()(int sensorValue;do/按下按金丑高隹圈if(digitalRead(7)=HIGH)break;digitalWrite(13,HIGH);delay(100);digitalWrite(135HIGH);delay(100);sensorValue=analogRead(l);)while(sensorValue 512);continuecontinue用於退圈之内,它可以弓金制跳雕接下来的程式,加直接轨行下一 彳固退圈。蒯列:#define PWMpin 12#define Sensorpin 8 void setup()()void loop()(int light;int x;for(light=0;light 140)&(x 200)continue;analogWrite(PWMpin,light);delay(10);)return函式的结尾可以透遇return回僖一彳固数值。例如,有T酯十算现在温度的函式叫computeTemperatureQ 你想要回僖现在的温度东合temperature燮数,你可以适檬嘉:#define PWMpin 12#define Sensorpin 8void setup()(void loop()(int light;int x;for(light=0;light 140)&(x 200)continue;analogWrite(PWMpin,light);36delay(10);)int computeTemperature()int temperature=0;temperature=(analogRead(Sensorpin)+45)/100;return temperature;算彳而算算征亍符虢=合值)+(加法)-C咸法)*(乘法)/(除法)%(求食余数)你可以透遇特殊的言吾法用Arduino去做一些褛亲隹的言十算。+和-就是一般 数学上的加减法,乘法用*示,而除法用/表示。另外绘数除法(),用於算整数除法的绘数值。你可以透遇多眉次的括弧 去指定算彳而之的循序。和数学函式不一檬,中括虢和大括虢在此被保留在不同 的用途(分别卷障列索弓,和宣告国域程式礁)。翱列:#define PWMpin 12#define Sensorpin 837void setup()(int sensorValue;int light;int remainder;sensorValue=analogRead(Sensorpin);light=(12*sensorValue)-5)/2;remainder=3%2;)void loop()比较建算=(等於)!=(不等於)(大於)=(大於等於)常你在指定讦,while,for叙述句日寺,可以用下面道彳固算符虢:符虢n靶例等於a=l!二不等於a!=l38小於a大於al=小於等於a=大於等於a=l布林建算&(and)II(or)!(not)富你想要结合多彳固修件式畤,可以使用布林算符虢。例如你想要检查彳怎感测器停回的数值是否於5到10,你可以适檬嘉:#define PWMpin 12#define Sensorpin 8 void setup()()void loop()(int light;int sensor;for(light=0;light=5)&(sensor +(increment)A (decrement)+=(compound addition)-=(compound subtraction)*=(compound multiplication)A/=(compound division)累加和遮咸(+和)富你在累加1或速成1到一彳固数值畤。小心i+和+i之的不同。如果 你用的是i+,i曾被累加加且i的值等於i+1;但富你使用+i日寺,i的值等於i,直到道行指令被孰行完日寺i再加1。同理)1用於一。+=,=,*=and/=40造些建算符虢可表示式更精曾,下面二彳固表示式是等僵的:Int value=10;value=value+5;/(此雨者都是等僵)value+=5;(此刖者都是等僵)率俞入率俞出腕I位定数位出/人 pinMode()digitalWrite()digitalRead()比出/人 analogRead()analogWriteQ-PWMArduino内含了一些虑理串俞出舆串俞人的切换功能,相信已彳建善中程式15例 略知一二。pinMode(pin,mode)聘数位脚位(dig让al pin)指定卷串俞人或串俞出。蒯列#define sensorPin 7#define PWNPin 8void setup()pinMode(sensorPinJNPUT);/符脚位 sensorPin(7)定卷输入模式)void loop()41digitalWrite(pin,value)聘数位脚位指定悬或。脚位必须先透遇pinMode明示卷串俞人或串俞出模 式digitalWrite才能生效。蒯列:#define PWNPin 8#define sensorPin 7void setup()digitalWrite(PWNPin,OUTPUT);/符脚位 PWNPin(8)定卷串俞入模式)void loop()int digitalRead(pin)符串俞入脚位的值If出,室感测到脚位虑於高甯位日寺日寺回傅HIGH,否刖回僖LOW 0翱列:#define PWNPin 8#define sensorPin 7void setup()(pinMode(sensorPinJNPUT);/符脚位 sensorPin(7)定卷输入模式val=digitalRead(7);/音亶出脚位7的值旋指定东合val)void loop()42int analogRead(pin)It出类耻匕脚位的甯屋加回僖一彳固。到1023的数值表示相封)1的。到5的 甯屋值。蒯列:#define PWNPin 8#define sensorPin 7void setup()(pinMode(sensorPinJNPUT);/符脚位 sensorPin(7)定:串俞人模式val=analogRead(7);/出脚位7的值旋指定东合valvoid loop()(_analogWrite(pin,value)改燮PWM胸位的串俞出甯屋值,腕位通常曾在3、5、6、9、10舆11。value 燮数圉0-255,例如:串俞出甯屋2.5伏特(V),值大条勺是128。蒯列:#define PWNPin 8#define sensorPin 7void setup()analogWrite
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服