“第一课--LED灯闪烁实验(面包板的使用)/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
设备
 
第67行: 第67行:
 
</source>
 
</source>
  
*采用milles():返回自Microduino板开始运行当前程序的毫秒数
+
*采用millis():返回自Microduino板开始运行当前程序的毫秒数
 
<source lang="cpp">
 
<source lang="cpp">
 
int ledPin=13;
 
int ledPin=13;

2015年8月6日 (四) 02:12的最新版本

Language English

目的

通过Microduino来控制一个led灯的亮灭,实际上是接触如何控制Microduino核心板的I/O口,这样大家就可以举一反三,发挥极大想象空间,为以后的学习打好基础。

设备

Microduino-Core 是以 Atmel ATmega328P,ATmega168PA 系列为核心的8位单片机开发核心板,是一个开源的、与 Arduino UNO 兼容的控制器模块。

下载程序模块,可直接与 Microduino-Core 或者Microduino-Core+ 相连,让他们与计算机通讯。它的下载接口用的是MicUSB,这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的,方便实用。

  • 其他硬件设备
    • 面包板跳线 一盒
    • 面包板 一块
    • LED发光二极管 一个
    • 220欧姆电阻 一个
    • USB数据连接线 一根
Lesson1Main.jpg
Lesson1All.jpg

面包板

纵向每五个点都接在一起,横向每25个点是接在一起,有的面包板式50个点都接在一起,所以连接之前要确定好,以免产生产生错误结果。旁边两排的50个点一排用作GDN,一排用作VCC。

Breadboard.jpg

电阻、led

电阻用作限流,以防led被烧坏。一般是 红绿LED的电压一般是1.8~2.4V,蓝白是2.8~4.2V ,3mmLED的额定电流1~10mA ,5mmLED的额定电流5~25mA ,10mmLED的额定电流25~100mA。可根据R=U/I来计算相应的阻值。一般几百欧就可以。

led正负判断

方法一:目测led内部,支架大连接的引脚是负极,支架小的链接的引脚是正极。

方法二:对于崭新的led,引脚有长短,因此直接看引脚的长短,引脚长的为正极,短的为负极。

万用表检测led灯好坏

用模拟万用表检测发光二极管时,必须使用“R×l0k”档。因为led的管压降大约为3V,而模拟万用表处于“R×lk” 档,表内电池仅为1.5V。低于管压降。无论正、反向接入,led都不可能导通,从而无法检测。“R×10k”档时表内接有9V(或 15V)高压电池,高于管压降,所以可以用来检测led。

因为模拟万用表黑表笔(与表内电池正极相连)表示正极,与红表笔(与表内电池负极相连)表示是负极,所以需要将模拟万用表的黑表笔接led的正极,红表笔接led的负极。如果led灯发光则证明led灯是好的。

用数字万用表用二极管档即可,而数字万用表黑表笔表示负极,红表笔表示正极,与模拟万用表相反,所以需要将数字万用表的红表笔接led的正极,黑表笔接led的负极。如果led灯发光则证明led灯是好的。

实验原理图

原理图有两种接法,一是led的阴极接Microduino的GND,阳极接Microduino数据控制口13,这样就是高电平点亮led,二是led的阴极接Microduino的数据控制口13,阳极接Microduino的VCC,这样就是低电平点亮led。

Schematic.jpg
Lesson1Setup.jpg

程序

  • 采用delay()函数:
int led = 13;//定义引脚
void setup() {                
  pinMode(led, OUTPUT);  //定义microduino数字13脚为输出   
}
void loop() {
digitalWrite(led, HIGH); //数据13口输出高,若接法是高电平点亮则点亮,反之则熄灭
delay(1000);               // 延时1s
digitalWrite(led, LOW); //数据13口输出低,若接法是高电平点亮则熄灭,反之则点亮  
delay(1000);               // 延时1s
}
  • 采用millis():返回自Microduino板开始运行当前程序的毫秒数
int ledPin=13;
#define TIME 1000 
long time1=0,time2=0;
void setup()
{
  pinMode(ledPin,OUTPUT);
}
void loop()
{
if(millis()<time2+TIME)
{
digitalWrite(ledPin,HIGH);
time1=millis();
}
else 
{
digitalWrite(ledPin,LOW);
if(millis()>time1+TIME)
time2=millis();
}
}

采用millis()比delay()函数效果更好,占用资源少,对系统拖延较少。

程序下载方法

  • 选择控制板型号,本次实验使用的是Microduino-Core(ATmega328P@16M,5V)。在工具下的板卡中进行选择。328有两种,如何判断自己的板卡是哪种,可通过0电阻的接法来判断。
Boardtype.jpg
  • 选择COM端口,每个人电脑上匹配的串口都不一样,选好就可以。COM端口可在电脑属性中的设备管理器里面有个COM端口,也可以双击通过端口设置的高级来改变COM端口。
  • 编译下载
Compile.jpg
Download.jpg

结果

程序下载后,可看到led每隔1s闪烁一次。

Lesson1OK.jpg

视频

http://v.youku.com/v_show/id_XNzEwMDA0NzA4.html