极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 24785|回复: 3

用Arduino的2个IO口,“同时”点亮阴阳极相反的2个LED

[复制链接]
发表于 2011-10-15 13:24:51 | 显示全部楼层 |阅读模式

从疯教授那里订购的 Arduino UNO,终于收到了,当之无愧成为这个周末的主角。

其实大概2个月以前,手头就已经有 Netduino 了。不过,发现教材比较水,还没怎么玩,就开始介绍用 Netduino 怎么玩“云”,就比较晕,于是继续玩51。这方面,Arduino 的资源优势就显得很强大,各类资源及其丰富。虽然自己的主力编程语言一直是C#,但是最近一直在从微软阵营向Google阵营靠拢。而AVR似乎也是对51项目进行升级的不错选择,Arduino也确实已经火了很长一段时间。没关系,都不会闲着,一起学吧,反正大多数的东西都是相通的。看看自己有没有高屋建瓴的本事。

接触 Arduino,毫无疑问,在配置好开发环境以后,第一件事,依然是点LED。其意义几乎和其它语言中的“Hello, World”具有同样的意义。

然后发现 Arduino 有点蛋疼:

1. Arduino 0022 编译的速度,比 Keil 慢非常多,小小一个点灯程序,都要编译两三分钟,而这原本应该是刹那间完成的事情。道理可能是这样,因为arduino是建立arduino库上的二次编译甚至三次编译。而C玩51的话,似乎就是1次编译(C>>汇编)就好了。
2. 烧写flash就更慢了,同样也需要两三分钟,比起STC下载程序慢太多,后者只要握手成功,下载也是在瞬间完成;
3. IDE虽然集成了下载,但是快捷键就有点蛋疼,习惯了用F5、F6、F7,而 arduino 0022 却是用 Ctrl+R, Ctrl+U;
4. 语言方面,因为 Arduino 的优势在于其庞大的库文件支持,这样对于结构相对复杂的项目是比较有利的,但是这个优势在点LED的情况下体现不出来。而好好的一个IO赋值,就变成 digitalWrite(); 语句。而且,还用 HIGH/LOW。因为强大的C语言程序,其实很有意思,有各种各样巧妙、缩略的写法。都被整成这样的话,不知道到时候能不能玩什么花样。

虽然还认识 Arduino 不久,吐槽了一堆。希望自己能慢慢适应并且发现更好的方法吧,并看到Arduino尽早发挥它的优势。夸夸 Arduino 的一些好处。

1. 编程确实简单了很多,是较C语言的进一步模块化。简单到有点高手都没法显摆的程序……
2. IO口配置变得更加简单,而且输出模式的推电流的灌电流的能力都蛮不错。

教程上面说,arduino的IO推电流和灌电流的能力都达到40mA。这个是对51,尤其是Atmel传统51的巨大改进。

在经典点LED程序上稍作改良,有兴趣的朋友可以看看。这个程序,是用2个IO口,“同时”点亮正反插的2个高亮LED的程序。
  1. int iLed_P = A0;
  2. int iLed_M = A1;

  3. void setup()
  4. {
  5.   pinMode(iLed_P, OUTPUT);  
  6.   pinMode(iLed_M, OUTPUT);  
  7. }

  8. void loop()
  9. {
  10.   digitalWrite(iLed_P, HIGH);
  11.   digitalWrite(iLed_M, LOW);

  12.   delay(0x08);

  13.   digitalWrite(iLed_P, LOW);
  14.   digitalWrite(iLed_M, HIGH);

  15.   delay(0x08);
  16. }
复制代码
说明:

我用的2个IO口,是A0和A1,实践证明,模拟口确实也可以当数字口来赋值使用。
没用限流电阻,因为

■草帽头高亮LED,哪怕直接接在5V和GND之间,都不会烧,电流大概在100mA
■如果LED阳极由设置为High的IO口提供电流,阴极接GND,实测电流<=37mA,也在IO能力范围内
■如果LED阳极由设置为High的IO口提供电流,阴极为设置为LOW的IO口灌电流,实测电流<=25mA,也在IO能力范围内
■在本实例中,其实2个LED的交替点亮的,而且快速切换,所以有效电流更小
你知道这意味着什么吗?这意味凭借标准 Arduino 板上的 17个IO口(除串口以及Pin13),可以实现直驱2个8×8点阵屏,道理和1608一样。不过那样电路比较麻烦,周末直驱单点一个8×8点阵屏给大家看看。


原文链接:http://aguegu.net/?p=222

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2011-10-17 10:45:01 | 显示全部楼层
编译2-3分钟,下载2-3分钟?太夸张了吧。

可以肯定的是,点个灯的程序,用不了这么长的时间,如果真的这么长时间,你得检查下是否你电脑的问题。

编译、下载大的程序(MEGA1280的芯片,程序都快写满了)时间确实要长一些,分别在1分钟左右。
回复 支持 反对

使用道具 举报

发表于 2011-10-18 22:31:46 | 显示全部楼层
“草帽头高亮LED,哪怕直接接在5V和GND之间,都不会烧,电流大概在100mA”

还有,这个100mA不会烧貌似教坏新手了吧?100mA加上LED,不过几分钟应该就能报废了。我不信能正常工作。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-10-20 14:25:54 | 显示全部楼层
Ansifa 发表于 2011-10-18 22:31
“草帽头高亮LED,哪怕直接接在5V和GND之间,都不会烧,电流大概在100mA”

还有,这个100mA不会烧貌似教 ...

肯定是不能长时间点,但至少不是普通LED那样,一接5v直接烧。做测试的话,还是用一些比较皮实的元件。不过编译时间长,确实让我有点无法忍受……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 20:58 , Processed in 0.047484 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表