“第二十课--Microduino 中断的使用/zh”的版本间的差异
(Created page with "{{Language|Lesson_20--Microduino_"Use_Interrupt"}} {| style="width: 800px;" |- | ==目的== 本教程为了了解microduino定时器中断,用定时器中断让13引脚 led灯...") |
(→设备) |
||
第6行: | 第6行: | ||
本教程为了了解microduino定时器中断,用定时器中断让13引脚 led灯每500ms变化一次 | 本教程为了了解microduino定时器中断,用定时器中断让13引脚 led灯每500ms变化一次 | ||
==设备== | ==设备== | ||
− | '''[[Microduino-Core]]''' | + | *'''[[Microduino-Core/zh]]''' |
− | '''[[Microduino- | + | *'''[[Microduino-USBTTL/zh]]''' |
*其他硬件设备 | *其他硬件设备 | ||
**面包板跳线 一盒 | **面包板跳线 一盒 | ||
第13行: | 第13行: | ||
**LED发光二极管 一个 | **LED发光二极管 一个 | ||
**220欧姆电阻 一个 | **220欧姆电阻 一个 | ||
− | **USB数据连接线 一根 | + | **USB数据连接线 一根 |
==实验一== | ==实验一== |
2014年10月29日 (三) 03:33的版本
Language | English |
---|
目的本教程为了了解microduino定时器中断,用定时器中断让13引脚 led灯每500ms变化一次 设备
实验一使用MsTimer2库
// led灯接UNO的13管脚
#include <MsTimer2.h> //定时器库的 头文件
void flash() //中断处理函数,改变灯的状态
{
static boolean output = HIGH;
digitalWrite(13, output);
output = !output;
}
void setup()
{
pinMode(13, OUTPUT);
MsTimer2::set(500, flash); // 中断设置函数,每 500ms 进入一次中断
MsTimer2::start(); //开始计时
}
void loop()
{
}
结果led灯每500ms变化一次。 实验二使用millis()函数
unsigned long ledOn=500,ledOff=500; //定义led灯变化的时间长度,每500ms变化一次
int ledStatus; //定义LED灯的状态,HIGH or LOWm
void setup()
{
pinMode(13,OUTPUT);
digitalWrite(13,HIGH);
ledStatus=HIGH;
}
void loop()
{
unsigned long nowtime=millis(); //获取当前的系统运行时间长度
if(ledStatus==HIGH) //如果当前lled灯状态为高电平,则执行该程序
{
if(nowtime>ledOn) //检测系统运行时间长度是否到500ms
{
ledOn=nowtime; //记录当前时间长度,第一次为500ms,赋值给ledOn
ledOff=nowtime+500; //计算出下一次led灯变化的时刻,第一次运行程序时应该在1000ms时关灯
digitalWrite(13,LOW); //关掉led灯
ledStatus=LOW; //记录当前led灯状态,下一次使用
}
}
else{
if(nowtime>ledOff)
{
ledOff=nowtime;
ledOn=nowtime+500;
digitalWrite(13,HIGH);
ledStatus=HIGH;
}
}
}
结果
|