物联网之Arduino编程语言、条件语句、循环语句、变量、数组、函数

MENU

  • 注释
  • 变量
  • 条件语句
    • if语句
    • switch语句
  • 循环语句
    • for循环
    • while循环
  • 数组
  • 函数
    • 函数基本介绍
    • 常用函数介绍
  • 总结


注释

当编写代码时,注释(comments)非常重要。注释是对代码的解释和说明,且对于其他开发者或者自己日后需要修改代码的时候,都非常有帮助。注释可以提高代码的可读性和可维护性,并且可以帮助自己更好地理解代码。
注释由双斜线//或者斜线星号/*...*/来表示。单行注释以两个斜线开头,多行注释则以斜线星号开头,以星号斜线结尾。

// 这是一个单行注释

/*
这是一个多行注释
它可以跨越多行
*/

注释可以用来解释代码的功能,算法或者实现细节。
1、函数或者方法的用途
2、参数的说明
3、返回值的说明
4、代码实现的说明
5、代码的限制或者假设条件
6、作者信息、创建时间、修改时间

注释应该尽可能的清晰、简洁和明了,同时避免无用的注释,以免给代码带来混淆和干扰。注释应该随着代码一起更新,以确保注释和代码的一致性。


变量

当编写程序时,变量是一个非常基本的概念。一个变量可以存储一个值,这个值可以是数字、字符串、布尔值、对象等。
在Arduino编程语言中,变量需要使用前声明。

数据类型 变量名;

数据类型指定变量可以存储的数据类型。
1、int: 整数类型,占用2个字节,可以表示范围从-3276832767之间的整数。
2、float: 浮点数类型,占用4个字节,可以表示小数。
3、char: 字符类型,占用1个字节,可以表示一个字符。
4、bool: 布尔类型,占用1个字节,只有两个值truefalse

变量名是标识符,命名规则为字母、数字、下划线的组合,第一个字符不能是数字。

// 声明一个名为a的整型变量
int a;
// 声明一个名为b的浮点型变量,并初始化为3.14
float b = 3.14;
// 声明一个名为c的字符型变量,并初始化为字符'A'
char c = 'A';
// 声明一个名为d的布尔型变量,并初始化为true
bool d = true;

变量在程序中可以被赋值或者修改。

// 初始化a为10
int a = 10;
// 修改a的值为20
a = 20;

除上述基本数据类型外,Arduino还支持其他的数据类型,如字符串类型String,数组类型等。在使用变量时,需要根据需求选择合适的数据类型,避免浪费内存。


条件语句

当需要根据某个条件来执行不同的代码时,就需要使用条件语句。在Arduino编程语言中,常见的条件语句有if和switch。


if语句

if语句是最基本的条件语句。

if (condition) {
  // if条件成立时要执行的代码
}

其中,condition是一个条件表达式,如果这个条件表达式的值为真,则执行花括号中的代码块。
如果需要在条件不成立时执行代码,则可以添加else语句。

if (condition) {
	// if条件成立时要执行的代码
} else {
	// if条件不成立时要执行的代码
}

当然,也可以在else语句后面添加一个if语句,从而实现多个条件判断。这个语法结构被称为else if

if (condition1) {
  // if条件1成立时要执行的代码
} else if (condition2) {
  // if条件2成立时要执行的代码
} else {
  // 如果以上条件都不成立,则执行这里的代码
}

switch语句

switch语句也是一种条件语句,通常用于比较一个变量与一系列常量值。

switch (variable) {
  case value1:
    // 如果variable的值等于value1,则执行这里的代码
    break;
  case value2:
    // 如果variable的值等于value2,则执行这里的代码
    break;
  default:
    // 如果variable的值不等于任何一个case的值,则执行这里的代码
    break;
}

在switch语句中,variable是要进行比较的变量,而case是常量值。如果variable的值等于某个case的值,则执行该case对应的代码块,并且在代码块末尾添加break语句,以防止执行其他的case。如果variable的值不等于任何一个case的值,则执行default中的代码块。需要注意的是,在switch语句中,每个case的值必须是常量,且不可重复。
总的来说,if语句和switch语句都是用于控制程序执行流程的条件语句,开发者可以根据具体情况选择使用哪种语句。


循环语句

当需要重复执行一段代码时,就需要用到循环语句。在Arduino中,有两种主要的循环语句for循环和while循环。


for循环

for循环是一个控制结构,它允许重复执行一系列语句,具体次数由循环次数确定。

for (初始化表达式; 布尔表达式; 更新表达式) {
  // 代码块
}

初始化表达式:在循环开始时执行一次,通常用于初始化计数器。
布尔表达式:在每次迭代开始前计算,如果结果为true,则执行循环体语句,否则退出循环。
更新表达式:在每次迭代结束后执行,通常用于更新计数器。

for (int i = 0; i < 10; i++) {
  Serial.println(i);
}

在例子中,初始化表达式初始化了计数器i为0,布尔表达式检查i是否小于10,更新表达式将i增加1。在每次迭代中,计数器i的值都会被输出。


while循环

while循环是另一种重复执行语句块的方法。它会在条件为true时重复执行代码块。

while (布尔表达式) {
  // 代码块
}

while循环只由一个条件表达式组成,当这个表达式为true时,执行循环体语句。在每次循环执行后,条件表达式都会被重新计算。如果条件表达式为false,则跳过循环体语句,直接执行循环后面的代码。

int i = 0;

while (i < 10) {
  Serial.println(i);
  i++;
}

在例子中,初始化变量i的值为0。while循环的条件表达式检查变量i是否小于10。只要条件为true,循环就会一直执行,每次将变量i的值增加1。在每次循环中,变量i的值都会被输出。
总体来说,for循环适用于知道循环次数的情况,而while循环适用于不知道循环次数的情况。


数组

数组是一种用于存储多个值的数据类型。数组的每个元素都有一个唯一的索引,可以使用这个索引来访问数组中的元素。

type arrayName[arraySize];

其中,type是数组中元素的数据类型,arrayName是数组的名称,arraySize是数组的大小。

int myArray[5];

代码定义一个包含5个整数的数组,可以使用myArray[0]到myArray[4]访问这些元素。
可以在定义数组时初始化数组。

int myArray[5] = {1, 2, 3, 4, 5};

代码定义一个包含5个整数的数组,并将其初始化为1、2、3、4、5。
也可以使用以下方式初始化数组。

int myArray[] = {1, 2, 3, 4, 5};

代码定义一个包含5个整数的数组,并将其初始化为1、2、3、4、5。
可以使用下标访问数组元素,下标从0开始。

int myArray[5] = {1, 2, 3, 4, 5};
// 将x的值设置为数组中下标为2的元素,即3。
int x = myArray[2];

可以使用循环遍历数组中的所有元素。

int myArray[5] = {1, 2, 3, 4, 5};

for (int i = 0; i < 5; i++) {
  // 打印数组中的每个元素
  Serial.println(myArray[i]);
}

Arduino中还支持多维数组。

int myArray[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

代码定义一个3行3列的二维数组。

1 2 3
4 5 6
7 8 9

可以使用两个下标来访问数组中的元素。

int myArray[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
// 将x的值设置为数组中第2行第3列的元素,即6。
int x = myArray[1][2];

函数

函数基本介绍

当程序中需要执行某个特定任务时,函数非常有用。函数可以包含一些代码块,这些代码块可以在程序的其他地方多次调用。在Arduino编程语言中,函数包含一个函数头和一个函数体。函数头包含函数名称和参数列表,函数体包含一些要执行的代码。

// 函数头
int add(int a, int b) {
  //函数体
  int sum = a + b;
  
  return sum;
}

函数的名称是add,它有两个参数,分别是a和b,函数体包含a和b相加的操作,最后通过return返回结果。
在程序中调用函数。

int x = 3;
int y = 5;
// 调用函数
int z = add(x, y);

在示例中,将x和y作为参数传递给add函数,该函数返回它们的和,最后将结果存储在z变量中。
函数的参数也可以是其他类型的数据,例如字符串、浮点数等等。在Arduino编程语言中,函数也可以没有参数,也可以没有返回值。

// 函数头
void sayHello() {
// 函数体
  Serial.println("Hello World!");
}

函数的名称是sayHello,它没有参数和返回值。函数体包含一条输出语句,它将字符串"Hello World!"输出到串行监视器中。
函数的使用可以让代码更加清晰、易读和易于维护。通过将代码块封装到函数中,可以使代码更加模块化,也可以避免在多个地方重复编写相同的代码。在编写代码时,应该尽可能地使用函数,以便使代码更加可读、易于维护和可扩展。


常用函数介绍

使用Arduino进行编程时,有许多内置函数可用。这些函数可以更轻松地编写程序,处理输入和输出,控制逻辑流和实现其他功能。


01、pinMode(pin, mode): 用于配置数字引脚的输入或输出模式。pin是数字引脚的编号,mode是要设置的模式(输入或输出)。
02、digitalWrite(pin, value): 用于在数字引脚上写入数字值(HIGH或LOW)。pin是数字引脚的编号,value是要写入的值。
03、digitalRead(pin): 用于读取数字引脚上的数字值(HIGH或LOW)。pin是数字引脚的编号。
04、analogRead(pin): 用于读取模拟引脚上的模拟值(0-1023)。pin是模拟引脚的编号。
05、analogWrite(pin, value): 用于在支持PWM输出的数字引脚上输出模拟值(0-255)。pin是数字引脚的编号,value是要输出的值。
06、delay(ms): 用于在程序中创建暂停(延迟)时间。ms是要延迟的毫秒数。
07、millis(): 返回自启动以来的毫秒数,可以用于时间跟踪和计时器。
08、Serial.begin(baud): 用于初始化串口通信,其中baud是波特率。
09、Serial.print(data): 用于将数据打印到串口监视器。data可以是数字,字符串或其他数据类型。
10、Serial.available(): 用于检查是否有数据可以从串口读取。


这些函数只是Arduino可用的众多函数中的一部分。熟悉这些常用函数可以帮助我们更轻松地编写程序,并为实现特定功能提供了有用的工具。
下面是一个简单的实例代码,演示如何控制一个LED灯的亮灭。

// 设置LED引脚
int led_pin = 2;

void setup() {
  // 设定引脚为输出模式
  pinMode(led_pin, OUTPUT);
}

void loop() {
  // 点亮LED
  digitalWrite(led_pin, HIGH);
  // 等待一段时间
  delay(1000);
  // 关闭LED
  digitalWrite(led_pin, LOW);
  // 等待一段时间
  delay(1000);
}

代码段中,首先定义一个整型变量led_pin,表示连接LED灯的引脚。在setup()函数中,我们将该引脚设定为输出模式,然后在loop()函数中交替点亮和关闭LED灯,并在两次操作之间等待1秒钟的时间。


总结

本文介绍Arduino的基本概念和编程语言,并演示如何通过Arduino板上的数字和模拟引脚来控制硬件设备。对于初学者而言,理解这些基础知识是开始进行更高级项目的基础。如果想进一步深入了解Arduino,可以参考官方文档或者更高级别的教程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/879550.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vulnhub:BlueSky

靶机下载地址 信息收集 主机发现 nmap扫描攻击机同网段存活主机。 nmap 192.168.31.0/24 -Pn -T4 靶机ip&#xff1a;192.168.31.171。 端口扫描 nmap 192.168.31.171 -A -p- -T4 开放端口22,8080。 目录扫描 访问8080端口&#xff0c;如图&#xff0c;是tomcat管理页面…

硬件工程师笔试面试——变压器

目录 9、变压器 9.1 基础 变压器原理图 变压器实物图 9.1.1 概念 9.1.2 变压器组成结构 9.1.3 变压器原理 9.1.4 变压器的类型 9.1.5 应用领域 9.2 相关问题 9.2.1 变压器的工作原理是什么? 9.2.2 如何选择合适的变压器类型? 9.2.3 变压器在实际应用中,如何进行…

安卓BLE蓝牙通讯

蓝牙测试demo 简介   Android手机间通过蓝牙方式进行通信&#xff0c;有两种常见的方式&#xff0c;一种是socket方式&#xff08;传统蓝牙&#xff09;&#xff0c;另一种是通过GATT&#xff08;BLE蓝牙&#xff09;。与传统蓝牙相比&#xff0c;BLE 旨在大幅降低功耗。这样…

iKuai使用及设置流程

iKuai使用及设置流程 iKuai安装步骤 一、配置主机 1.电脑连接ETH0网口 2.ETH1网口连接猫上面的千兆口 3.手动配置pc的IP地址和192.168.1.1./24在同一网段 3.浏览器输入192.168.1.1 admin admin 二、外网设置 1.直接联通电信网络设置 2.点击 网络设置-内外网设置-点击接…

Python “字符串操作” ——Python面试100道实战题目练习,巩固知识、检查技术、成功就业

本文主要是作为Python中列表的一些题目&#xff0c;方便学习完Python的元组之后进行一些知识检验&#xff0c;感兴趣的小伙伴可以试一试&#xff0c;含选择题、判断题、实战题、填空题&#xff0c;答案在第五章。 在做题之前可以先学习或者温习一下Python的列表&#xff0c;推荐…

食品检测与分类系统源码分享

食品检测与分类检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

推荐10款最佳的电脑监控软件,知名电脑监控软件推荐

随着互联网和科技的飞速发展&#xff0c;电脑监控软件成为企业和个人用户管理和保护信息安全的必备工具。这些软件可以帮助你实时了解电脑的使用情况、保护隐私、优化工作效率&#xff0c;甚至防止潜在的安全威胁。在这篇文章中&#xff0c;我们将为你推荐10款最佳的电脑监控软…

iPhone 16系列:摄影艺术的全新演绎,探索影像新境界

在科技的浪潮中&#xff0c;智能手机摄影功能的进化从未停歇。 苹果公司即将推出的iPhone 16系列&#xff0c;以其卓越的相机升级和创新特性&#xff0c;再次站在了手机摄影的前沿。 从硬件到软件&#xff0c;从拍照体验到图像处理&#xff0c;iPhone 16系列都展现了其在移动…

1×4矩阵键盘详解(STM32)

目录 一、介绍 二、传感器原理 工作原理介绍 三、程序设计 main.c文件 1x4key.h文件 1x4key.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 矩阵键盘是单片机外部设备中所使用排布类似于矩阵键盘组&#xff0c;矩阵式结构的键盘会比独立键盘复杂一点&#xff…

国内外ChatGPT网站集合,无限制使用【2024-09最新】~

经过我一年多以来&#xff0c;使用各种AI工具的体验&#xff0c;我收集了一批AI工具和站点 这些工具都是使用的最强最主流的模型&#xff0c;也都在各个领域里都独领风骚的产品。 而且&#xff0c;这些工具你都可以无限制地使用。 无论你是打工人、科研工作者、学生、文案写…

Python 数学建模——傅里叶变换时间序列分析

文章目录 前言原理Python 库函数实现单周期函数多周期函数真实数据挑战 前言 在数学建模过程中&#xff0c;得到一个序列 x 1 , ⋯ , x n x_1,\cdots,x_n x1​,⋯,xn​&#xff0c;我们首先要进行数据分析&#xff0c;其中就包括分析数据的周期性。这里的周期性不是数学上严格…

逆向学习系列(三)adb的使用

由于是记录学习&#xff0c;我就用结合自己的理解&#xff0c;用最通俗的语言进行讲解。 adb是android debug bridge的简写&#xff0c;其作用就是将电脑和手机相连接&#xff0c;用电脑控制手机。 一、adb哪里来 我使用的adb一般都是安装模拟器的时候&#xff0c;模拟器自带…

深入探索Android开发之Java核心技术学习大全

Android作为全球最流行的移动操作系统之一&#xff0c;其开发技能的需求日益增长。本文将为您介绍一套专为Android开发者设计的Java核心技术学习资料&#xff0c;包括详细的学习大纲、PDF文档、源代码以及配套视频教程&#xff0c;帮助您从Java基础到高级特性&#xff0c;再到A…

Basler 相机与LabVIEW进行集成

Basler 提供的相机驱动和 SDK (Software Development Kit) 允许用户通过 LabVIEW 对相机进行控制和图像采集。以下是 Basler 相机与 LabVIEW 集成的几种方式&#xff1a; 1. Baslers Pylon SDK Basler 提供的 Pylon SDK 是一套用于控制 Basler 相机的开发工具包&#xff0c;支…

13 Midjourney从零到商用·实战篇:漫画设计一条龙

大家好&#xff0c;经过前面十三篇文章,相信大家已经对Midjourney的使用非常熟悉了&#xff0c;那么现在我们开始进行实际的项目操作啦&#xff0c;想想是不是有点小激动呀&#xff0c;本篇文章为大家带来Midjourney在漫画制作领域的使用流程&#xff0c;同样也适用于现在短视频…

2024.9.12(k8s环境搭建2)

一、接9.11 19、部署calico的pod 4. 查看容器和节点状态 异常处理&#xff1a; 出现Init:0/3&#xff0c;查看node节点 /var/log/messages是否有除网络异常之外的报错信息 三台机器执行&#xff1a;&#xff08;更新版本&#xff09; yum list kernel yum update kernel reb…

基于JavaWeb开发的java+Springboot操作系统教学交流平台详细设计实现

基于JavaWeb开发的javaSpringboot操作系统教学交流平台详细设计实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接…

云计算实训50——Kubernetes基础命令、常用指令

一、Kubernetes 自动补齐 # 安装自动补齐软件 [rootmaster ~]# yum -y install bash-completion # 临时开启自动补齐功能 [rootmaster ~]# source # 永 久开启自动补齐功能 [rootmaster ~]# echo "source > ~/.bashrc 二、Kubernetes 基础命令 kubectl [command] …

国产化中间件正在侵蚀开源中间件

开源中间件的发展趋势表明&#xff0c;它们将继续在技术创新和生态建设中发挥重要作用&#xff0c;尤其是在云计算、大数据等新兴技术领域。开源中间件如Apache Kafka、RabbitMQ、ActiveMQ和RocketMQ等在市场上有着广泛的应用。它们在技术社区中得到了良好的支持&#xff0c;并…

计算机网络30——Linux-gdb调试命令makefile

1、开始调试 编译时带-g为调试&#xff0c;带调试信息编译后的可执行文件更大 2、进入调试 使用gdb 可执行文件名——进入调试 失败版&#xff1a; 成功版&#xff1a; 3、l命令 l什么都不加——列出10行代码 l 行号——行号的行在中间&#xff0c;向上向下展示10行 4、st…