《ARDUINO教程》PPT课件_第1页
《ARDUINO教程》PPT课件_第2页
《ARDUINO教程》PPT课件_第3页
《ARDUINO教程》PPT课件_第4页
《ARDUINO教程》PPT课件_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Arduino基础教程基本函数的使用,一、数字I/O口的操作函数,1、pinMode(pin,mode);2、digitalWrite(pin,value);3、digitalRead(pin);,1、pinMode(pin,mode),pinMode函数用以配置引脚与输出或输入模式,它是一个无返回值函数。函数有两个参数,pin和mode。Pin参数表示要配置的引脚,mode参数表示设置的参数INPUT(输入)和OUTPUT(输出)。INPUT参数用于读取信号,OUTPUT用于输出控制信号。,PIN的范围是数字引脚013,也可以把模拟引脚(A0A5)作为数字引脚使用,此时编号为14脚对应模拟引脚0,19脚对应模拟引脚5.一般会放在setup里,先设置再使用,2、digitalWrite(pin,value),该函数的作用是设置引脚的输出电压为高电平或低电平。该函数也是一个无返回值的函数。Pin参数表示所要设置的引脚,value参数表示输出的电压HIGH(高电平)或LOW(低电平)。注意:使用前必须先用pinMode设置。,3、digitalRead(pin),该函数在引脚设置为输入的情况下,可以获取引脚的电压情况HIGH(高电平)或者LOW第电平。,例程,intbutton=9;/设置第9脚为按钮输入引脚intLED=13;/设置第13脚为LED输出引脚,内部连上板上的LED灯。voidsetup()pinMode(button,INPUT);/设置为输入pinMode(LED,OUTPUT);/设置为输出voidloop()if(digitalRead(button)=LOW)/如果读取高电平digitalWrite(LED,HIGH);/13脚输出高电平elsedigitalWrite(LED,LOW);/否则输出低电平,二、模拟I/O口的操作函数,1、analogReference(type);2、analogRead(pin);3、analogWrite(pin,value);,1、analogReference(type),该函数用于配置模拟引脚的参考电压。有3种类型。DEFAULT:默认值,参考电压是5V.INTERNAL:低电压模式,使用片内基准电压源2.56VEXTERNAL:扩展模式,通过AREF引脚获取参考电压。注意:不使用本函数的话,默认是参考电压5V。使用AREF接参考电压,需接个5K欧的上拉电阻。,2、analogRead(pin),用于读取引脚的模拟量电压值,每读取一次需要花100US的时间。参数pin表示所要获取模拟量电压值的引脚,返回为int型。精度10位,返回值从01023。注意:函数参数的pin范围是05,对应板上的模拟口A0A5。,3、analogWrite(pin,value),该函数是通过PWM的方式在引脚上输出一个模拟量。,PWMPulse-WidthModulation脉冲宽度调制,PWM输出的一般形式:,主要用于LED亮度控制,电机转速控制等方面。Arduino中的PWM的频率大约为490HZ。UNO板上支持以下数字引脚(不是模拟输入引脚)作为PWM模拟输出:3、5、6、9、10、11.板上带PWM输出的都有号。注意:PWM输出位数为8位,从0255,例程,intsensor=A0;/A0引脚读取电位器intLED=11;/第11引脚输出LEDvoidsetup()Serial.begin(9600);voidloop()intv;v=analogRead(sensor);Serial.println(v,DEC);/可以观察读取的模拟量analogWrite(LED,v/4);/读回的值范围是01023结果除以4才能得到0255的区间值,三、高级I/O,Pulseln(pin,state,timeout)该函数用于读取引脚脉冲的时间长度,脉冲可以是HIGH或者LOW。如果是HIGH,函数将先等引脚变为高电平,然后开始计时,一直到变为低电平。返回脉冲持续的时间长度,单位为ms.如果超时没有读到的话,返回0.,例程说明:,做一个按钮脉冲计时器,测一下按钮的时间,测测谁的反应快,看谁能按出最短的时间。按钮接第3脚,intbutton=3;intcount;voidsetup()pinMode(button,INPUT);voidloop()count=pulseIn(button,HIGH);if(count!=0)Serial.println(count,DEC);count=0;,四、时间函数,1、delay(ms);2、delayMicroseconds(us);3、millis();4、micros();,1、delay(ms);,延时函数,参数是延时的时长,单位是ms(毫秒)。,例程跑马灯,voidsetup()pinMode(6,OUTPUT);/定义为输出pinMode(7,OUTPUT);pinMode(8,OUTPUT);pinMode(9,OUTPUT);voidloop()inti;for(i=6;i10000)/如果延时超过10秒,点亮LEDdigitalWrite(LED,HIGH);elsedigitalWrite(LED,LOW);,4、micros(),该函数返回开机到现在运行的微秒值。返回值是unsignedlong.70分钟溢出。1000微秒=1毫秒,例程原理,连续按按钮,看你的反应有多快。按钮接D3;从第2按开始,每按一次会减去上一次按的时间,看你连续按的间隔时间有多快。,例程显示当前的微秒值,unsignedlongtime;voidsetup()Serial.begin(9600);voidloop()Serial.print(Time:);time=micros();/读取当前的微秒值Serial.println(time);/打印开机到目前运行的微秒值datadelay(1000);/延时1秒,例程跑马灯,intLED=13;unsignedlongi,j;voidsetup()pinMode(LED,OUTPUT);i=micros();/读入初始值voidloop()j=micros();/不断读入当前时间值if(j-i)1000000)/如果延时超过10秒,点亮LEDdigitalWrite(LED1+k,HIGH);elsedigitalWrite(LED,LOW);,五、中断函数,1、attachInterrupt(interrput,function,mode);2、detachInterrupt(interrput);,日常生活中的中断,你在看书,电话铃响,于是你在书上做上记号,去接电话,与对方通话;门铃响了,有人敲门,你让打电话的对方稍等一下,你去开门,并在门旁与来访者交谈,谈话结束,关好门;回到电话机旁,继续通话,接完电话后再回来从做记号的地方接着看书。,接电话,与来访者交谈,电话铃响,敲门声,看书,接电话,中断的概念,单片机中的中断概念,中断由于某一随机事件的发生,计算机暂停原程序的运行,转去执行另一程序(随机事件),处理完毕后又自动返回原程序继续运行。中断源引起中断的原因,或能发生中断申请的来源。主程序计算机现行运行的程序。中断服务子程序处理突发事件的程序。,1、attachInterrupt(interrput,function,mode);,该函数用于设置外部中断,函数有3个参数,分别表示中断源,中断处理函数和触发模式。中断源可选0或者1,对应2或者3号数字引脚。中断处理函数是一段子程序,当中断发生时执行该子程序部分。触发模式有四种类型,LOW(低电平触发)、CHANGE(变化时触发)、RISING(低电平变为高电平触发)、FALLING(高电平变为低电平触发),例程原理,数字D2口接按钮开关,D4口接LED灯1(红色)。D5口接LED2(绿色)。在例程中,LED3每秒闪烁一次。使用中断0来控制LED1,中断1来控制LED2。按下按钮,马上响应中断,由于中断响应速度快,LED3不受影响,继续闪烁。比查询的效率要高。尝试4个参数,例程1试验LOW,CHANGE参数,例程2试验RISING和FALLING参数。,volatileintstate1=LOW,state2=LOW;intLED1=4;intLED2=5;intLED3=13;/使用板载的LED灯voidsetup()pinMode(LED1,OUTPUT);pinMode(LED2,OUTPUT);pinMode(LED3,OUTPUT);attachInterrupt(0,LED1_Change,LOW);/低电平触发attachInterrupt(1,LED2_Change,CHANGE);/任意电平变化触发voidloop()digitalWrite(LED3,HIGH);delay(500);digitalWrite(LED3,LOW);delay(500);voidLED1_Change()state1=!state1;digitalWrite(LED1,state1);delay(100);voidLED2_Change()state2=!state2;digitalWrite(LED2,state2);delay(100);,volatileintstate1=LOW,state2=LOW;intLED1=4;intLED2=5;intLED3=13;voidsetup()pinMode(LED1,OUTPUT);pinMode(LED2,OUTPUT);pinMode(LED3,OUTPUT);attachInterrupt(0,LED1_Change,RISING);/电平上升沿触发attachInterrupt(1,LED2_Change,FALLING);/电平下降沿触发voidloop()digitalWrite(LED3,HIGH);delay(500);digitalWrite(LED3,LOW);delay(500);voidLED1_Change()state1=!state1;digitalWrite(LED1,state1);delay(100);voidLED2_Change()state2=!state2;digitalWrite(LED2,state2);delay(100);,2、detachInterrupt(interrput);,该函数用于取消中断,参数interrupt表示所要取消的中断源。,六、串口通讯函数,1、Serial.begin();2、Serial.available();3、Serial.read();4、Serial.print();5、Serial.println();,串口概述,串行接口SerialInterface是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信.,串口的出现是在1980年前后,数据传输率是115kbps230kbps。串口出现的初期是为了实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备。由于串口(COM)不支持热插拔及传输速率较低目前部分新主板和大部分便携电脑已开始取消该接口,目前串口多用于工控和测量设备以及部分通信设备中。,串口的应用,应用举例:各种传感器采集装置,GPS信号采集装置,多个单片机通讯系统,门禁刷卡系统的数据传输,机械手控制、操纵面板控制电机等等。广泛应用于低速数据传输的工程应用。,1、Serial.begin();,该函数用于设置串口的波特率。一般的波特率有9600,19200,57600,115200等。波特率是指每秒传输的比特数。除以8可以得到每秒传输的字节数。示范:Serial.begin(57600);,2、Serial.available();,该函数用来判断串口是否收到数据,函数的返回值为int型,不带参数。,3、Serial.read();,将串口数据读入。该函数不带参数,返回值为串口数据,int型。,4、Serial.print();,该函数往串口发数据。可以发变量,也可以发字符串。例句1:Serial.print(“todayisgood”);例句2:Serial.print(x,DEC);以10进制发送x例句3:Serial.print(x,HEX);以16进制发送变量x.,5、Serial.println();,该函数与Serial.print()类似,只是多了换行功能。,例程:,intx=0;voidsetup()Serial.begin(9600);/波特率9600voidloop()if(Serial.available()x=Se

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论