首页 arduino学习笔记

arduino学习笔记

举报
开通vip

arduino学习笔记PAGE/NUMPAGESArduino学习笔记arduino学习笔记1-什么是arduino?要了解arduino就先要了解什么是单片机,arduino平台的基础就是AVR指令集的单片机。1、什么是单片机?它与个人计算机有什么不同?一台能够工作的计算机要有这样几个部份构成:中央处理单元CPU(进行运算、控制)、随机存储器RAM(数据存储)、存储器ROM(程序存储)、输入/输出设备I/O(串行口、并行输出口等)。在个人计算机(PC)上这些部份被分成若干块芯片,安装在一个被称之为主板的印刷线路板上。而在单...

arduino学习笔记
PAGE/NUMPAGESArduino学习笔记arduino学习笔记1-什么是arduino?要了解arduino就先要了解什么是单片机,arduino平台的基础就是AVR指令集的单片机。1、什么是单片机?它与个人计算机有什么不同?一台能够工作的计算机要有这样几个部份构成:中央处理单元CPU(进行运算、控制)、随机存储器RAM(数据存储)、存储器ROM(程序存储)、输入/输出设备I/O(串行口、并行输出口等)。在个人计算机(PC)上这些部份被分成若干块芯片,安装在一个被称之为主板的印刷线路板上。而在单片机中,这些部份全部被做到一块集成 电路 模拟电路李宁答案12数字电路仿真实验电路与电子学第1章单片机复位电路图组合逻辑电路课后答案 芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如模拟量/数字量转换(A/D)和数字量/模拟量转换(D/A)等。2、单片机有什么用?实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用酷睿处理器吗?应用的关键是看是否够用,是否有很好的性能价格比。如果一台冰箱都需要用酷睿处理起来进行温度控制,那价格就是天价了。单片机通常用于工业生产的控制、生活中与程序和控制有关(如:电子琴、冰箱、智能空调等)的场合。下图就是一个Atmega328P-PU单片机,基于AVR指令集的8位处理器,频率20MHz,存储器空间32KB。 什么是Arduino?Arduino是一个能够用来感应和控制现实物理世界的一套工具。它由一个基于单片机并且开放源码的硬件平台,和一套为Arduino板编写程序的开发环境组成。Arduino可以用来开发交互产品,比如它可以读取大量的开关和传感器信号,并且可以控制各式各样的电灯、电机和其他物理设备。Arduino项目可以是单独的,也可以在运行时和你电脑中运行的程序(例如:Flash,Processing,MaxMSP)进行通讯。Arduino板你可以选择自己去手动组装或是购买已经组装好的;Arduino开源的IDE可以免费下载得到。Arduino的编程语言就像似在对一个类似于物理的计算平台进行相应的连线,它基于处理多媒体的编程环境。为什么要使用Arduino?有很多的单片机和单片机平台都适合用做交互式系统的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 。例如:ParallaxBasicStamp,Netmedia’sBX-24,Phidgets,MIT’sHandyboard和其它等等提供类似功能的。所有这些工具,你都不需要去关心单片机编程繁琐的细节,提供给你的是一套容易使用的工具包。Arduino同样也简化了同单片机工作的 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 ,但同其它系统相比Arduino在很多地方更具有优越性,特别适合老师,学生和一些业余爱好者们使用:便宜-和其它平台相比,Arduino板算是相当便宜了。最便宜的Arduino版本可以自己动手制作,即使是组装好的成品,其价格也不会超过200元。跨平台-Arduino软件可以运行在Windows,MacintoshOSX,和Linux操作系统。大部分其它的单片机系统都只能运行在Windows上。简易的编程环境-初学者很容易就能学会使用Arduino编程环境,同时它又能为高级用户提供足够多的高级应用。对于老师们来说,一般都能很方便的使用Processing编程环境,所以如果学生学习过使用Processing编程环境的话,那他们在使用Arduino开发环境的时候就会觉得很相似很熟悉。软件开源并可扩展-Arduino软件是开源的,对于有经验的程序员可以对其进行扩展。Arduino编程语言可以通过C++库进行扩展,如果有人想去了解技术上的细节,可以跳过Arduino语言而直接使用AVRC编程语言(因为Arduino语言实际上是基于AVRC的)。类似的,如果你需要的话,你也可以直接往你的Arduino程序中添加AVR-C代码。硬件开源并可扩展-Arduino板基于Atmel的ATMEGA8和ATMEGA168/328单片机。Arduino基于CreativeCommons许可 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ,所以有经验的电路设计师能够根据需求设计自己的模块,可以对其扩展或改进。甚至是对于一些相对没有什么经验的用户,也可以通过制作试验板来理解Arduino是怎么工作的,省钱又省事。Arduino基于AVR平台,对AVR库进行了二次编译封装,把端口都打包好了,寄存器啦、地址指针之类的基本不用管。大大降低了软件开发难度,适宜非专业爱好者使用。优点和缺点并存,因为是二次编译封装,代码不如直接使用AVR代码编写精练,代码执行效率与代码体积都弱于AVR直接编译。性能:DigitalI/O数字输入/输出端口0—13。AnalogI/O模拟输入/输出端口0-5。支持ICSP下载,支持TX/RX。输入电压:USB接口供电或者5V-12V外部电源供电。输出电压:支持3.3V级5VDC输出。处理器:使用AtmelAtmega168328处理器,因其支持者众多,已有公司开发出来32位的MCU平台支持arduino。目前arduino的控制板最新的为ArduinoUno,如下图: 国内使用比较多的为ArduinoDuemilanove2009,主要原因是Uno的usb控制芯片封装方式改变,制造成本上升,其他变化不大,性价比还是ArduinoDuemilanove2009比较好。 因其开源特性,生产arduino控制板的厂商众多,同样的Duemilanove2009就有很多种颜色。 对于一些对电路板大小要求比较严格的地方,arduino团队提供了arduinoNano,此板体积做的非常小。如下图:  arduino板子上基本端口如图描述,对几个比较特殊的端口下面详细说明下:VIN端口:VIN是inputvoltage的缩写,表示有外部电源时的输入端口。AREF:Referencevoltagefortheanaloginputs(模拟输入的基准电压)。使用analogReference()命令调用。ICSP:也有称为ISP(InSystemProgrammer),就是一种线上即时烧录,目前比较新的芯片都支持这种烧录模式,包括大家常听说的8051系列的芯片,也都慢慢采用这种简便的烧录方式。我们都知道传统的烧录方式,都是将被烧录的芯片,从线路板上拔起,有的焊死在线路板上的芯片,还得先把芯片焊接下来才能烧录。为了解决这种问题,发明了ICSP线上即时烧录方式。只需要准备一条R232线(连接烧录器),以及一条连接烧录器与烧录芯片针脚的连接线就可以。电源的+5V,GND,两条负责传输烧录信息的针脚,再加上一个烧录电压针脚,这样就可以烧录了。arduino学习笔记2通过Arduino编译器查看串口数据最简单的例子:voidsetup() {   Serial.begin(9600);//打开串口,设置波特率为9600bps}voidloop() {    intval;    val=analogRead(5);//传感器接到模拟口5,数值根据自己的需要可变    Serial.println(val,DEC);//从串口发送字符串并换行         delay(100);}如果电路安装正确,按照示例代码运行、上传,然后点击编译器的SerialMonitor按钮,就可以看到从代码定义的输入口(这儿是模拟口5)获取的数据了。arduino学习笔记3arduinoHYPERLINK"http://www.xici.net/d143561461.htm"\t"_blank"语言Arduino语言是建立在C/C++基础上的,其实也就是基础的C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让我们不了解AVR单片机(微控制器)的朋友也能轻松上手。在与ArduinoDIYER接触的这段时间里,发现有些朋友对Arduino语言还是比较难入手,那么这里我就简单的注释一下Arduino语言(本人也是半罐子水,有错的地方还请各位指正)。/*************基础C语言*************/关键字:HYPERLINK"http://arduino.cc/en/Reference/If"ifHYPERLINK"http://arduino.cc/en/Reference/Else"if...elseHYPERLINK"http://arduino.cc/en/Reference/For"forHYPERLINK"http://arduino.cc/en/Reference/SwitchCase"switchcaseHYPERLINK"http://arduino.cc/en/Reference/While"whileHYPERLINK"http://arduino.cc/en/Reference/DoWhile"do...whileHYPERLINK"http://arduino.cc/en/Reference/Break"breakHYPERLINK"http://arduino.cc/en/Reference/Continue"continueHYPERLINK"http://arduino.cc/en/Reference/Return"returnHYPERLINK"http://arduino.cc/en/Reference/Goto"goto语法符号:HYPERLINK"http://arduino.cc/en/Reference/SemiColon";HYPERLINK"http://arduino.cc/en/Reference/Braces"{}HYPERLINK"http://arduino.cc/en/Reference/Comments"//HYPERLINK"http://arduino.cc/en/Reference/Comments"/**/运算符:=+-*/%HYPERLINK"http://arduino.cc/en/Reference/If"==HYPERLINK"http://arduino.cc/en/Reference/If"!=HYPERLINK"http://arduino.cc/en/Reference/If"<HYPERLINK"http://arduino.cc/en/Reference/If">HYPERLINK"http://arduino.cc/en/Reference/If"<=HYPERLINK"http://arduino.cc/en/Reference/If">=HYPERLINK"http://arduino.cc/en/Reference/Boolean"&&HYPERLINK"http://arduino.cc/en/Reference/Boolean"||HYPERLINK"http://arduino.cc/en/Reference/Boolean"!HYPERLINK"http://arduino.cc/en/Reference/Increment"++HYPERLINK"http://arduino.cc/en/Reference/Increment"--HYPERLINK"http://arduino.cc/en/Reference/IncrementCompound"+=HYPERLINK"http://arduino.cc/en/Reference/IncrementCompound"-=HYPERLINK"http://arduino.cc/en/Reference/IncrementCompound"*=HYPERLINK"http://arduino.cc/en/Reference/IncrementCompound"/=数据类型:HYPERLINK"http://arduino.cc/en/Reference/BooleanVariables"boolean 布尔类型HYPERLINK"http://arduino.cc/en/Reference/Char"charHYPERLINK"http://arduino.cc/en/Reference/Byte"byte 字节类型HYPERLINK"http://arduino.cc/en/Reference/Int"intHYPERLINK"http://arduino.cc/en/Reference/UnsignedInt"unsignedintHYPERLINK"http://arduino.cc/en/Reference/Long"longHYPERLINK"http://arduino.cc/en/Reference/UnsignedLong"unsignedlongHYPERLINK"http://arduino.cc/en/Reference/Float"floatHYPERLINK"http://arduino.cc/en/Reference/Double"doubleHYPERLINK"http://arduino.cc/en/Reference/String"stringHYPERLINK"http://arduino.cc/en/Reference/Array"arrayHYPERLINK"http://arduino.cc/en/Reference/Void"void数据类型转换:HYPERLINK"http://arduino.cc/en/Reference/CharCast"char()HYPERLINK"http://arduino.cc/en/Reference/ByteCast"byte()HYPERLINK"http://arduino.cc/en/Reference/IntCast"int()HYPERLINK"http://arduino.cc/en/Reference/LongCast"long()HYPERLINK"http://arduino.cc/en/Reference/FloatCast"float()常量:HYPERLINK"http://arduino.cc/en/Reference/Constants"HIGH | HYPERLINK"http://arduino.cc/en/Reference/Constants"LOW    表示数字IO口的电平,HYPERLINK"http://arduino.cc/en/Reference/Constants"HIGH 表示高电平(1),HYPERLINK"http://arduino.cc/en/Reference/Constants"LOW 表示低电平(0)。HYPERLINK"http://arduino.cc/en/Reference/Constants"INPUT | HYPERLINK"http://arduino.cc/en/Reference/Constants"OUTPUT 表示数字IO口的方向,HYPERLINK"http://arduino.cc/en/Reference/Constants"INPUT 表示输入(高阻态),HYPERLINK"http://arduino.cc/en/Reference/Constants"OUTPUT  表示输出(AVR能提供5V电压40mA电流)。HYPERLINK"http://arduino.cc/en/Reference/Constants"true | HYPERLINK"http://arduino.cc/en/Reference/Constants"false   HYPERLINK"http://arduino.cc/en/Reference/Constants"true 表示真(1),HYPERLINK"http://arduino.cc/en/Reference/Constants"false表示假(0)。/******************************************/      以上为基础c语言的关键字和符号,有c语言基础的都应该了解其含义,这里也不作过多的解释。/*************Arduino语言*************/结构void HYPERLINK"http://arduino.cc/en/Reference/Setup"setup()   初始化变量,管脚模式,调用库函数等void HYPERLINK"http://arduino.cc/en/Reference/Loop"loop()连续执行函数内的语句功能数字I/OHYPERLINK"http://arduino.cc/en/Reference/PinMode"pinMode(pin,mode)   数字IO口输入输出模式定义函数,pin表示为0~13,mode表示为INPUT或OUTPUT。HYPERLINK"http://arduino.cc/en/Reference/DigitalWrite"digitalWrite(pin,value)  数字IO口输出电平定义函数,pin表示为0~13,value表示为HIGH或LOW。比如定义HIGH可以驱动LED。int HYPERLINK"http://arduino.cc/en/Reference/DigitalRead"digitalRead(pin)   数字IO口读输入电平函数,pin表示为0~13,value表示为HIGH或LOW。比如可以读数字传感器。模拟I/Oint HYPERLINK"http://arduino.cc/en/Reference/AnalogRead"analogRead(pin)   模拟IO口读函数,pin表示为0~5(ArduinoDiecimila为0~5,Arduinonano为0~7)。比如可以读模拟传感器(10位AD,0~5V表示为0~1023)。HYPERLINK"http://arduino.cc/en/Reference/AnalogWrite"analogWrite(pin,value)- PWM    数字IO口PWM输出函数,Arduino数字IO口标注了PWM的IO口可使用该函数,pin表示3,5,6,9,10,11,value表示为0~255。比如可用于电机PWM调速或音乐播放。扩展I/OHYPERLINK"http://arduino.cc/en/Reference/ShiftOut"shiftOut(dataPin,clockPin,bitOrder,value)   SPI外部IO扩展函数,通常使用带SPI接口的74HC595做8个IO扩展,dataPin为数据口,clockPin为时钟口,bitOrder为数据传输方向(MSBFIRST高位在前,LSBFIRST低位在前),value表示所要传送的数据(0~255),另外还需要一个IO口做74HC595的使能控制。unsignedlong HYPERLINK"http://arduino.cc/en/Reference/PulseIn"pulseIn(pin,value)   脉冲长度记录函数,返回时间参数(us),pin表示为0~13,value为HIGH或LOW。比如value为HIGH,那么当pin输入为高电平时,开始计时,当pin输入为低电平时,停止计时,然后返回该时间。时间函数unsignedlong HYPERLINK"http://arduino.cc/en/Reference/Millis"millis()  返回时间函数(单位ms),该函数是指,当程序运行就开始计时并返回记录的参数,该参数溢出大概需要50天时间。HYPERLINK"http://arduino.cc/en/Reference/Delay"delay(ms)   延时函数(单位ms)。HYPERLINK"http://arduino.cc/en/Reference/DelayMicroseconds"delayMicroseconds(us)   延时函数(单位us)。数学函数HYPERLINK"http://arduino.cc/en/Reference/Min"min(x,y)求最小值HYPERLINK"http://arduino.cc/en/Reference/Max"max(x,y)求最大值HYPERLINK"http://arduino.cc/en/Reference/Abs"abs(x)  计算绝对值HYPERLINK"http://arduino.cc/en/Reference/Constrain"constrain(x,a,b)约束函数,下限a,上限b,x必须在ab之间才能返回。HYPERLINK"http://arduino.cc/en/Reference/Map"map(value,fromLow,fromHigh,toLow,toHigh)   约束函数,value必须在fromLow与toLow之间和fromHigh与toHigh之间。HYPERLINK"http://arduino.cc/en/Reference/Pow"pow(base,exponent)开方函数,base的exponent次方。HYPERLINK"http://arduino.cc/en/Reference/Sq"sq(x)    平方HYPERLINK"http://arduino.cc/en/Reference/Sqrt"sqrt(x)  开根号三角函数HYPERLINK"http://arduino.cc/en/Reference/Sin"sin(rad)HYPERLINK"http://arduino.cc/en/Reference/Cos"cos(rad)HYPERLINK"http://arduino.cc/en/Reference/Tan"tan(rad)随机数函数HYPERLINK"http://arduino.cc/en/Reference/RandomSeed"randomSeed(seed)  随机数端口定义函数,seed表示读模拟口analogRead(pin)函数。long HYPERLINK"http://arduino.cc/en/Reference/Random"random(max)  随机数函数,返回数据大于等于0,小于max。long HYPERLINK"http://arduino.cc/en/Reference/Random"random(min,max)  随机数函数,返回数据大于等于min,小于max。外部中断函数HYPERLINK"http://arduino.cc/en/Reference/AttachInterrupt"attachInterrupt(interrupt,,mode)    外部中断只能用到数字IO口2和3,interrupt表示中断口初始0或1,表示一个功能函数,mode:LOW低电平中断,CHANGE有变化就中断,RISING上升沿中断,FALLING 下降沿中断。HYPERLINK"http://arduino.cc/en/Reference/DetachInterrupt"detachInterrupt(interrupt)   中断开关,interrupt=1开,interrupt=0关。中断使能函数HYPERLINK"http://arduino.cc/en/Reference/Interrupts"interrupts()使能中断HYPERLINK"http://arduino.cc/en/Reference/NoInterrupts"noInterrupts()禁止中断串口收发函数HYPERLINK"http://arduino.cc/en/Serial/Begin"Serial.begin(speed)串口定义波特率函数,speed表示波特率,如9600,19200等。int HYPERLINK"http://arduino.cc/en/Serial/Available"Serial.available()判断缓冲器状态。int HYPERLINK"http://arduino.cc/en/Serial/Read"Serial.read()  读串口并返回收到参数。HYPERLINK"http://arduino.cc/en/Serial/Flush"Serial.flush()   清空缓冲器。HYPERLINK"http://arduino.cc/en/Serial/Print"Serial.print(data)串口输出数据。HYPERLINK"http://arduino.cc/en/Serial/Println"Serial.println(data)  串口输出数据并带回车符。/**********************************//************Arduino语言库文件*************/官方库文件HYPERLINK"http://arduino.cc/en/Reference/EEPROM"EEPROM -EEPROM读写程序库HYPERLINK"http://arduino.cc/en/Reference/Ethernet"Ethernet -以太网控制器程序库HYPERLINK"http://arduino.cc/en/Reference/LiquidCrystal"LiquidCrystal - LCD控制程序库HYPERLINK"http://arduino.cc/en/Reference/Servo"Servo -舵机控制程序库HYPERLINK"http://arduino.cc/en/Reference/SoftwareSerial"SoftwareSerial -任何数字IO口模拟串口程序库HYPERLINK"http://arduino.cc/en/Reference/Stepper"Stepper -步进电机控制程序库HYPERLINK"http://arduino.cc/en/Reference/Wire"Wire - TWI/I2C总线程序库HYPERLINK"http://wiring.org.co/reference/libraries/Matrix/index.html"Matrix -LED矩阵控制程序库HYPERLINK"http://wiring.org.co/reference/libraries/Sprite/index.html"Sprite -LED矩阵图象处理控制程序库非官方库文件HYPERLINK"http://www.arduino.cc/playground/Code/DateTime"DateTime -alibraryforkeepingtrackofthecurrentdateandtimeinsoftware.HYPERLINK"http://www.arduino.cc/playground/Code/Debounce"Debounce -forreadingnoisydigitalinputs(e.g.frombuttons)HYPERLINK"http://www.arduino.cc/playground/ComponentLib/Firmata"Firmata -forcommunicatingwithapplicationsonthecomputerusingastandardserialprotocol.HYPERLINK"http://www.arduino.cc/playground/Code/GLCDks0108"GLCD -graphicsroutinesforLCDbasedonthe KS0108 orequivalentchipset.HYPERLINK"http://www.arduino.cc/en/Tutorial/LCDLibrary"LCD -control LCDs (using8datalines)HYPERLINK"http://www.arduino.cc/playground/Code/LCD4BitLibrary"LCD4Bit -control LCDs (using4datalines)HYPERLINK"http://www.arduino.cc/playground/Main/LedControl"LedControl -forcontrollingLEDmatricesorseven-segmentdisplayswitha MAX7221 or MAX7219.HYPERLINK"http://www.wayoda.org/arduino/ledcontrol/index.html"LedControl -analternativetotheMatrixlibraryfordrivingmultiple LEDs withMaximchips.HYPERLINK"http://www.arduino.cc/playground/Code/Messenger"Messenger -forprocessingtext-basedmessagesfromthecomputerHYPERLINK"http://www.arduino.cc/playground/Code/Metro"Metro -helpyoutimeactionsatregularintervalsHYPERLINK"http://www.arduino.cc/playground/Main/MsTimer2"MsTimer2 -usesthetimer2interrupttotriggeranactioneveryNmilliseconds.HYPERLINK"http://www.arduino.cc/playground/Learning/OneWire"OneWire -controldevices(fromDallasSemiconductor)thatusetheOneWireprotocol.HYPERLINK"http://www.arduino.cc/playground/Main/PS2Keyboard"PS2Keyboard -readcharactersfroma PS2 keyboard.HYPERLINK"http://www.arduino.cc/playground/ComponentLib/Servo"Servo -providessoftwaresupportforServomotorsonanypins.HYPERLINK"http://www.arduino.cc/playground/ComponentLib/Servotimer1"Servotimer1 -provideshardwaresupportforServomotorsonpins9and10HYPERLINK"http://www.arduino.cc/playground/Code/SimpleMessageSystem"SimpleMessageSystem -sendmessagesbetweenArduinoandthecomputerHYPERLINK"http://code.google.com/p/sserial2mobile/"SSerial2Mobile -sendtextmessagesoremailsusingacellphone(viaATcommandsoversoftwareserial)HYPERLINK"http://arduino.cc/en/Tutorial/TextString"TextString -handlestringsHYPERLINK"http://www.arduino.cc/playground/Learning/TLC5940"TLC5940 -16channel12bitPWMcontroller.HYPERLINK"http://arduino.cc/en/Tutorial/X10"X10 -SendingX10signalsoverACpowerlines/****************************************/arduino学习笔记4数据类型有多种类型的变量,如下所述boolean  布尔char       字符byte       字节int         整数unsignedint无符号整数long       长整数unsignedlong无符号长整数float       浮点double    双字节浮点string     字符串array      数组arduino学习笔记5Arduuino复合运算符+=,-=,*=,/= Description描述Performamathematicaloperationonavariablewithanotherconstantorvariable.The+=(etal)operatorsarejustaconvenientshorthandfortheexpandedsyntax,listedbelow. 对一个变量和另一个参数或变量完成一个数学运算。+=(以及其他)可以缩短语法长度。Syntax语法x+=y;  //equivalenttotheexpressionx=x+y;         //等价于x=x+y;x-=y;  //equivalenttotheexpressionx=x-y;          //等价于x=x-y;x*=y;  //equivalenttotheexpressionx=x*y;          //等价于x=x*y;x/=y;  //equivalenttotheexpressionx=x/y;          //等价于x=x/y;Parameters参数x:anyvariabletype x:任何变量类型y:anyvariabletypeorconstant y:任何变量类型或常数Examples范例x=2;x+=4;     //xnowcontains6            //x现在为6x-=3;     //xnowcontains3            //x现在为3x*=10;    //xnowcontains30            //x现在为30x/=2;     //xnowcontains15            //x现在为15Syntax语法x++;//incrementxbyoneandreturnstheoldvalueofx     //将x的值加1并返回原来的x的值。   ++x;//incrementxbyoneandreturnsthenewvalueofx     //将x的值加1并返回现在的x的值。   x--;  //decrementxbyoneandreturnstheoldvalueofx      //将x的值减1并返回原来的x的值。   --x;  //decrementxbyoneandreturnsthenewvalueofx       //将x的值减1并返回现在的x的值。Parameters参数x:anintegerorlong(possiblyunsigned) x:一个整数或长整数(可以无符号)Returns返回Theoriginalornewlyincremented/decrementedvalueofthevariable. 返回变量原始值或增加/消耗后的新值。Examples范例x=2;y=++x;     //xnowcontains3,ycontains3             //x现在为3,y为3y=x--;     //xcontains2again,ystillcontains3             //x现在仍然为2,y将为3arduino学习笔记6Arduino基础在学语言之间,还要做的一个功课就是要明白程序的构架,这个也同样简单,大体可分为几个部分。1、声明变量及接口名称(intval;intledPin=13;)。2、setup()——函数在程序开始时使用,可以初始化变量、接口模式、启用库等(例如:pinMode(ledPin,OUTUPT);)。3、loop()——在setup()函数之后,即初始化之后,loop()让你的程序循环地被执行。使用它来运转Arduino。接下来就开始学习一下几个基本函数。1、pinMode(接口名称,OUTPUT或INPUT)将——接口定义为输入或输出接口,用在setup()函数里。2、digitalWrite(接口名称,HIGH或LOW)——将数字接口值至高或低。3、digitalRead(接口名称)——读出数字接口的值。4、analogWrite(接口名称,数值)——给一个接口写入模拟值(PWM波)。对于ATmega168芯片的Arduino(包括Mini或BT),该函数可以工作于3,5,6,9,10和11号接口。老的ATmega8芯片的USB和serialArduino仅仅支持9,10和11号接口。5、analogRead(接口名称)——从指定的模拟接口读取值,Arduino对该模拟值进行10-bit的数字转换,这个方法将输入的0-5电压值转换为0到1023间的整数值。6、delay()——延时一段时间,delay(1000)为一秒。7、Serial.begin(波特率)——设置串行每秒传输数据的速率(波特率)。在同计算机通讯时,使用下面这些值:300,1200,2400,4800,9600,14400,19200,28800,38400,57600或115200。你也可以在任何时候使用其它的值,比如,与0号或1号插口通信就要求特殊的波特率。用在setup()函数里8、Serial.read()——读取持续输入的数据。9、Serial.print(数据,数据的进制)——从串行端口输出数据。Serial.print(数据)默认为十进制等于Serial.print(数据,DEC)。10、Serial.println(数据,数据的进制)——从串行端口输出数据,跟随一个回车和一个换行符。这个函数所取得的值与Serial.print()一样。以上几个函数是常用基本函数,还有很多以后会慢慢学习arduino学习笔记7函数输入输出函数Arduino内含了一些处理输出与输入的切换功能,相信已经从 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 中程式范例略知一二。pinMode(pin,mode)将数位脚位(digitalpin)指定为输入或输出。范例:pinMode(7,INPUT);//将脚位7设定为输入模式digitalWrite(pin,value)将数位脚位指定为开或关。脚位必须先透过pinMode明示为输入或输出模式digitalWrite才能生效。范例:digitalWrite(8,HIGH);//将脚位8设定输出高电位intdigitalRead(pin)将输入脚位的值读出,当感测到脚位处于高电位时时回传HIGH,否则回传LOW。范例:val=digitalRead(7);//读出脚位7的值并指定给valintanalogRead(pin)读出类比脚位的电压并回传一个0到1023的数值表示相对应的0到5的电压值。范例:val=analogRead(0);//读出类比脚位0的值并指定给val变数analogWrite(pin,value)改变PWM脚位的输出电压值,脚位通常会在3、5、6、9、10与11。Value变数范围0-255,例如:输出电压2.5伏特(V),该值大约是128。范例:analogWrite(9,128);//输出电压约2.5伏特(V)unsignedlongpulseIn(pin,value)设定读取脚位状态的持续时间,例如使用红外线、加速度感测器测得某一项数值时,在时间单位内不会改变状态。范例:time=pulsein(7,HIGH);//设定脚位7的状态在时间单位内保持为HIGHshiftOut(dataPin,clockPin,bitOrder,value)把资料传给用来延伸数位输出的暂存器,函式使用一个脚位表示资料、一个脚位表示时脉。bitOrder用来表示位元间移动的方式(LSBFIRST最低有效位元或是MSBFIRST最高有效位元),最后value会以byte形式输出。此函式通常使用在延伸数位的输出。范例:shiftOut(dataPin,clockPin,LSBFIRST,255);时间函数控制与计算晶片执行期间的时间unsignedlongmillis()回传晶片开始执行到目前的毫秒范例:duration=millis()-lastTime;//表示自"lastTime"至当下的时间delay(ms)暂停晶片执行多少毫秒范例:delay(500);//暂停半秒(500毫秒)delayMicroseconds(us)暂停晶片执行多少微秒范例:delayMicroseconds(1000);//暂停1豪秒数学函式三角函数以及基本的数学运算min(x,y)回传两数之间较小者范例:val=min(10,20);//回传10max(x,y)回传两数之间较大者范例:val=max(10,20);//回传20abs(x)回传该数的绝对值,可以将负数转正数。范例:val=abs(-5);//回传5constrain(x,a,b)判断x变数位于a与b之间的状态。x若小于a回传a;介于a与b之间回传x本身;大于b回传b范例:val=constrain(analogRead(0),0,255);//忽略大于255的数map(value,fromLow,fromHigh,toLow,toHigh)将value变数依照fromLow与fromHigh范围,对等转换至toLow与toHigh范围。时常使用于读取类比讯号,转换至程式所需要的范围值。例如:val=map(analogRead(0),0,1023,100,200);//将analog0所读取到的讯号对等转换至100–200之间的数值。doublepow(base,exponent)回传一个数(base)的指数(exponent)值。范例:doublex=pow(y,32);//设定x为y的32次方doublesqrt(x)回传double型态的取平方根值。范例:doublea=sqrt(1138);//回传1138平方根的近似值33.73425674438doublesin(rad)回传角度(radians)的三角函数sine值。范例:doublesine=sin(2);//近似值0.90929737091doublecos(rad)回传角度(radians)的三角函数cosine值。范例:doublecosine=cos(2);//近似值-0.41614685058doubletan(rad)回传角度(radians)的三角函数tangent值。范例:doubletangent=tan(2);//近似值-2.18503975868乱数函式产生乱数randomSeed(seed)事实上在Arduino里的乱数是可以被预知的。所以如果需要一个真正的乱数,可以呼叫此函式重新设定产生乱数种子。你可以使用乱数当作乱数的种子,以确保数字以随机的方式出现,通常会使用类比输入当作乱数种子,藉此可以产生与环境有关的乱数(例如:无线电波、宇宙雷射线、电话和萤光灯发出的电磁波等)。范例:randomSeed(analogRead(5));//使用类比输入当作乱数种子longrandom(max)longrandom(min,max)回传指定区间的乱数,型态为long。如果没有指定最小值,预设为0。范例:longrandnum=random(0,100);//回传0–99之间的数字longrandnum=random(11);  //回传0-10之间的数字序列通讯你可以在第五章看见一些使用序列埠与电脑交换讯息的范例,以下是函式解释。Serial.begin(speed)你可以指定Arduino从电脑交换讯息的速率,通常我们使用9600bps。当然也可以使用其他的速度,但是通常不会超过115,200bps(每秒位元组)。范例:Serial.begin(9600);Serial.print(data)Serial.print(data,encoding)经序列埠传送资料,提供编码方式的选项。如果没有指定,预设以一般文字传送。范例:Serial.print(75);   //列印出"75"Serial.print(75,DEC);//列印出"75"Serial.print(75,HEX);//"4B"(75的十六进位)Serial.print(75,OCT);//"113"(75in的八进位)Serial.print(75,BIN);//"1001011"(75的二进位)Serial.print(75,BYTE);//"K"(以byte进行传送,显示以ASCII编码方式)Serial.println(data)Serial.println(data,encoding)与Serial.print()相同,但会在资料尾端加上换行字元()。意思如同你在键盘上打了一些资料后按下Enter。范例:Serial.println(75);   //列印出"75"Serial.println(75,DEC);//列印出"75"Serial.println(75,HEX);//"4B"Serial.println(75,OCT);//"113"Serial.println(75,BIN);//"1001011"Serial.println(75,BYTE);//"K"intSerial.available()回传有多少位元组(bytes)的资料尚未被read()函式读取,如果回传值是0代表所有序列埠上资料都已经被read()函式读取。范例:intcount=Serial.available();intSerial.read()读取1byte的序列资料范例:intdata=Serial.read();Serial.flush()有时候因为资料速度太快,超过程式处理资料的速度,你可以使用此函式清除缓冲区内的资料。经过此函式可以确保缓冲区(buffer)内的资料都是最新的。范例:Serial.flush();arduino学习笔记8数字输入在数字电路中开关(switch)是一种基本的输入形式,它的作用是保持电路的连接或者断开。Arduino从数字I/O管脚上只能读出高电平(5V)或者低电平(0V),因此我们首先面临到的一个问题就是如何将开关的开/断状态转变成Arduino能够读取的高/低电平。解决的办法是通过上/下拉电阻,按照电路的不同通常又可以分为正逻辑(PositiveLogic)和负逻辑(InvertedLogic)两
本文档为【arduino学习笔记】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
夕夕资料
拥有专业强大的教研实力和完善的师资团队,专注为用户提供合同简历、论文写作、PPT设计、计划书、策划案、各类模板等,同时素材和资料部分来自网络,仅供参考.
格式:doc
大小:8MB
软件:Word
页数:0
分类:管理学
上传时间:2021-06-22
浏览量:3