- 机器人等级考试
Arduino变量与运算符入门
- 2025-7-7 11:41:52 @
Arduino变量与运算符入门
一、认识 Arduino 与变量基础
(一)课前准备
我们要开始玩 Arduino 啦,它就像一个小机器人的“大脑”,能让我们的想法变成现实!先准备好 Arduino 开发环境(软件),想象它是一个神奇的画板,我们要在上面画画(写代码)哟。
(二)变量是什么?
变量就像一个个小盒子,能装不同的东西,比如数字、文字。在 Arduino 里,我们用变量存数据,方便又好玩!
示例 1:简单变量创建与使用(像装糖果进盒子)
void setup() {
// 初始化串口,这样我们能看到 Arduino 说的“话”,9600 是一种交流速度
Serial.begin(9600);
int a; // 创建一个叫“a”的小盒子,专门装整数(就像装整数颗糖果)
a = 100; // 把 100 颗“数字糖果”放进“a”盒子里
Serial.println(a); // 让 Arduino 把盒子里的“糖果数”通过串口说出来,我们就能看到啦
}
void loop() {
// loop 里暂时没任务,就空着,它会一直循环,不过这里我们 setup 已经做完事啦
}
注释解释:
int a;
:告诉 Arduino 准备一个叫a
的小盒子,int
表示这个盒子只能装整数,像 1、2、3 这样的数。a = 100;
:把数字 100 放进a
这个盒子,就像往盒子里放糖果。Serial.println(a);
:让 Arduino 通过串口(我们电脑上能看到的窗口)把a
盒子里的数字说出来,这样我们就知道盒子里有啥啦。
示例 2:变量值可以改变(换糖果)
void setup() {
Serial.begin(9600);
int a;
a = 100; // 先放 100 颗“糖果”
a = 50; // 哎呀,又换成 50 颗啦,变量里的值能变哟
Serial.println(a); // 现在说出来的就是 50 啦
}
void loop() {
}
小思考:猜猜串口会显示啥?对啦,是 50,因为后面把值换成 50 啦,变量的值可以随时换!
(三)全局变量和局部变量(盒子的“活动范围”)
- 全局变量:在函数(像
setup
、loop
这些大括号里的部分)外面创建的变量,就像家里客厅的大盒子,整个 Arduino 程序都能用到它! - 局部变量:在函数(比如
setup
里的大括号)里面创建的变量,像房间里的小盒子,只能在这个房间(函数)里用。
示例 3:全局变量(客厅的盒子)
int a = 50; // 全局变量,整个程序都能用,在函数外面创建的哟
void setup() {
Serial.begin(9600);
a = 100; // 在 setup 里也能改全局变量的值,因为它是“客厅盒子”,哪里都能碰
}
void loop() {
Serial.println(a); // loop 里也能用到全局变量“a”,会一直打印 a 的值(这里是 100)
}
注释解释:
int a = 50;
在函数外面,所以是全局变量,setup
和loop
都能操作它。- 运行后,串口会一直打印 100,因为
setup
里把它改成 100 啦,loop
能一直访问这个全局变量。
示例 4:局部变量(房间里的盒子,出错示例让你明白)
void setup() {
int a = 50; // 局部变量,只能在 setup 里用
Serial.begin(9600);
}
void loop() {
// 这里想用 a,就会出错!因为 a 是 setup 房间里的小盒子,loop 房间进不来
// Serial.println(a); 把这行解开就会报错,小朋友别学错的哟
}
错误原因:a
在 setup
里创建,是局部变量,出了 setup
的大括号(房间),loop
就找不到它啦,所以不能用,这样写电脑会提示错误,告诉我们变量没定义,就像找错房间拿不到盒子一样!
二、Arduino 与输入输出(和外界互动)
(一)读取引脚状态(听听 Arduino 外接的“小消息”)
我们可以让 Arduino 读外接传感器(比如按钮)的状态,就像听按钮说“我被按啦”或者“没被按”。
示例 5:读取数字引脚状态(按钮状态)
void setup() {
Serial.begin(9600); // 还是先打开串口,听 Arduino 说话
pinMode(4, INPUT); // 告诉 Arduino,第 4 号引脚是用来“听”外界消息的(输入),比如接按钮
}
void loop() {
int val = digitalRead(4); // 把 4 号引脚听到的消息(0 或 1,0 像没按,1 像按了)存到 val 变量里
Serial.println(val); // 把消息通过串口说出来,我们就能知道按钮状态啦
delay(20); // 等一小下,别让消息跑得太快,20 毫秒,就像数 20 下小蚂蚁爬的时间
}
注释解释:
pinMode(4, INPUT);
:设置引脚 4 为输入模式,就像给 Arduino 装了个小耳朵在 4 号引脚,听外面的信号。digitalRead(4);
:让小耳朵听 4 号引脚的信号,按按钮的话,可能收到 1,没按就是 0,把结果存到val
里。delay(20);
:暂停 20 毫秒,让我们能清楚看到串口打印的内容,不然太快就看不清啦。
(二)全局变量在输入输出里的巧用(让盒子跨房间传消息)
全局变量能在 setup
和 loop
之间传数据,比如把引脚读到的值存到全局变量,方便到处用!
示例 6:用全局变量存引脚值(跨房间传消息)
int a; // 全局变量,当“传话筒”,存引脚状态
void setup() {
Serial.begin(9600);
pinMode(4, INPUT); // 小耳朵装在 4 号引脚
}
void loop() {
a = digitalRead(4); // 把 4 号引脚听到的消息存到全局变量 a
Serial.print("按键的值:"); // 先打印文字“按键的值:”
Serial.println(a); // 再打印 a 里存的状态(0 或 1)
delay(20);
}
运行效果:串口会一直显示“按键的值:0”或者“按键的值:1”,按按钮的时候,值就会变,因为全局变量 a
把 setup
能访问的引脚状态,带到 loop
里用啦,就像传话筒把消息从一个房间带到另一个房间!
三、算术运算(让 Arduino 做数学题)
Arduino 还能做数学题哟,加减乘除都不在话下,就像小计算器!
示例 7:算术运算符大集合(做数学题)
void setup() {
Serial.begin(9600); // 打开串口看结果
int a = 4, b = 8; // 创建两个变量,a 装 4,b 装 8,像两个数字盒子
int res; // 准备一个盒子存计算结果
// 加法:a + b 就是 4 + 8
Serial.println(a + b); // 串口会打印 12
// 减法:a - b 就是 4 - 8
Serial.println(a - b); // 串口会打印 -4(负数也会算哟)
// 乘法:a * b 就是 4 * 8
Serial.println(a * b); // 串口会打印 32
// 除法:b / a 就是 8 / 4
Serial.println(b / a); // 串口会打印 2(整数除法,只取商)
// 有括号先算括号里的,(a + b) 是 12,再乘 3
res = (a + b) * 3;
Serial.println(res); // 串口会打印 36
}
void loop() {
// 这里暂时没事做,setup 里把数学题做完啦
}
数学小知识:
- 加法用
+
,减法用-
,乘法用*
,除法用/
。 - 有括号的话,先算括号里的,就像我们做数学题一样,
(4 + 8) * 3
先算 4 + 8 得 12,再乘 3 得 36 。 - 整数除法(像
8 / 4
)会直接得到商,不管余数,所以结果是 2 ,不是带小数的哟。
四、综合小项目:按钮控制与变量联动(好玩的互动)
我们结合前面的知识,做个小项目:读按钮状态(用变量存),然后让串口打印出来,还能简单改值玩!
// 全局变量存按钮状态
int buttonState;
void setup() {
Serial.begin(9600);
// 设置 4 号引脚为输入,接按钮
pinMode(4, INPUT);
}
void loop() {
// 读按钮状态,存到全局变量
buttonState = digitalRead(4);
Serial.print("按钮状态:");
Serial.println(buttonState);
// 假装做个小运算,比如按钮按下去(状态 1),给变量加加玩
if (buttonState == 1) {
// 自己创建个变量玩,局部变量,只在 loop 里用
int temp = 0;
temp = temp + 1; // 按一次按钮,temp 加 1
Serial.print("临时变量 temp:");
Serial.println(temp);
delay(2000);
}
delay(20);
}
项目解释:
- 全局变量
buttonState
存按钮状态,loop
一直读它,串口一直显示按钮是按(1)还是没按(0)。 - 按按钮的时候,会进入
if
里面,创建局部变量temp
,每次按按钮,temp
就加 1 ,串口会显示temp
的值,不过因为temp
是局部变量,每次if
结束就会“消失”,下次按又从 0 开始加,好玩吧!
五、学习总结
- 变量:像小盒子,装数字等数据,有全局(整个程序用)和局部(只能在函数里用)之分,值还能改变。
- 输入输出:用
pinMode
设置引脚为输入,digitalRead
读引脚状态(比如按钮),通过串口Serial
打印消息给我们看。 - 算术运算:Arduino 能做加减乘除,和数学题一样,有括号先算括号里的,整数除法只取商。
小朋友们,现在你们可以用 Arduino 做很多好玩的事啦,比如读按钮、做数学题,快自己试试改改代码,让 Arduino 听你的话,完成更有趣的任务吧! 后续还能学让 Arduino 控制小灯亮灭、驱动小电机,超好玩,继续加油哟!
2 条评论
-
admin SU @ 2025-7-7 11:51:15
Arduino变量与运算符入门
一、什么是变量?
变量就像是一个容器,用来存储数据。想象成一个贴了标签的盒子,你可以往里面放东西(赋值),也可以随时查看里面的东西(读取),还能更换里面的东西(重新赋值)。
void setup() { int a; // 创建一个叫"a"的整数类型变量(盒子) a = 100; // 把100放进这个盒子里 Serial.begin(9600); // 初始化串口通信 Serial.println(a); // 查看盒子里的内容并打印 } void loop() { // 循环函数,这里暂时为空 }
二、变量的创建与使用规则
-
先创建,后使用
必须先声明变量才能使用,就像先要有盒子才能放东西void setup() { Serial.begin(9600); // a = 200; 错误!还没创建变量a就使用了 int a; // 正确:先创建变量 a = 200; // 现在可以使用了 Serial.println(a); }
-
变量的赋值方式
- 初始化:创建时直接赋值
int a = 6; // 创建变量a的同时赋值6(初始化)
- 动态赋值:创建后再赋值
int a; // 先创建变量 a = 6; // 之后再赋值(动态赋值)
-
连续创建多个变量
int a, b = 100, c; // 同时创建a、b、c三个变量,其中b初始化为100
三、变量的命名规则
给变量取名很重要,好的名字能让代码更容易理解:
- 允许使用的字符:大写字母、小写字母、下划线(_)、数字、$符号
- 禁止规则:
- 数字不能放在开头(如
3as
是错误的) - 不能使用系统关键字(如
int
、void
等) - 不能包含特殊字符(如
#
、-
等)
- 数字不能放在开头(如
- 命名建议:
- 见名知意(如
buttonState
表示按键状态,ledPin
表示LED引脚) - 不要太长,简洁明了
- 见名知意(如
// 正确的变量名示例 int score; int studentAge; int _count; int a1; // 错误的变量名示例 // int 2name; // 数字开头 // int my-score; // 包含特殊字符 // int int; // 使用关键字
四、变量的作用域:局部变量与全局变量
变量的作用域就是变量能被使用的范围
-
局部变量
- 在函数内部创建的变量
- 只在该函数内部有效
- 函数执行结束后会被销毁
void setup() { Serial.begin(9600); int localVar = 10; // 局部变量,仅在setup()中有效 Serial.println(localVar); // 正确,可以使用 } void loop() { // Serial.println(localVar); 错误!loop()中不能使用setup()的局部变量 }
-
全局变量
- 在所有函数外部创建的变量
- 整个程序都能使用
- 从创建位置到程序结束都有效
int globalVar; // 全局变量,所有函数都能使用 void setup() { Serial.begin(9600); globalVar = 20; // 在setup()中赋值 } void loop() { Serial.println(globalVar); // 在loop()中使用,完全没问题 delay(1000); }
五、算术运算符的使用
变量经常需要进行计算,Arduino支持多种算术运算:
运算符 功能 示例 结果 + 加法 3 + 5 8 - 减法 3 - 5 -2 * 乘法 3 * 5 15 / 除法 10 / 5 2 运算顺序遵循数学规则:先算括号内,再算乘除,最后算加减
void setup() { Serial.begin(9600); int a = 4, b = 8; int result; Serial.println(a + b); // 打印12(4+8) Serial.println(a - b); // 打印-4(4-8) Serial.println(a * b); // 打印32(4*8) Serial.println(b / a); // 打印2(8/4) result = (a + b) * 3; // 先算括号内的4+8=12,再乘以3 Serial.println(result); // 打印36 } void loop() { // 循环函数为空 }
六、实际应用示例:读取按键状态
结合变量和串口通信,读取按键状态并打印:
// 全局变量:存储按键状态 int buttonState; void setup() { Serial.begin(9600); // 初始化串口通信,波特率9600 pinMode(4, INPUT); // 设置引脚4为输入模式(接按键) } void loop() { buttonState = digitalRead(4); // 读取引脚4的状态并保存到变量 Serial.print("按键的值:"); // 打印提示文字 Serial.println(buttonState); // 打印按键状态(0或1) delay(20); // 延时20毫秒 }
常见错误及解决方法
-
变量未声明就使用
错误提示:'a' was not declared in this scope
解决:先创建变量(如int a;
)再使用 -
变量重复声明
错误提示:redeclaration of 'int a'
解决:同一个作用域内不能有同名变量 -
局部变量跨函数使用
错误提示:'a' was not declared in this scope
解决:如果需要在多个函数中使用,改为全局变量
通过以上内容,你已经掌握了Arduino中变量的基本概念、使用方法和运算符的应用。多写代码练习,就能熟练掌握这些基础知识点了!
-
-
2025-7-7 11:45:38@
Arduino入门教程:变量与基础运算
欢迎来到Arduino的世界!本教程专为中小学生设计,通过简单易懂的例子,带你学习Arduino编程中的变量和基础运算知识。
什么是Arduino?
Arduino是一种开源电子原型平台,包含硬件(开发板)和软件(编程环境)。我们可以通过编写代码,让Arduino板实现各种有趣的功能,比如控制LED、读取传感器数据等。
第一个程序:读取引脚状态
让我们从一个简单的程序开始,看看Arduino如何工作:
// 程序开始时运行一次的函数 void setup() { // 初始化串口通信,波特率为9600 Serial.begin(9600); // 设置引脚4为输入模式 pinMode(4, INPUT); } // 程序启动后反复运行的函数 void loop() { // 读取引脚4的状态并通过串口打印 Serial.println(digitalRead(4)); // 延时20毫秒 delay(20); }
代码解释:
setup()
:Arduino上电或重启时会执行一次这里的代码Serial.begin(9600)
:开启串口通信,9600是通信速率pinMode(4, INPUT)
:设置数字引脚4为输入模式,用于接收外部信号loop()
:setup()
执行完后,会一直重复执行loop()
里的代码digitalRead(4)
:读取引脚4的状态(0或1)Serial.println()
:将内容通过串口发送到电脑delay(20)
:暂停20毫秒再执行下一次循环
变量:程序中的"容器"
变量就像一个容器,可以用来存储数据。想象一下,变量就像一个贴了标签的盒子,我们可以把东西放进去,也可以把里面的东西换掉。
变量的创建与使用
void setup() { // 创建一个整数类型的变量a int a; // 给变量a赋值100(把100放进标有a的盒子里) a = 100; // 初始化串口通信 Serial.begin(9600); // 打印变量a的值 Serial.println(a); } // 循环函数为空,什么也不做 void loop() { }
代码解释:
int a;
:创建变量,int
表示整数类型,a
是变量的名字a = 100;
:赋值语句,把100保存到变量a中- 变量的值可以随时改变,后面的赋值会覆盖前面的值
变量值的更新
void setup() { int a; // 创建变量a a = 100; // 先给a赋值100 a = 50; // 再给a赋值50(现在a的值是50) Serial.begin(9600); Serial.println(a); // 会打印出50,而不是100 } void loop() { }
注意:变量就像一个盒子,一次只能装一个值,新的值会把旧的值替换掉
变量的规则
- 先创建,后使用
void setup() { // a = 200; 这行代码会报错,因为还没有创建变量a int a; // 先创建变量a a = 100; // 现在可以使用了 a = 50; Serial.begin(9600); Serial.println(a); } void loop() { }
如果在创建变量前就使用它,会出现错误:
'a' was not declared in this scope
(变量a未声明)- 同一作用域内,变量名不能重复
void setup() { int a; // 创建变量a // int a; 这行会报错,因为变量a已经创建过了 a = 100; a = 50; Serial.begin(9600); Serial.println(a); } void loop() { }
重复创建同名变量会出现错误:
redeclaration of 'int a'
(重复声明int类型的a)- 可以同时创建多个变量
void setup() { // 同时创建三个变量 int a, b, c; // 也可以分开创建 // int a; // int b; // int c; a = 10; b = 20; c = a + b; Serial.begin(9600); Serial.println(c); // 会打印30 } void loop() { }
变量的生命周期与作用域
变量有自己的"生命周期",也就是它从创建到消失的时间段。
局部变量
在函数内部创建的变量叫做局部变量,它只在这个函数内部有效:
void setup() { // 在setup()函数里创建局部变量a int a = 50; Serial.begin(9600); } void loop() { // 这里会报错,因为a是setup()里的局部变量,在loop()里不存在 Serial.println(a); // 错误:'a' was not declared in this scope }
为什么会报错?
- 局部变量就像你放在卧室里的玩具,只能在卧室里玩,拿到客厅就找不到了
- 当setup()函数执行结束后,它里面的局部变量就会被"销毁"
全局变量
在所有函数外部创建的变量叫做全局变量,整个程序都可以使用:
// 在函数外部创建全局变量a int a; void setup() { Serial.begin(9600); Serial.println("程序启动啦!"); // 设置引脚4为输入模式 pinMode(4, INPUT); } void loop() { // 在loop()函数里使用全局变量a a = digitalRead(4); // 读取引脚4的状态并保存到a中 Serial.print("按键的值"); // 打印文字,不换行 Serial.println(a); // 打印变量a的值 delay(20); // 延时20毫秒 }
全局变量的特点:
- 从创建的地方开始,到整个程序结束都有效
- 所有函数都可以使用和修改全局变量
- 就像放在客厅里的玩具,家里所有人都可以玩
变量的初始化
创建变量时可以直接给它赋值,这叫做初始化:
void setup() { // 创建变量的同时赋值(初始化) int a = 5; // 变量a的初始值是5 a = 10; // 之后可以修改为10 Serial.begin(9600); Serial.println(a); // 会打印10 } void loop() { }
也可以同时创建多个变量并初始化:
void setup() { // 同时创建多个变量 int a = 4, b = 8; // a=4,b=8 int res; // 只创建不初始化 Serial.begin(9600); // 可以直接使用变量进行计算 Serial.println(a + b); // 打印a加b的结果:12 Serial.println(a - b); // 打印a减b的结果:-4 Serial.println(a * b); // 打印a乘b的结果:32 Serial.println(b / a); // 打印b除以a的结果:2 // 计算后将结果保存到变量中 res = (a + b) * 3; // 先算括号里的a+b,再乘以3 Serial.println(res); // 打印结果:36 } void loop() { }
算术运算符
Arduino支持多种算术运算,就像我们数学课上学的加减乘除:
运算符 功能 例子 结果 + 加法 3 + 5 8 - 减法 3 - 5 -2 * 乘法 3 * 5 15 / 除法 10 / 5 2 运算时遵循数学中的优先级:先算括号里的,再算乘除,最后算加减。
void setup() { Serial.begin(9600); // 创建三个变量 int a, b, result; a = 3; // a的值是3 b = 5; // b的值是5 // 各种运算示例 Serial.println(a * b); // 乘法:3*5=15 Serial.println(a + b); // 加法:3+5=8 Serial.println(a - b); // 减法:3-5=-2 Serial.println(10 / 5); // 除法:10/5=2 // 带括号的运算 result = (a + b) * 2; // 先算3+5=8,再算8*2=16 Serial.println(result); // 会打印16 } void loop() { }
综合练习:使用变量读取传感器
让我们结合前面学的知识,编写一个读取传感器并使用变量存储数据的程序:
// 创建全局变量存储传感器值 int sensorValue; void setup() { // 初始化串口通信 Serial.begin(9600); // 设置引脚2为输入模式,连接传感器 pinMode(2, INPUT); } void loop() { // 读取传感器值并保存到变量中 sensorValue = digitalRead(2); // 打印传感器值 Serial.print("传感器当前值:"); Serial.println(sensorValue); // 简单判断 if (sensorValue == 1) { Serial.println("传感器检测到信号"); } else { Serial.println("未检测到信号"); } // 延时100毫秒,避免数据刷新太快 delay(100); }
总结
通过本教程,你已经学会了:
- 变量的概念:像盒子一样存储数据的容器
- 如何创建变量:
数据类型 变量名;
(如int a;
) - 如何给变量赋值:
变量名 = 值;
(如a = 10;
) - 变量的两种类型:
- 局部变量:在函数内部创建,只在该函数内有效
- 全局变量:在函数外部创建,整个程序都可以使用
- 基本算术运算:
+
(加)、-
(减)、*
(乘)、/
(除)
下一课,我们将学习如何使用变量来控制LED灯和其他电子元件,让你的Arduino项目动起来!
- 1