ARDUINO教程第二讲课稿
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、analogReference(type)
该函数用于配置模拟引脚的参考电压。有3种 类型。
DEFAULT:默认值,参考电压是5V. INTERNAL:低电压模式,使用片内基准电压
源2.56V EXTERNAL:扩展模式,通过AREF引脚获取参
考电压。 注意:不使用本函数的话,默认是参考电压
CHANGE(变化时触发)、RISING(低电平 变为高电平触发)、FALLING(高电平变为低 电平触发)
例程原理
数字D2口接按钮开关,D4口接LED灯1(红 色)。D5口接LED2(绿色)。
在例程中,LED3每秒闪烁一次。使用中断0 来控制LED1,中断1来控制LED2。
按下按钮,马上响应中断,由于中断响应速 度快,LED3不受影响,继续闪烁。比查询的 效率要高。
int LED=13; //设置第13脚为LED输出引脚,内部连 上板上的LED灯。
void setup()
{ pinMode(button,INPUT); //设置为输入
pinMode(LED,OUTPUT); //设置为输出
}
void loop()
{ if(digitalRead(button)==LOW) //如果读取低电平
3、analogWrite(pin,value)
该函数是通过PWM的方式在引脚上输 出一个模拟量。
PWM——Pulse-Width Modulation——脉冲宽度调制 PWM输出的一般形式:
主要用于LED亮度控制,电机转速控制 等方面。
Arduino中的PWM的频率大约为490HZ。
UNO板上支持以下数字引脚(不是模拟 输入引脚)作为PWM模拟输出:3、5、 6、9、10、11. 板上带PWM输出的都有 ~号。
例程说明:
做一个按钮脉冲计时器,测一下按钮的 时间,测测谁的反应快,看谁能按出最 短的时间。
按钮接第3脚
int button=3;
int count;
void setup()
{pinMode(button,INPUT);
}
void loop()
{ count=pulseIn(button,HIGH);
注意:PWM输出位数为8位,从0~255
例程
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); //读回的值范围是0~1023结果除以4才
能得到0~255的区间值 }
三、高级I/O
Pulseln(pin,state,timeout) 该函数用于读取引脚脉冲的时间长度,
脉冲可以是HIGH或者LOW。如果是 HIGH,函数将先等引脚变为高电平,然 后开始计时,一直到变为低电平。 返回脉冲持续的时间长度,单位为ms. 如果超时没有读到的话,返回0.
INPUT参数用于读取信号,OUTPUT用 于输出控制信号。
PIN的范围是数字引脚0~13,也可以把 模拟引脚(A0~A5)作为数字引脚使用, 此时编号为14脚对应模拟引脚0,19脚对 应模拟引脚5.
一般会放在setup里,先设置再使用
2、digitalWrite(pin,value)
该函数的作用是设置引脚的输出电压为 高电平或低电平。该函数也是一个无返 回值的函数。
程
发事件的程序。
序
1
1、attachInterrupt(interrput,function,mode);
该函数用于设置外部中断,函数有3个参数, 分别表示中断源,中断处理函数和触发模式。
中断源可选0或者1,对应2或者3号数字引脚。 中断ห้องสมุดไป่ตู้理函数是一段子程序,当中断发生时
执行该子程序部分。 触发模式有四种类型,LOW(低电平触发)、
Pin参数表示所要设置的引脚,value参 数表示输出的电压HIGH(高电平)或 LOW(低电平)。
注意:使用前必须先用pinMode设置。
3、digitalRead(pin)
该函数在引脚设置为输入的情况下,可 以获取引脚的电压情况HIGH(高电平) 或者LOW第电平。
例程
int button=9; //设置第9脚为按钮输入引脚
1、pinMode(pin,mode); 2、digitalWrite(pin,value); 3、digitalRead(pin);
1、pinMode(pin,mode)
pinMode函数用以配置引脚与输出或输 入模式,它是一个无返回值函数。函数 有两个参数,pin和mode。Pin参数表示 要配置的引脚,mode参数表示设置的 参数INPUT(输入)和OUTPUT(输 出)。
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秒 }
5V。使用AREF接参考电压,需接个5K欧的 上拉电阻。
2、analogRead(pin)
用于读取引脚的模拟量电压值,每读取 一次需要花100US的时间。参数pin表 示所要获取模拟量电压值的引脚,返回 为int型。精度10位,返回值从0~1023。
注意:函数参数的pin范围是0~5,对应 板上的模拟口A0~A5。
2、delayMicroseconds(us);
延时函数,参数是延时的时长,单位是 us(微秒)。1ms=1000us.
该函数可以产生更短的延时。
3、millis()
应用该函数,可以获取单片机通电到现 在运行的时间长度,单位是ms.系统最 长的记录时间为9小时22分,超出从0开 始。返回值是unsigned long型。
true | false true 表示真(1),false表示假 (0)。
Arduino语言
/*************Arduino 语言*************/ 结构 void setup() 初始化变量,管脚模式,调用库函数等 void loop() 连续执行函数内的语句
一、数字I/O口的操作函数
Arduino基础教程 ——基本函数的使用
Arduino语言
Arduino语言是建立在C/C++基础上的,其实也就 是基础的C语言,Arduino语言只不过把AVR单片机 (微控制器)相关的一些参数设置都函数化,不用我 们去了解他的底层,让我们不了解AVR单片机(微控 制器)的朋友也能轻松上手。
Arduino语言
数据类型转 换:
char() byte() int() long() float()
Arduino语言
常量: HIGH | LOW 表示数字IO口的电平,
HIGH 表示高电平(1),LOW 表示低电平(0)。
INPUT | OUTPUT 表示数字IO口的方向, INPUT 表示输入(高阻态),OUTPUT 表示输出 (AVR能提供5V电压 40mA电流)。
主 程 序
单片机中的中断概念
中断——由于某一随机事件
中
的发生,计算机暂停原程序
断 服
的运行,转去执行另一程序
务 程
(随机事件),处理完毕后
序 1
又自动返回原程序继续运行。
中 断
中断源——引起中断的原因,
服 或能发生中断申请的来源。
务
程 序
主程序——计算机现行运行
中
2
的程序。
断
服 务
中断服务子程序——处理突
例程——跑马灯
int LED=13;
unsigned long i,j;
void setup()
{pinMode(LED,OUTPUT);
i=micros(); //读入初始值
}
void loop()
{ j=micros(); //不断读入当前时间值
if((j-i)>1000000) //如果延时超过10秒,点亮LED
例程——跑马灯
void setup() { pinMode(6,OUTPUT); //定义为输出 pinMode(7,OUTPUT); pinMode(8,OUTPUT); pinMode(9,OUTPUT);
} void loop() { int i; for(i=6;i<=9;i++) //依次循环四盏灯 {digitalWrite(i,HIGH); //点亮LED delay(1000); //持续1秒 digitalWrite(i,LOW); //熄灭LED delay(1000); //持续1秒 } }
}
void loop()
{ j=millis(); //不断读入当前时间值
if((j-i)>10000) //如果延时超过10秒,点亮LED
{digitalWrite(LED,HIGH);
}
else digitalWrite(LED,LOW);
}
4、micros()
该函数返回开机到现在运行的微秒值。 返回值是unsigned long .70分钟溢出。
关键字: 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
该函数适合作为定时器使用,不影响单 片机的其他工作。(使用delay函数期 间无法做其他工作。)
1000毫秒=1秒
例程——延时10秒后自动点亮的灯
int LED=13;
unsigned long i,j;
void setup()
{pinMode(LED,OUTPUT);
i=millis(); //读入初始值
digitalWrite(LED,HIGH); //13脚输出高电平
else
digitalWrite(LED,LOW); //否则输出低电平
}
二、模拟I/O口的操作函数
1、analogReference(type); 2、analogRead(pin); 3、analogWrite(pin,value);
{digitalWrite(LED1+k,HIGH);
}
else digitalWrite(LED,LOW);
}
五、中断函数
1、attachInterrupt(interrput,function,mode); 2、detachInterrupt(interrput);
中断的概念
看
日常生活中的中断
if(count!=0)
{ Serial.println(count,DEC);
count=0;
}
}
四、时间函数
1、delay(ms); 2、delayMicroseconds(us); 3、millis(); 4、micros();
1、delay(ms);
延时函数,参数是延时的时长,单位是 ms(毫秒)。
尝试4个参数,例程1试验LOW,CHANGE参 数,例程2试验RISING和FALLING参数。
volatile int state1=LOW,state2=LOW;
书
接
电 话
你在看书,电话铃响,
电话铃响
与 来
于是你在书上做上记号,
访
去接电话,与对方通话;
敲门声
者 交
门铃响了,有人敲门,你
接
谈
让打电话的对方稍等一下,
电
看话
书
你去开门,并在门旁与来 访者交谈,谈话结束,关 好门;回到电话机旁,继
续通话,接完电话后再回
来从做记号的地方接着看
书。
主 程 序 随机事件1 随机事件2