世界最小的Arduino——ATTiny13上手全攻略2A跑马灯

前言
上一期我们介绍了ATTiny13有关的基础知识,在Arduino IDE环境下的搭建方法,并完成了第一个点灯实验“Hello World!”。本章教程将向大家介绍几款有趣的小应用。

实验一:从跑马灯开始
01_20150502_153356_meitu_1.jpg
在本实验中,我们将通过制作一款简单的跑马灯来熟悉数字量输出控制,延时和循环等常见函数。整体电路搭建如图,左侧为ATTiny13最小系统,其下方是下载器的接口。右侧是5个彩色的LED发光二极管。为了让LED的光亮相对柔(An)和(Dan)一点,我们采用了较大阻值的1KΩ电阻。
02_T0103_LED5_waterLights_bb.png

因为ATTiny13只有8个引脚,而正常模式下可以使用的IO数量仅有5个,Arduino将其数字量通道的定义为从0到4。跑马灯的原理就是依次点亮或者熄灭指定的LED,然后反复循环形成一个简单的动画效果。整体代码也比较简单,程序的控制原理是在setup()中利用for()循环将所有的IO设置为输出状态,然后在loop()中先将所有的IO输出状态拉低,再将其中一位依次拉高。
03_T0103_LED5_waterLights.png

当然这里的高低电位都是相对的,我们可以通过修改变量声明中的“ledON = LOW; ”或者 “LedON = HIGH; ”来进行切换。跑马灯的实际执行效果如下图。
04_Frame_meitu_1.jpg

关于具体每个函数的语法和功能,因为已经有很多教程介绍过,这里就不再重复了。在学习Arduino的过程中,其实最好帮助就是其软件本身自带的参考文档Reference了。建议大家在查阅函数时主要看Arduino软件帮助菜单Help中的Reference即可,里面有所有的函数功能介绍和丰富的样例资源。
05_Help.png

如果只是想了解某一个特定函数的功能,可以先将鼠标指针点击到当前函数,然后再点帮助菜单下面的Find in Reference,在弹出的浏览器中会直接跳转到对应的页面。

附上Arduino代码
ARDUINO 代码复制打印

//Author: Leo
//Date: 2015.02.13
//IDE Ver.: 1.0.3
//website: github.com/leolite
//MCU: ATMEL ATTINY13
//Programmer: usbtinyisp(@Ladyada [url]https://learn.adafruit.com/usbtinyisp/drivers[/url])
//hardware core: core13(@smeezekitty [url]http://sourceforge.net/projects/ard-core13/[/url])
 
/*
 Water lights with 5 LED
 
 This example code is in the public domain.
 */
 
//       ATMEL ATTINY13 / ARDUINO
//
//                      +-\/-+
// [RST]ADC0 (D 5) PB5 1|    |8 Vcc
//      ADC3 (D 3) PB3 2|    |7 PB2 (D 2) ADC1[SCK]
//      ADC2 (D 4) PB4 3|    |6 PB1 (D 1) PWM1[MISO]
//                 GND 4|    |5 PB0 (D 0) PWM0[MOSI]
//                      +----+
 
int pinOut[] = {
  0,1,2,3,4};
int countOut = 5;
int timerOut = 200;
int countLed = 0;
boolean ledON = LOW;
void setup()
{
  // initialize the digital pin as an output.
  for(int i =0; i<countOut; i++){
    pinMode(pinOut[i], OUTPUT); 
  }
}
void loop()
{
  for (int i =0; i<countOut; i++){ 
    digitalWrite(pinOut[i], !ledON);  
  }
  digitalWrite(pinOut[countLed], ledON);
  countLed ++;
  if( countLed >= 5) countLed = 0;
  delay(timerOut);
}

标签: Arduino教程