广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    Arduino Uno + 四脚三色LED简介及测试实验

    来源:网络收集  点击:  时间:2024-04-07
    【导读】:
    Arduino可以说是目前为止最适合于零基础的人入门硬件编程的开发板了,采用Atmel328/8位单片机,本身拥有丰富的函数库以及各大社区的开发者们的倾情奉献,以及专门对于Arduino的进化过的语言,本身价格也不贵可以说,Arduino对于准备走上单片机编程的最佳选择。工具/原料more有USB的电脑一台,Arduino UNO以及四脚全彩LED(共阴),限流电阻(1000欧姆)方法/步骤1/16分步阅读

    首先为了给Arduino写进程序,我们就需要IDE(集成编译环境),简单地说就是把我们告诉Arduino要做什么(代码)翻译成Arduino能看懂的东西(数字)。现在最新的IDE是1.6.3版本,那么这里提供国内的下载地址http://pan.baidu.com/s/1o9XCU

    2/16

    下载以后安装什么的就不用说了吧,能找到这篇文章的一定可以的!

    3/16

    安装完之后我们就能找到这样一个东西,一般来说程序都会自动创建快捷方式,

    4/16

    双击之后就能打开它,可能在某些低版本的windows上会出现问题,不过如果真出现那种问题的电脑......基本上不存在了吧。

    5/16

    看到了界面是不是被吓到了呢?是不是想到黑客们蹲在电脑前面夜以继日的样子呢?其实编程并不难,尤其是像Arduino用的这种,脑内有清晰的过程,这样的话就说明你是一个天生的程序猿了~

    6/16

    这个界面其实很清楚,上面是菜单栏,下面是输入程序的地方,首先我们不用管IDE怎么工作的,我们要关心的是Arduino会干什么,而他要干什么完全取决于你,这就是编程的最大好处,你可以发挥无限的想象力,永远也不会厌烦!

    7/16

    好了,为了完成这次的目标,我们开始进行设计程序之前的准备。首先我们知道,美术中有三原色红黄蓝,在电子中呢由于各种原因所以变成了红绿蓝(RGB),通过不同的三原色的组合来实现全彩LED的色彩变化。好了,我们知道了变色发光的原理,我们就可以开始制作了

    8/16

    工作原理:

    这里我们要引入一个在电子工程学领域非常常用的改变电路平均功率的方法PWM:

    脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

    首先我们知道,模拟信号的值可以连续变化,其时间和幅度的分辨率都没有限制。模拟电压和电流可直接用来进行控制,如对汽车收音机的音量进行控制。尽管模拟控制看起来可能直观而简单,但它并不总是非常经济或可行的。。其中一点就是,模拟电路容易随时间漂移,因而难以调节。能够解决这个问题的精密模拟电路可能非常庞大、笨重(如老式的家庭立体声设备)和昂贵。模拟电路还有可能严重发热,其功耗相对于工作元件两端电压与电流的乘积成正比。模拟电路还可能对噪声很敏感,任何扰动或噪声都肯定会改变电流值的大小。通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗。

    脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。

    当然了,说了这么多也肯定会一头雾水,所以我们只需要一张图来解释,如下图,一秒之内,通过改变供电的时间来达到改变亮度的目的。

    9/16

    知道了PWM的方法,我们就可以开始设计程序了,仔细看Arduino的引脚,有没有看到有几个引出脚的数字旁边有一个“~”的符号?这就意味着这几个引脚可以被我们用来控制LED,我们在这里选用了9,10,11三个引脚,LED的最长的引脚接在GND上,好了,先按照下图给出的电路连接好(怎样连接纯属个人喜好),准备编程~

    10/16

    打开IDE,看到void setup了吗?那个的意思是Arduino开始的时候只执行一次的程序,比如设置啊之类的,下面的void loop就是说,这段下面是连续执行的。

    11/16

    现在我们来构建程序的过程,这一步是非常重要的,正确的构建会是你事半功倍,而错误的构建会使你事倍功半。

    根据上文所说的RGB原理,颜色混合模式由黑色(不发光)至红、绿、蓝分为256个度,即0~255。

    如果你熟悉网页编程,你可能会意识到,颜色通常表示为一个“十六进制”数。例如,红色的编号为#FF0000。你可以在这找到一种特定的颜色对应的响应编码六位数字的编码,实际上是三组数字。第一组2位数字表示红色成分的颜色,在接下来的两组数字分别是绿色部分和蓝色部分。红色是#FF0000,因为它的最大的红色(FF是十六进制的255),它有没有绿色或蓝色的部分。所以想让红色变亮,我们只需要让红色的值从0变化到255即可(一共256位)。绿色和蓝色同理。

    12/16

    我先写了一个比较简单的,即单色变化的程序,方便阅读。程序如下,很简单的混色程序,Arduino所使用的C语言语法不在本文讨论范围之内,有兴趣的可以去看看书,毕竟我也是从书上学的。这段函数的意思就是,每过0.1秒,自动换一种颜色。

    13/16

    当你按照我的图片输入完毕的时候,请务必好好检车空格,大小括号以及分号等标点符号,由于C语言不用于Basic,所以这些是非常重要的。当你点击左上角的勾之后,下面的小黑框没有出现Error的时候你就可以尝试着把Arduino连到电脑上,准备下载程序了,如果你正确安装了IDE的时候,你应该看到IDE的右下角显示出了Arduino on COMX 记下来,然后进入工具-端口,选择正确的端口之后就可以点击上传了~

    14/16

    如果不出意外,现在你的LED应该已经正在闪烁了,是不是很炫酷?别忘了限流电阻哦~要串联在三个和9,10,11脚连接的地方,因为不同色的LED电压不一样,所以在公共阴极串联可能会导致亮度不均。

    15/16

    这里是进阶教程!如果你有能力看懂上面部分,那么这一部分应该不会有多大问题~我们这次把LED闪烁的方式换一换,慢慢变化~即从255每等待10ms降低一点直到0。下面附上程序

    int led1 = 9;

    int led2 = 10;

    int led3 = 11;

    void setup()

    {

    pinMode(led1,OUTPUT);

    pinMode(led2,OUTPUT);

    pinMode(led3,OUTPUT);

    }

    void setColor(int red,int green,int blue)

    {

    analogWrite(led1,255-red);

    analogWrite(led2,255-green);

    analogWrite(led3,255-blue);

    }

    void loop()

    {

    int i,j;

    for(i=0,j=255;i256;i++)

    {

    setColor(i,j,0);

    delay(4);

    j--;

    }

    delay(100);//绿色向红色渐变

    for(i=0,j=255;i256;i++)

    {

    setColor(j,0,i);

    delay(4);

    j--;

    }

    delay(100);//红色向蓝色渐变

    for(i=0,j=255;i256;i++)

    {

    setColor(0,i,j);

    delay(4);

    j--;

    }

    delay(100);//蓝色向绿色渐变

    }

    16/16

    是不是觉得很有意思呢,写几句话就能改变~

    注意事项

    在做渐亮渐暗效果时,一开始RGB三个针脚分别接8,9,10数字IO接口,发现红色只有亮与暗两种状态,原因:数字IO端口8为非PWM端口,只能读取输出高低电平两种状态,对应LED亮暗两种状态,无法实现渐变,需要将针脚接在数字IO PWM输出端口上,setColor()函数使用了analogWrite(pin, value),即数字IO 口PWM 输出函数,给一个接口写入模拟值(PWM 波)。改变PWM 脚位的输出电压值。对于 ATmega168 芯片的Arduino(包括Mini 或BT),该函数可以工作于 3, 5, 6, 9, 10 和 11 号接口,即“analogWrite(接口名称, 数值)”,pin 表示3, 5,6, 9, 10, 11,value 表示为0~255。比如可用于电机PWM 调速或音乐播放。 例如:输出电压2.5 伏特(V),该值大约是128

    对于程序类的东西一定要有耐心哦!

    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_460163.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-07 18:53:40  耗时:0.036
    0.0362s