ARDUINO教程第二讲课稿

上传人:cel****303 文档编号:243783278 上传时间:2024-09-30 格式:PPT 页数:52 大小:152KB
返回 下载 相关 举报
ARDUINO教程第二讲课稿_第1页
第1页 / 共52页
ARDUINO教程第二讲课稿_第2页
第2页 / 共52页
ARDUINO教程第二讲课稿_第3页
第3页 / 共52页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,ARDUINO教程第二讲课稿,Arduino语言,Arduino语言是建立在C/C+根底上的,其实也就是根底的C语言,Arduino语言只不过把AVR单片机微控制器相关的一些参数设置都函数化,不用我们去了解他的底层,让我们不了解AVR单片机微控制器的朋友也能轻松上手。,Arduino语言,关键字:,if,if.else,for,switch,Case,while do,. while,break continue return,goto,Arduino语言,语法符号:,;,/,/*/,运算符,:,=,+,-,*,/,%,Arduino语言,数据类型:,boolean布尔类型,char,byte字节类型,int,unsigned int,long,unsigned long,float,double,string,array,void,数据类型转换:,char(),byte(),int(),long(),float(),Arduino语言,常量:,HIGH|LOW 表示数字IO口的电平,HIGH表示高电平1,LOW表示低电平0。,INPUT|OUTPUT表示数字IO口的方向,INPUT表示输入高阻态,OUTPUT 表示输出AVR能提供5V电压 40mA电流。,true|falsetrue表示真1,false表示假0。,Arduino语言,/*Arduino 语言*/,构造,voidsetup()初始化变量,管脚模式,调用库函数等,voidloop() 连续执行函数内的语句,一、数字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第电平。,例程,int button=9; /设置第9脚为按钮输入引脚,int LED=13; /设置第13脚为LED输出引脚,内部连上板上的LED灯。,void setup(), pinMode(button,INPUT); /设置为输入,pinMode(LED,OUTPUT); /设置为输出,void loop(), if(digitalRead(button)=LOW) /如果读取低电平,digitalWrite(LED,HIGH); /13脚输出高电平,else,digitalWrite(LED,LOW); /否那么输出低电平,二、模拟I/O口的操作函数,1、analogReference(type);,2、analogRead(pin);,3、analogWrite(pin,value);,1、analogReference(type),该函数用于配置模拟引脚的参考电压。有3种类型。,DEFAULT:默认值,参考电压是5V.,EXTERNAL:扩展模式,通过AREF引脚获取参考电压。,注意:不使用本函数的话,默认是参考电压5V。使用AREF接参考电压,需接个5K欧的上拉电阻。,2、analogRead(pin),用于读取引脚的模拟量电压值,每读取一次需要花100US的时间。参数pin表示所要获取模拟量电压值的引脚,返回为int型。精度10位,返回值从01023。,注意:函数参数的pin范围是05,对应板上的模拟口A0A5。,3、analogWrite(pin,value),该函数是通过PWM的方式在引脚上输出一个模拟量。,PWMPulse-Width Modulation脉冲宽度调制,PWM输出的一般形式:,主要用于LED亮度控制,电机转速控制等方面。,Arduino中的PWM的频率大约为490HZ。,UNO板上支持以下数字引脚不是模拟输入引脚作为PWM模拟输出:3、5、6、9、10、11. 板上带PWM输出的都有号。,注意:PWM输出位数为8位,从0255,例程,int sensor=A0; /A0引脚读取电位器,int LED=11; /第11引脚输出LED,void setup(), Serial.begin(9600);,void loop(), int v;,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脚,int button=3;,int count;,void setup(),pinMode(button,INPUT);,void loop(), 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(毫秒。,例程跑马灯,void setup(),pinMode(6,OUTPUT); /定义为输出,pinMode(7,OUTPUT);,pinMode(8,OUTPUT);,pinMode(9,OUTPUT);,void loop(), int i;,for(i=6;i10000) /如果延时超过10秒,点亮LED,digitalWrite(LED,HIGH);,else digitalWrite(LED,LOW);,4、micros(),该函数返回开机到现在运行的微秒值。返回值是unsigned long .70分钟溢出。,1000微秒=1毫秒,例程原理,连续按按钮,看你的反响有多快。,按钮接D3;从第2按开场,每按一次会减去上一次按的时间,看你连续按的间隔时间有多快。,例程显示当前的微秒值,unsigned long time;,void setup(), Serial.begin(9600);,void loop(), Serial.print(Time: );,time = micros(); /读取当前的微秒值,Serial.println(time); / 打印开机到目前运行的微秒值,data delay(1000); /延时1秒,例程跑马灯,int LED=13;,unsigned long i,j;,void setup(),pinMode(LED,OUTPUT);,i=micros(); /读入初始值,void loop(), j=micros(); /不断读入当前时间值,if(j-i)1000000) /如果延时超过10秒,点亮LED,digitalWrite(LED1+k,HIGH);,else digitalWrite(LED,LOW);,五、中断函数,1、attachInterrupt(interrput,function,mode);,2、detachInterrupt(interrput);,日常生活中的中断,你在看书, 铃响,于是你在书上做上记号,去接 ,与对方通话;门铃响了,有人敲门,你让打 的对方稍等一下,你去开门,并在门旁与来访者交谈,谈话完毕,关好门;回到 机旁,继续通话,接完 后再回来从做记号的地方接着看书。,看 书,接,与来访者交谈,铃响,敲门声,看 书,接,中断的概念,单片机中的中断概念,中断由于某一随机事件的发生,计算机暂停原程序的运行,转去执行另一程序随机事件,处理完毕后又自动返回原程序继续运行。,中断源引起中断的原因,或能发生中断申请的来源。,主程序计算机现行运行的程序。,中断效劳子程序处理突发事件的程序。,主程序,主程序,中断服务程序1,中断服务程序1,中断服务程序2,随机事件1,随机事件2,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参数。,volatile int state1=LOW,state2=LOW;,int LED1=4;,int LED2=5;,int LED3=13; /使用板载的LED灯,void setup(), pinMode(LED1,OUTPUT);,pinMode(LED2,OUTPUT);,pinMode(LED3,OUTPUT);,attachInterrupt(0,LED1_Change,LOW); /低电平触发,attachInterrupt(1,LED2_Change,CHANGE); /任意电平变化触发,void loop(), digitalWrite(LED3,HIGH);,delay(500);,digitalWrite(LED3,LOW);,delay(500);,void LED1_Change(), state1=!state1;,digitalWrite(LED1,state1);,delay(100);,void LED2_Change(), state2=!state2;,digitalWrite(LED2,state2);,delay(100);,volatile int state1=LOW,state2=LOW;,int LED1=4;,int LED2=5;,int LED3=13;,void setup(), pinMode(LED1,OUTPUT);,pinMode(LED2,OUTPUT);,pinMode(LED3,OUTPUT);,attachInterrupt(0,LED1_Change,RISING); /电平上升沿触发,attachInterrupt(1,LED2_Change,FALLING); /电平下降沿触发,void loop(), digitalWrite(LED3,HIGH);,delay(500);,digitalWrite(LED3,LOW);,delay(500);,void LED1_Change(), state1=!state1;,digitalWrite(LED1,state1);,delay(100);,void LED2_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();,串口概述,串行接口Serial Interface是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信.,串口的出现是在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(“today is good);,例句2:Serial.print(x,DEC); 以10进制发送x,例句3: Serial.print(x,HEX); 以16进制发送变量x.,5、Serial.println();,该函数与Serial.print类似,只是多了换行功能。,例程:,int x=0;,void setup(), Serial.begin(9600); /波特率9600,void loop(),if(Serial.available(), x=Serial.read();,Serial.print(I have received:);,Serial.println(x,DEC); /输出并换行,delay(200);,七、数学库,1、min(x,y); 求两者最小值,2、max(x,y); 求两者最大值,3、abs(x); 求绝对值,4、sin(rad); 求正弦值,5、cos(rad); 求余弦值,6、tan(rad); 求正切值,7、random(small,big); 求两者之间的随机数,7、random(small,big);,返回值为long,举例:,long x;,x=random(0,100);,可以生成从0到100以内的整数,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!