Arduino 程序结构

在本章中,我们将深入研究Arduino程序结构,并将学习更多Arduino世界中使用的新术语。Arduino软件是开源的。Java环境的源代码在GPL下发布,C/C++微控制器库在LGPL下。


Sketch(草图) – 第一个新的术语是名为“sketch”的Arduino程序。


结构

Arduino程序可以分为三个主要部分:结构,值(变量和常量)和函数在本教程中,我们将逐步了解Arduino软件程序,以及如何编写程序而不会出现任何语法或编译错误。


让我们从结构开始。软件结构包括两个主要函数:

  • Setup()函数
  • Loop()函数
Arduino 程序结构
Void setup ( )
{

  } 
  • PURPOSE– 草图启动时会调用 setup()函数。使用它来初始化变量,引脚模式,启用库等。setup函数只能在Arduino板的每次上电或复位后运行一次。

  • INPUT – –

  • OUTPUT – –

  • RETURN– –

Void Loop ( )
{

  } 
  • PURPOSE– 在创建了用于初始化并设置初始值的setup()函数后,loop() 函数,正如它的名称所指,允许你的程序连续循环的更改和响应。可以使用它来主动控制Arduino板。

  • INPUT – –

  • OUTPUT – –

  • RETURN– –

Arduino基础入门篇06——流动的LED灯

Arduino基础入门篇06——流动的LED灯

|

      阅读本文大概需要3分钟。

|

上一篇介绍了Arduino数字I/O引脚及相关函数,并点亮了板载LED灯。本篇将使用面包板搭建电路,多个LED灯配合显示流动效果。

1. 实验材料

  • Uno R3开发板

  • 配套USB数据线

  • 面包板及配套连接线

  • 6个LED灯

  • 6个220Ω电阻

2. 实验步骤

  1. 根据原理图搭建电路

    直插式LED灯有两个引脚,长引脚为正极,短引脚为负极。LED灯点亮就是电流从正极流入,从负极流出。6个LED灯的负极连接到开发板的GND引脚,正极分别连接220Ω限流电阻连接到开发板的数字I/O引脚。

    实验原理图如下图所示:

    Arduino基础入门篇06——流动的LED灯
    流水灯电路连接图

    实物连接图如下图所示:

    Arduino基础入门篇06——流动的LED灯
    实物连接图
  2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

     1/*
    2  *  Led_Flash
    3  *  依次点亮1~6号LED灯,依次熄灭6~1号LED灯,如此循环
    4  */

    5
    6int  delayTime  =  200;
    7int  ledPin;
    8
    9void  setup()
    10
    {
    11    for  (ledPin  =  1;   ledPin  <  7;   ledPin++)  //依次设置1~6个数字引脚为输出模式
    12    { 
    13        pinMode(ledPin,  OUTPUT);   //设置第ledPin个引脚为输出模式
    14    }
    15 }
    16void  loop()
    17
    {
    18    for  (ledPin  =  1;   ledPin  <  7;   ledPin++)  //每隔delayTime依次点亮1~6引脚相连的led灯
    19    {
    20        digitalWrite(ledPin,  HIGH);   //点亮ledPin引脚相连的led灯
    21        delay(delayTime); //延时delayTime
    22    }
    23
    24    for  (ledPin  =  6;   ledPin  >  0;   ledPin--)  //每隔delayTime依次熄灭6~1引脚相连的led灯
    25    {
    26        digitalWrite(ledPin,  LOW);   //熄灭ledPin引脚相连的led灯
    27        delay(delayTime); //延时delayTime
    28    }
    29 }
  3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

    Arduino基础入门篇06——流动的LED灯
    程序下载

3. 实验现象

LED灯依次点亮,依次熄灭,达到流动效果。

Arduino基础入门篇06——流动的LED灯
流水灯效果

4. 程序分析

在setup部分通过for循环将1~6号引脚设置为输出模式。在loop部分,通过两个for循环依次点亮1~6号LED灯,依次熄灭6~1号LED灯,使用的依然是digitalWrite函数。

延时时间定义为200,你可以改变它来控制流动速度。还可以通过修改程序中引脚的输出顺序来尝试更多不同的点亮LED的方式。

Arduino基础入门篇06——流动的LED灯
扫码加入微信公众号:TonyCode


原文始发于微信公众号(

TonyCode

):Arduino基础入门篇06——流动的LED灯

|

Arduino基础入门篇05—LED照亮你的美

Arduino基础入门篇05—LED照亮你的美


|

    阅读本文大概需要3分钟。

|

本篇主要介绍Arduino数字引脚及相关函数,通过数字I/O输出控制板载LED灯亮灭状态(数字引脚13)。

数字信号是以0、1表示的电平不连续变化的信号,也就是以二进制的形式表示的信号。在Arduino中数字信号通过高低电平来表示,高电平则为数字信号1,低电平则为数字信号0 ,其实在计算机中也只有0和1两种信号。

Arduino开发板上每一个带有数字编号的引脚,都是数字引脚,包括标有”A”编号的模拟输入引脚。可以通过这些引脚来实现数字信号的输入输出。

1. 实验材料

  • Uno R3开发板

  • 配套SUB数据线

2. 实验步骤

  1. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

     1/*
    2      Blink
    3      等待一秒钟,点亮LED,再等待一秒钟,熄灭LED,如此循环
    4*/

    5
    6//在大多数Arduino控制板上13号引脚都连接了一个标有"L"的LED灯
    7int  led  =  13;     //给13号引脚连接的设备起一个别名"led"
    8
    9void  setup()  {
    10    pinMode(led,  OUTPUT);   //将"led"引脚设置为输出状态
    11 }
    12
    13void  loop()  {
    14    digitalWrite(led,    HIGH);   //引脚输出高电平1,点亮LED
    15    delay(1000);     //等待1s
    16    digitalWrite(led,  LOW);   //引脚输出低电平0,熄灭LED
    17    delay(1000);     //等待1s
    18 }

    Arduino基础入门篇05—LED照亮你的美
    保存程序
  2. 通过USB数据线连接Uno R3到电脑。在IDE中设置好对应端口号和开发板类型。

  3. 下载程序到开发板。

    Arduino基础入门篇05—LED照亮你的美
    上传程序

3. 实验现象

可观察到板载LED灯间断闪烁。

Arduino基础入门篇05—LED照亮你的美
LED闪烁

4. 函数介绍

  1. pinMode()

    • pin:要设置其模式的引脚编号

    • mode: INPUT(输入模式), OUTPUT(输出模式), INPUT_PULLUP(上拉输入模式)

    • 描述:将指定引脚配置为输入或者输出模式

    • 函数原型:pinMode(pin, mode)

    • 参数: 

       

       

       

       

       

       

       

       

       

       

       

      • pin:要设置其模式的引脚编号

      • mode: INPUT(输入模式), OUTPUT(输出模式), INPUT_PULLUP(上拉输入模式)

    • 返回值: 无返回值


  2. digitalWrite()

    • pin:要设置其输出的引脚编号

    • value:HIGH(1), LOW(0)

    • 描述:将数字HIGH或LOW值写入数字引脚

    • 函数原型:
      digitalWrite(pin, value)

    • 参数:

      • pin:要设置其输出的引脚编号

      • value:HIGH(1), LOW(0)

    • 返回值: 无返回值


  3. delay()

    • 描述:将程序暂停给定参数的时间量(以毫秒为单位)

    • 函数原型: delay(ms)

    • 参数:ms 暂停的毫秒数

    • 返回值: 无返回值

程序首先通过pinMode设置13引脚为输出模式,然后在loop里面通过digitalWrite来改变引脚的输出电平,HIGH输出高电平即为当前Arduino的工作电压5V,LOW输出低电平即为0V。delay函数暂停1s让我们可以清晰看到闪烁状态。你也可以减小等待时间,LED就会闪烁的更快了。

Arduino基础入门篇05—LED照亮你的美

扫码加入微信公众号:TonyCode



原文始发于微信公众号(

TonyCode

):Arduino基础入门篇05—LED照亮你的美

|

123D Design系列教程(九)

咱们接着学习123D Design,这次看一下草绘、阵列、投影功能,软件是英文界面,大家可以点击系列教程(一),查看详细的界面翻译。

草绘常用图形

 
选择草绘【Sketch】工具,里有四种常用的基本形状,如下图。

 点客原创 | 一诺启航分享:123D Design系列教程(九)

 

我们可以根据这四种常用形状来绘制出不同的图形。例如,我们绘制一个矩形,在矩形的边缘绘制一个圆形。

点客原创 | 一诺启航分享:123D Design系列教程(九)

 

利用草绘中的剪裁命令,我们就可以得到一个新的图形,如下图。

  点客原创 | 一诺启航分享:123D Design系列教程(九)
点客原创 | 一诺启航分享:123D Design系列教程(九)

在今后的建模过程中,这样的例子还会很多,这里就不多解释了。

阵列命令

在草绘建模的过程中,还会经常用到阵列【Pattern】命令。

阵列其实就是按照某种规则排列,生成大量形状相同或相近的对象,常用于创建数量较多、排列规则且形状相同的或相近的一组结构。

 点客原创 | 一诺启航分享:123D Design系列教程(九)

1
矩形阵列

先来看一下矩形阵列,我们直接实际操作下来了解这个命令。首先绘制一个矩形,并在矩形内部绘制一个小圆形。

点客原创 | 一诺启航分享:123D Design系列教程(九)

点击小圆形出现齿轮图标(设置),在图标中选择矩形阵列或在样式栏里选择矩形阵列。

点客原创 | 一诺启航分享:123D Design系列教程(九)

点客原创 | 一诺启航分享:123D Design系列教程(九)

选择之后,软件里就会出现一个小的对话框。左边是选择草绘图元(图形),右边是选择方向和数量。

点客原创 | 一诺启航分享:123D Design系列教程(九)

我们点击圆形轮廓,就是选定了阵列图元(图形)。这里要提示一下,当选择了圆形轮廓后,会出现下图中的话,意思是点击选择草图曲线或点

点客原创 | 一诺启航分享:123D Design系列教程(九)

然后我们点击屏幕上右边的选择方向和数量,点击圆形左侧的线,会出现一个向下和向右的箭头,和一个对话框。

 

这个对话框里有两个数值输入,左边是间隔距离,右边是数量,我们先输入数量3。

点客原创 | 一诺启航分享:123D Design系列教程(九)

 

向右拉动箭头后,我们就拉出了3个小圆形,同理向下拉也是一样。

点客原创 | 一诺启航分享:123D Design系列教程(九)
点客原创 | 一诺启航分享:123D Design系列教程(九)

 

这里说明一下,我们刚才绘制的这些圆形中,每个圆形的中间都有一个对号图标,点击这个图标,所绘制的这个圆形就会消失,同样再次点击会出现。

 

还有下图这个图标,它是用来增减阵列数量的。

 点客原创 | 一诺启航分享:123D Design系列教程(九)

 

按住它向右拉动鼠标,阵列的个数就变为了3个。

点客原创 | 一诺启航分享:123D Design系列教程(九)

 

向左拉动,两边的圆形位置保持不变,但中间增加了很多圆形。

点客原创 | 一诺启航分享:123D Design系列教程(九)

 

2
圆周阵列

顾名思义,就是围绕一个圆,阵列出相同的图形。

 

我们用多段线和样条曲线来绘制一个图形,如下图。首先绘制一个圆形,在圆形的上方,再用多段线和样条曲线绘制一个图形。

 点客原创 | 一诺启航分享:123D Design系列教程(九)

 

点击我们画的线段,出现快捷齿轮图标或在样式栏里选择圆周阵列。

点客原创 | 一诺启航分享:123D Design系列教程(九)

点客原创 | 一诺启航分享:123D Design系列教程(九)

同前面的矩形阵列一样,会出现一个对话框,同样左边是选择图元(图形)右边是选择阵列的中心点或线。

 

不同的是最右边有个按钮,我们点开后有两个选项,整个圆周360°(Full)和角度(Angle)。这个角度选项是指在一定角度内,而不是指整个圆周,这里要区分一下。

 

我们在这个对话框中可以输入阵列的数量。

点客原创 | 一诺启航分享:123D Design系列教程(九)

同样我们也可以通过下图这个按钮来增加和减少数量。

点客原创 | 一诺启航分享:123D Design系列教程(九)

这里还要说明一下,因为我们本身是用多段线和样条曲线来绘制的图形,所以在选择这个图形进行阵列时,不会一次性全部选择了线段的,需要每一条都用鼠标来点击。否则阵列出来只会出现你点击了的线段,而没点击的是不会进行阵列命令的。

 

然后在数量里输入10,这样我们就得到了一个草绘图形。

点客原创 | 一诺启航分享:123D Design系列教程(九)

 

再利用剪裁命令,把不需要的线条剪裁掉,得到最终的模型。

 点客原创 | 一诺启航分享:123D Design系列教程(九)

 

大家通过草绘下图中的模型来练习下吧。

 点客原创 | 一诺启航分享:123D Design系列教程(九)

 

草绘图如下,多加练习哦。

 点客原创 | 一诺启航分享:123D Design系列教程(九)

镜像命令

这个命令简单的说就像是镜子一样,呈现出你所绘制图形的另一面,主要用于绘制对等的图案或图形。

 

我们绘制一个心形来介绍下这个命令,首先使用样条曲线绘制心的一半。

点客原创 | 一诺启航分享:123D Design系列教程(九)

再用多段线绘制一条中线,绘制时一定要和前面绘制的线段连接,使其形成一个密闭的完整图形。我们绘制的这条中线也是用于镜像的一个分界线。

点客原创 | 一诺启航分享:123D Design系列教程(九)

 

点击所绘制的图形,再从样式栏里选择镜像命令,或通过小齿轮图标来选择镜像。

 点客原创 | 一诺启航分享:123D Design系列教程(九)

 

点击后会出现一个对话框,左边是草绘实体,右边是镜线(中线)。

点客原创 | 一诺启航分享:123D Design系列教程(九)

 

首先点击草绘的实体,选中后再点击镜线选项,这个时候我们点击中线,就镜像出心的另一半了。

 点客原创 | 一诺启航分享:123D Design系列教程(九)

 

得到了我们想要的心形,再把中线剪裁掉。

 点客原创 | 一诺启航分享:123D Design系列教程(九)

 

拉伸一下,就得到一个了心形的模型。

 点客原创 | 一诺启航分享:123D Design系列教程(九)

123D Design系列教程(八)

咱们接着学习123D Design,这次看一下剪裁、延伸、投影命令,软件是英文界面,大家可以点击系列教程(一),查看详细的界面翻译。

剪裁命令

在草绘图形中经常使用到剪命令,简单的说就是把草绘中不需要的线条剪裁掉。 比如绘制一个矩形,不需要其上面的一条线。选择草绘【Sketch】,选择剪裁命令。

点客原创 | 一诺启航分享:123D Design系列教程(八)

 

直接点击不需要的线条,线条会变为红色,点击对号确认,直接剪裁就可以了。

 

点客原创 | 一诺启航分享:123D Design系列教程(八)

点客原创 | 一诺启航分享:123D Design系列教程(八)
 

注意:如果你绘制的两个图形,第二个图形在绘制的时候一定要点击第一个图形进入草绘状态,否则你使用剪裁命令是点击图形的区域进入草绘状态。

 

那么虽然这两个图形是重叠的,但剪裁命令是不能使图形重叠的部分剪裁掉的,只有两个图形真正的相交,才可以执行剪裁命令。

 

我们练习下这个命令,大家尝试绘制下图中的模型。

点客原创 | 一诺启航分享:123D Design系列教程(八)

延伸命令

再来看一下延伸命令,也就是把直线或曲线延长。先画一个矩形,一条边,再画半个圆补充上。然后选择草绘,选择延伸命令。

 点客原创 | 一诺启航分享:123D Design系列教程(八)

 

把鼠标放在刚才线的端点,会出现一条红色的线,延伸到另一条线的端点。

 点客原创 | 一诺启航分享:123D Design系列教程(八)

 

如果我们把鼠标移到圆形的线端,就会出现圆弧,形成一个圆。

点客原创 | 一诺启航分享:123D Design系列教程(八)

再来利用延伸命令绘制一个五角星,首先我们绘制一个五边形。

点客原创 | 一诺启航分享:123D Design系列教程(八)

完成后选择草绘—延伸命令,点击五边形的任意一条边的端点。

点客原创 | 一诺启航分享:123D Design系列教程(八)

延伸出的线条我们直接确认,同样在其它边线上也这样操作,得到如下图这样的五星。

 点客原创 | 一诺启航分享:123D Design系列教程(八)

再使用剪裁命令,把中间重复的线条剪裁掉,然后使用拉伸命令,就画出了一个五角星。

 点客原创 | 一诺启航分享:123D Design系列教程(八)

 

投影曲线

投影就是把一个草绘轮廓或者面投影到另一个草绘平面上或实体面上,这个命令可以做出很多普通方法几乎不能绘制的曲线。

 

直接通过实例来演示投影曲线的作用,首先创建一个立方体,再创建一个圆柱体,并把圆柱体倾斜45°角,如图。

点客原创 | 一诺启航分享:123D Design系列教程(八)

选择草绘【Sketch】,选择投影命令,如下图。

 点客原创 | 一诺启航分享:123D Design系列教程(八)

 

点击立方体上想投影曲线的面,再把鼠标移到圆柱体的表面时,将会有一个红色的圆形出现在立方体上,这就是圆柱体轮廓投影到了立方体的表面上的效果。

点客原创 | 一诺启航分享:123D Design系列教程(八)

点客原创 | 一诺启航分享:123D Design系列教程(八)

 

点击确认,就得到了圆柱体投影的一个模型。

 点客原创 | 一诺启航分享:123D Design系列教程(八)

 

这里需要提醒一下,在123D中是不能把曲线投影到一个曲面上的。

 

草绘投影和实体投影是一样的,绘制一个多边形草绘,把这个多边形图形旋转45°或90°,按上述步骤操作,同样投影到了立方体上。

 点客原创 | 一诺启航分享:123D Design系列教程(八)

 

友情提醒:草绘图形中圆形,椭圆形可以直接投影到选择投影的面,但矩形和多边形需要每条线段逐次点击。

 

我们投影到立方体上的图形,可以通过拉伸,将图形拉出或缩进,形成新的一个模型,如图。

 点客原创 | 一诺启航分享:123D Design系列教程(八)

点客原创 | 一诺启航分享:123D Design系列教程(八)

 

还有,多段线和样条曲线绘制好后要旋转一定角度并上移一些,也是一条线一条线投影到你所需要投影的实体上的。

 

草绘投影实体看完了,再来看看实体是怎么投影到草绘图形上的吧。

 

以上面那个立方体为例,在栅格上绘制一个矩形,并把立方体旋转一定角度,上移到矩形的上方。

点客原创 | 一诺启航分享:123D Design系列教程(八)

选择草绘命令,选择投影曲线,点击矩形的面,再点击立方体的一个面。

点客原创 | 一诺启航分享:123D Design系列教程(八)

 

可以看到立方体直接投影到了矩形上,确认就可以了。

点客原创 | 一诺启航分享:123D Design系列教程(八)

 

拉伸一下,可以看看效果如何。

点客原创 | 一诺启航分享:123D Design系列教程(八)

123D Design系列教程(六)

咱们接着学习123D Design,这一次学习样条曲线的绘制,软件是英文界面,大家可以点击系列教程(一),查看详细的界面翻译。

样条曲线是指给定一组控制点而得到一条曲线,曲线大致形状由这些点控制,绘制样条曲线是建模时较为常用的操作。

草绘曲线

我们从草绘【Sketch】里选择样条曲线命令,点击鼠标进入草绘状态。

点客原创 | 一诺启航分享:123D Design系列教程(六)v ,d d,ms,dmsc, ,   c

 

在栅格上任意位置点击,再点击第二个点,慢慢来回移动样条曲线的端点,观察样条曲线变化。

 点客原创 | 一诺启航分享:123D Design系列教程(六)

继续选择一系列的点,来绘制曲线,最后移动鼠标到起始点,形成一个闭合的图形。绘制完成后点击对勾,结束当前草绘状态。

 点客原创 | 一诺启航分享:123D Design系列教程(六)

 

样条曲线命令就是这么简单,基本上就是点击—调整—点击的过程,只要有耐心,用这个命令可以绘制出很多复杂的图形。

咱们之前有讲到多段线,在实际建模的过程中,和样条曲线结合使用效果更佳。比如你使用多段线绘制了一条直线,那么你退出当前草绘状态后,选择样条曲线,这里要把样条曲线的起始点放在刚才绘制的直线的一端,这样绘制的两条线才能重合在一起。

 

当鼠标点击直线的端点时,出现提示点击进入草绘,如下图。

点客原创 | 一诺启航分享:123D Design系列教程(六)

点击后,如果我们是重复沿着这条直线回画的时候会出现这个图标。

 点客原创 | 一诺启航分享:123D Design系列教程(六)

 

而我们如果是顺着直线画会出现下图这样,这里需要注意的是避免重复的线条。

点客原创 | 一诺启航分享:123D Design系列教程(六)

绘制爱心

了解完样条曲线,咱们试着画一个爱心吧。如果在绘制的完成后,对部分不满意我们可以点击线条中的小圆点进行调整。

 

点客原创 | 一诺启航分享:123D Design系列教程(六)

点客原创 | 一诺启航分享:123D Design系列教程(六)

 

直到调整到满意为止,大家可以多加练习这些草绘命令,你草绘命令用的越强,你绘制的模型就能越复杂。

 点客原创 | 一诺启航分享:123D Design系列教程(六)

两点弧线

这个命令顾名思义,就是以一个点作为中心点,另一个点作为圆弧的半径进行绘制。

点客原创 | 一诺启航分享:123D Design系列教程(六)

 

圆弧命令可以确认圆弧起始位置和结束位置,还有圆弧的度数。

点客原创 | 一诺启航分享:123D Design系列教程(六)

点客原创 | 一诺启航分享:123D Design系列教程(六)
 

当这个数值达到360的时候,你就绘制了一个完整的圆。

 点客原创 | 一诺启航分享:123D Design系列教程(六)

三点弧线

这个命令第一个点是起始点,第二个点是结束点,第三个点是确认圆弧上的一点。

 点客原创 | 一诺启航分享:123D Design系列教程(六)
 点客原创 | 一诺启航分享:123D Design系列教程(六)

 

图中上下两个箭头是指,可以通过移动鼠标来调整圆弧的大小,实际建模中根据自己绘制的情况,确认了位置后,点击鼠标确认点,那么这个圆弧就绘制完成了。

点客原创 | 一诺启航分享:123D Design系列教程(六)

倒圆角

为什么这里又要介绍倒圆角呢,前面不是介绍过了吗?

其实我们前面介绍的倒圆角命令是针对实体的,这里的是针对草绘图案的,大家在实际建模的过程中,要区分开这两个倒圆角的命令。

 点客原创 | 一诺启航分享:123D Design系列教程(六)

 

我们草绘一个矩形后,从草绘栏里选择倒圆角命令,点击草绘的图案,草绘图案变绿进入草绘状态。

 

我们选择一个角来进行倒圆角,可以在数值框内直接输入数值,也可手动进行倒角。

 点客原创 | 一诺启航分享:123D Design系列教程(六)

 点客原创 | 一诺启航分享:123D Design系列教程(六)

 

当鼠标移到这个角的时候,出现一个红色的曲线,点击确认后,出现一个白色的箭头,我们可以拉动这个箭头来控制倒角的大小。

 

点客原创 | 一诺启航分享:123D Design系列教程(六)

 

我们选取合适的角度,完成后,确认,当鼠标拉取位置过大时…

 点客原创 | 一诺启航分享:123D Design系列教程(六)

 

矩形就变态了(改变了原有的形态),我们会得到这样的图形。

点客原创 | 一诺启航分享:123D Design系列教程(六)