玩转Mixly – 3、Arduino AVR编程 之 控制

2023-10-26

以下内容源自Mixly官方技术文档:

https://mixly.readthedocs.io/zh_CN/latest/Arduino/AVR/02Control.html

 

控制

控制类别中包括了时间延迟、条件执行、循环执行、获取运行时间、初始化、Switch执行等 控制模块中主要执行的内容是对程序结构进行的相应控制。

1.初始化

1

2

pinMode(3, OUTPUT);

digitalWrite(3,HIGH);

 

 

1.1 描述

在Arduino中程序运行时将首先调用 setup()函数。 用于初始化变量、设置针脚的输出输入类型、配置串口、引入类库文件等等。

1.2 范例1

初始化时声明变量。

1

2

3

4

5

6

volatile int item;

void setup(){

item = 0;

}

void loop(){

}

 

 

1.3 范例2

在初始化时定义中断函数。

1

2

3

4

5

6

7

8

9

10

void attachInterrupt_fun_2() {

digitalWrite(13,HIGH);

}

void setup(){

pinMode(2, INPUT);

pinMode(13, OUTPUT);

attachInterrupt(digitalPinToInterrupt(2),attachInterrupt_fun_2,RISING);

}

void loop(){

}

 

 

注意

每次 Arduino 上电或重启后,setup 函数只运行一次。

2.while 循环

2.1 描述

while循环会无限的循环,直到括号内的判断语句变为假。 必须要有能改变判断语句的东西,要不然while循环将永远不会结束。你可以使用一个传感器的值,或者一个变量来控制什么时候停止该循环。

2.2 参数

  • 满足条件:为真或为假的一个条件。

2.3 范例

当温度高于30度时,亮灯,否则灭灯。

1

2

3

4

5

6

7

8

9

void setup(){

pinMode(13, OUTPUT);

}

void loop(){

while (analogRead(A0)*0.488 > 30) {

digitalWrite(13,HIGH);

}

digitalWrite(13,LOW);

}

 

 

3.延时

1

delay(1000);

 

 

3.1 描述

使程序暂定设定的时间(单位毫秒)。(一秒等于1000毫秒)。

3.2 参数

  • 毫秒:暂停的毫秒数。

3.3 范例

13号引脚灯亮1秒,灭1秒,往复循环。

1

2

3

4

5

6

7

8

9

void setup(){

pinMode(13, OUTPUT);

}

void loop(){

digitalWrite(13,HIGH);

delay(1000);

digitalWrite(13,LOW);

delay(1000);

}

 

 

注意

虽然创建一个使用delay()的闪烁LED很简单,并且许多例子将很短的delay用于消除开关抖动。

但delay()确实拥有很多显著的缺点。在delay函数使用的过程中,读取传感器值、计算、引脚操作均无法执行,因此,它所带来的后果就是使其他大多数活动暂停。大多数熟练的程序员通常避免超过10毫秒的delay(),除非arduino程序非常简单。

利用定时器,就可以解决这个问题,可以避免由于delay()带来的CPU暂停,也能很好地实现每隔一定时间执行动作。

4.如果(if)

1

2

if (false) {

}

 

 

4.1 描述

if 语句与比较运算符一起用于检测某个条件是否达成,如某个传感器的值是否等于某个值。

4.2 参数

  • 条件:比较表达式

4.3 用法

增加条件:如果需要增加条件,可以点开齿轮,然后将左侧的“否则如果”或者“否则”模块拖到右侧的“如果”之中。

4.4 范例1

当连接在2号引脚的按键按下时,点亮13号引脚的灯。

1

2

3

4

5

6

7

8

9

void setup(){

pinMode(2, INPUT);

pinMode(13, OUTPUT);

}

void loop(){

if (digitalRead(2) == 1) {

digitalWrite(13,HIGH);

}

}

 

 

如果判断的条件大于等于1时,可以省略等于判断,因为只要 该表达式的结果不为0,则为真。

所以,上面的写法与下面的写法等效。

1

2

3

4

5

6

7

8

9

void setup(){

pinMode(2, INPUT);

pinMode(13, OUTPUT);

}

void loop(){

if (digitalRead(2)) {

digitalWrite(13,HIGH);

}

}

 

 

4.5 范例2

当连接在2号引脚的按键按下时,点亮13号引脚的灯;当按键松开时,灯灭。

 

注意

另外一种进行多种条件分支判断的语句是switch case语句。

5.如果(switch)

 

5.1 描述

和if语句相同,switch…case通过设定的在不同条件下执行的代码控制程序的流程。

特别地,switch语句将变量值和case语句中设定的值进行比较。当一个case语句中的设定值与变量值相同时,这条case语句将被执行。

关键字break可用于退出switch语句,通常每条case语句都以break结尾。如果没有break语句,switch语句将会一直执行接下来的语句(一直向下)直到遇见一个break,或者直到switch语句结尾。

5.2 参数

  • var: 用于与下面的case中的标签进行比较的变量值

  • label: 与变量进行比较的值

5.3 用法

增加case:如果需要增加条件,可以点开齿轮,然后将左侧的“case”或者“default”模块拖到右侧的“switch”之中。

5.4 范例

当连接在2号引脚的按键按下时,点亮13号引脚的灯,否则13号引脚的灯灭

 

注意

每个switch可以有多个case,但是最多不超过一个default,当不满足任何一个case时,执行default中的程序。

6.for循环

 

6.1 描述

for循环用于重复执行一段的程序。通常使用一个增量计数器计数并终止循环。

for循环用于重复性的操作非常有效,通常与数组结合起来使用来操作数据、引脚。

6.2 参数

  • 变量名:用于记录for循环次数的变量名。

  • 起始值:循环的计数起始值,一般从0开头,也可以从其他数值开始。

  • 终点值:循环的计数终点值。

  • 步长:每次循环的步长,一般为1,也可以是其他整数。

6.3 用法

可自行设置循环的变量名称,并确定循环的开始和终止以及循环方向,最后一个数字可以为负数。

6.4 范例

将连接在3号引脚的灯制作成呼吸灯,每一次亮度变化之间间隔50毫秒

 

注意

for循环中定义的变量有名字,可以用字母i,j,k或单词red,state等有意义的词语表示。

7.跳出循环

 

7.1 描述

跳出循环用于终止一段重复的程序,一般使用时作为条件语句的执行部分,当循环中的变量满足某个条件时,执行跳出循环语句。

跳出循环在处理循环中的特殊情况时十分有用。

7.2 参数

  • 操作:可以选择跳出循环和跳到下一个循环两种操作,结果不同。

7.3 范例

引脚3上的数字从0到255逐一增加,每一次增加之间间隔50毫秒,当数字增加到150时停止增加

 

注意

注意跳到下一个循环的使用,可以方便的将循环中不需要的步骤跳过。

8.系统运行时间

 

8.1 描述

返回自硬件启动或重启以来的时间值。

8.2 返回

自硬件启动或重启以来的时间,毫秒数或者微秒数。

8.3 范例

自动换行打印系统运行时间

 

9.MsTimer2 定时器

 

9.1 描述

每隔设置的毫秒数执行相应的程序

9.2 范例

利用定时器控制13号引脚LED每隔1秒亮灭一次。

 

注意

利用定时器可以提高硬件的工作效率。

但在一个程序中只能使用一个MsTimer2定时器,如果要实现多个时间的定时,可以配合变量计数来完成。

10.MsTimer2 定时器启动

 

10.1 描述

MsTimer2定时器开始计时

11.MsTimer2 定时器停止

 

11.1 描述

MsTimer2定时器停止计时

12.简单定时器

 

12.1 描述

设置不同的简单定时器,每隔指定秒数执行相应的程序常用于多任务处理。

12.2 范例

D12,D13分别连接LED灯,每隔200ms,D12引脚LED灯切换亮灭; 每隔300ms,D13引脚LED灯切换亮灭;

 

13.允许中断

 

13.1 描述

允许输入/输出模块中管脚中断的运行

13.2 范例

使用按钮模拟开关,每次按下,LED灯切换亮灭

 

14.禁止中断

 

14.1 描述

禁止输入/输出模块中管脚中断的运行

14.2 范例

在允许中断范例的基础上,尝试禁止中断

 

15.SCoop Task

 

15.1 描述

SCoop模块用于执行多线程任务,最多支持8个任务。

15.2 范例

利用SCoop,控制13号引脚LED灯以2秒的频率闪烁,同时控制12号引脚的LED灯以200毫秒的频率闪烁。

微信关注图中张十三的博客公众号,与张十三一起探讨更多mixly开发问题:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

玩转Mixly – 3、Arduino AVR编程 之 控制 的相关文章

随机推荐

  • 像考研一样学个宇宙之刷题篇:剑指offerⅡ:整数系列——整数除法0706 TODO

    001 整数除法 给定两个整数 a 和 b 求它们的除法的商 a b 要求不得使用乘号 除号 以及求余符号 一些知识点和思路 第一题 easy题 狠狠来了个下马威 首先是 被除数 除数 关于溢出的情况 可以对除数与被除数分别按照他们的临界值
  • 恒玄BES软件平台学习笔记(5)-I2C

    1 hal iomux set i2c0 配置I2C的Pin脚复用 对应也有hal iomux set i2c1 很多驱动代码没有使用这个API 直接配置了Pin脚 代码看起来不够简洁 2 uint32 t hal i2c open enu
  • gitlab部署及整合Jenkins持续构建(三)nexus私服的安装及实战、linux安装mysql

    文章目录 敏捷持续集成是什么 linux安装jdk和maven 安装jdk 安装maven linux安装nexus3 x nexus私服的使用 编译安装mysql 可能遇到的问题 使用cmake时报错 敏捷持续集成是什么 持续集成是一种软
  • 微信网页如何跟踪调试

    微信从8 0 19开始已经放弃使用X5内核 而使用xweb内核 之前http debugx5 qq com已不可行 新方式如下 1 手机用usb连接至电脑 必须处于usb调试模式 2 在电脑上打开Edge浏览器 地址栏输入如下链接 edge
  • BTC协议

    假如先把去中心化的前提先去掉 我们都信赖一个中心化的机构比如说央行 央行发行货币是由印钞厂那里印钞等等的顺序后才开始发行货币的也就是我们以前最常见的纸币等 而想一下央行要是不发行实物货币了转为发行虚拟货币 央行的公钥我们是都知道的 而我在和
  • 项目时间管理作业

    1 练习题六 1 双代号网络图 2 路径1 A D G J K 长度 2 4 6 1 2 15 路径2 A B E I J K 长度 2 2 2 5 1 2 14 路径3 A B E H K 长度 2 2 2 2 2 10 路径4 A C
  • 原码和补码在计算机中的应用,原码,补码和反码在计算机中的作用

    满意答案 xxyy5566123 2013 06 26 采纳率 58 等级 12 已帮助 13466人 引入原码 反码 和补码的目的就是为了解决减法问题 因为计算机CPU的运算器中只有加法器 要把减法转化成加法来计算 举个例子 A表示十进制
  • 【面试系列】反转链表II

    题意 原题链接 思路 先找到 L R L R L R 由于我们是翻转区间 L R
  • eclipse 下面的folder,source folder,package的区别与作用

    首先明确一点 folder source folder package都是文件夹 既然是文件夹 那么任何的文件都可以往这三种文件夹下面的放 1 他们的区别 folder就是普通的文件夹 它和我们window下面使用的文件夹没有任何区别 so
  • Java 面试知识点合集

    一 基础篇 1 1 java基础 1 面向对象的特征 封装 继承 多态 1 封装 属性能够描述事物的特征 方法能够描述事物的动作 封装就是把同一类事物的共性 包括属性和方法 归到同一类中 方便使用 封装的好处有 隐藏数据及实现细节 对每个属
  • web_servlet总结

    1 Web流程 1 1软件架构 1 C S 客户端 服务器端 cs架构建立在专用的网络上 一般面向相对固定的用户群 它可以对权限进行多层次校验 提供了更安全的存取模式 对信息安全的控制能力很强 2 B S 浏览器 服务器端 bs架构建立在广
  • 服务器千兆网络显示10,win10系统如何查看网卡是千兆还是百兆

    现在的很多新主板配备的都是千兆网络接口 可以更好的满足大宽带用户需求 但是对于win10系统用户来说 并不知道要如何查看网卡是千兆还是百兆 其实方法很简单 现在给大家分享一下win10系统查看网卡是千兆还是百兆的具体解决方法 方法一 1 在
  • 【 ST-LINK\ ST-LINK Utility下载,烧录,批处理操作\命令行】

    必看 必看 必看 下面概述了以下几个烧录软件下载安装 写程器接线 批处理操作内容较多耐心看完 J Falsh 可以称得上目前主流 能烧录目前80 主流芯片 STM32 ST LINK Utility ST系列芯片烧录超方便 ST系列 ST全
  • uview u-input 点击清除按钮,数据清空但视图未清空

    问题描述 点击 uview 的 u input 输入框自带的清除按钮 v model 绑定的数据清空了 但是输入框内还显示着之前的数据 解决方案 将 v model 绑定的值写到 data 初始变量中声明 原始代码
  • pandas的Excel文件读写(一)——组件要求与文件读取

    一 组件要求 实现pandas的Excel文件读写 除了安装pandas外 还需要安装下列组件 1 xlrd 从指定的xls格式文件中读取数据 2 xlwt 写入数据到指定的xls格式文件 3 openpyxl 支持xlsx格式文件的读写
  • 视频下载算法分析

    import random import re import time import requests from Crypto Cipher import AES from Crypto Util Padding import pad fr
  • centos7最小化安装发现没ifconfig命令解决方法

    1 安装的最小化版mini没有ifconfig这个命令 解决方法 yum y install net tools 出现图中错误 怀疑系统还不能上网导致 尝试ping114 114 114 114 如下图 果然不能ping通 的确是网络不通
  • CausalEGM安装使用

    1代码来源 github https github com SUwonglab CausalEGM tree main src pip Tutorial for Python Users CausalEGM documentation 安装
  • 2022.6.27小记

    1 不同页面件间锚点跳转 vue实现不同页面间锚点跳转 半塘潮汐的博客 CSDN博客 不同页面使用锚点 2 vue监听页面滚动距离 mounted window addEventListener scroll this handleScro
  • 玩转Mixly – 3、Arduino AVR编程 之 控制

    以下内容源自Mixly官方技术文档 https mixly readthedocs io zh CN latest Arduino AVR 02Control html 控制 控制类别中包括了时间延迟 条件执行 循环执行 获取运行时间 初始