- 机器人等级考试
Arduino 学习笔记教程:从基础到实践,培养逻辑思维
- 2025-7-23 22:10:21 @
Arduino 学习笔记教程:从基础到实践,培养逻辑思维
一、课程目标
通过 Arduino 实践操作与历史人物精神关联,学习数字/模拟输出、变量、串口通信等知识,理解坚持探索、追求真理的科研精神,提升逻辑思维与实践能力 。
二、硬件准备
Arduino 开发板(如 Uno 型号 )、LED 灯、电位器(模拟输入器件 )、杜邦线、USB 数据线 。
三、软件准备
Arduino IDE(官网下载对应系统版本安装 )。
四、基础概念与核心逻辑
(一)变量与常量
- 常量:用
const
修饰,值运行中不变。如const int ledPin = 3;
,ledPin
代表 LED 引脚编号,设为常量避免误改。 - 变量:存储可变数据,像
int val;
,val
存模拟输入值,随电位器调节变化 。
(二)函数作用
setup()
:初始化配置,程序启动执行一次。用于设置引脚模式(输入/输出 )、串口初始化等,如pinMode(ledPin, OUTPUT);
设引脚为输出 。loop()
:循环执行代码,实现持续功能(如循环读取传感器、控制设备 )。
(三)数字与模拟输出
- 数字输出:
digitalWrite(pin, value)
,value
取HIGH
(高电平,点亮 LED )或LOW
(低电平,熄灭 LED ),控制 LED 简单亮灭 。 - 模拟输出:
analogWrite(pin, value)
,value
范围 0 - 255,实现 LED 亮度渐变等效果(如value
越大,亮度越高 )。
(四)串口通信
Serial.begin(9600);
初始化串口,波特率 9600;Serial.print()
/Serial.println()
向串口监视器输出信息,用于调试(如打印传感器数值 )。
五、实践案例
案例 1:LED 基本控制(数字输出 )
// 定义 LED 引脚为常量,值固定为 3
const int ledPin = 3;
void setup() {
// 设置 ledPin 为输出模式,让开发板能向 LED 送电控制亮灭
pinMode(ledPin, OUTPUT);
}
void loop() {
// 输出高电平,点亮 LED
digitalWrite(ledPin, HIGH);
// 延时 1 秒,保持点亮状态
delay(1000);
// 输出低电平,熄灭 LED
digitalWrite(ledPin, LOW);
// 延时 1 秒,保持熄灭状态,循环实现“亮 1 秒、灭 1 秒”
delay(1000);
}
逻辑:setup
设引脚模式,loop
循环让 LED 亮灭交替,delay
控制亮灭时长 。
案例 2:LED 亮度调节(模拟输出 + 模拟输入 )
// LED 引脚常量
const int ledPin = 3;
// 电位器接的模拟输入引脚(A0 是开发板模拟输入通道 )
const int potPin = A0;
void setup() {
// 设 LED 引脚为输出
pinMode(ledPin, OUTPUT);
// 设电位器引脚为输入
pinMode(potPin, INPUT);
// 初始化串口,波特率 9600,方便看电位器数值
Serial.begin(9600);
}
void loop() {
// 读电位器值(0 - 1023 范围 ),存 val
int val = analogRead(potPin);
// 打印 val 到串口监视器,调试看输入数值
Serial.println(val);
// 电位器值转 0 - 255 范围(因 analogWrite 需这范围 ),控制 LED 亮度
analogWrite(ledPin, val / 4);
// 延时 10 毫秒,让亮度变化平滑,也给串口打印留时间
delay(10);
}
逻辑:setup
完成引脚与串口初始化;loop
循环读电位器值,转换后模拟输出控制 LED 亮度,同时串口打印数值,旋转电位器可看到 LED 亮度和串口数值同步变化 。
案例 3:串口打印变量运算(强化变量与串口 )
void setup() {
// 初始化串口,波特率 9600,用于输出信息
Serial.begin(9600);
// 定义两个局部变量 a、b,存整数
int a, b;
// 给变量 a 赋值 10
a = 10;
// 给变量 b 赋值 20
b = 20;
// 计算 a + b,结果存 sum
int sum = a + b;
// 串口输出“sum = ”,不换行
Serial.print("sum = ");
// 输出 sum 数值并换行,串口监视器看计算结果
Serial.println(sum);
}
void loop() {
// loop 函数空着,本案例只需 setup 里执行一次运算打印
}
逻辑:setup
里定义变量、赋值、运算,串口输出结果;因无循环需求,loop
为空。可扩展让 loop
循环,结合传感器数值做动态运算 。
七、常见问题与解决
(一)LED 不亮
- 检查接线:LED 长脚(正极 )接开发板引脚,短脚(负极 )接 GND,杜邦线是否松动 。
- 看代码:
pinMode
是否设为OUTPUT
,digitalWrite
值是否正确(HIGH
对应点亮 );模拟输出时,analogWrite
的值是否在 0 - 255 ,电位器是否接好(模拟输入案例 )。
(二)串口监视器无数据或乱码
- 检查初始化:
Serial.begin(9600);
波特率是否与串口监视器设置一致(右下角选 9600 )。 - 代码逻辑:
Serial.print
/println
语句是否在循环或执行流程里,确保有数据输出 。
(三)模拟输入值异常
- 电位器接线:三个引脚,两边接 5V 和 GND,中间接模拟输入引脚(如 A0 ),接错会导致数值不对(固定 0 或 1023 )。
- 代码:
analogRead
函数参数是否对应引脚(如analogRead(potPin)
,potPin
设为 A0 )。
八、总结
通过 Arduino 实践,掌握变量、函数、输入输出、串口通信等知识,结合历史人物精神(坚持、创新、求真 ),在技术探索中培养逻辑思维与解决问题能力。多做项目(如智能环境监测、简易机器人控制 ),持续拓展,从电子制作入门迈向创意开发!
1 条评论
-
admin SU @ 2025-7-23 22:10:35已修改
Arduino程序基本结构
Arduino程序主要由
setup()
和loop()
两个函数组成。setup()
函数:在Arduino启动或重置时运行一次,通常用于初始化设置,如配置引脚模式、初始化串口通信等。loop()
函数:会不断循环运行,只要Arduino没有被关闭或重置,程序的主要功能实现通常放在这个函数中,如读取传感器数据、控制执行器等。
常量定义
const int ledPin = 3;// LED引脚,const修饰符表示该变量的值不会被修改,这是一个常量
使用
const
定义常量,可提高程序的可读性和稳定性,避免在程序中意外修改其值。引脚模式设置
pinMode(ledPin, OUTPUT); // 设置LED引脚为输出模式 pinMode(potPin, INPUT); // 设置模拟输入引脚为输入模式
pinMode(pin, mode)
函数用于设置引脚模式,pin
为要设置的引脚编号,mode
可以是OUTPUT
(输出模式)、INPUT
(输入模式)等。数字输出与模拟输出
- 数字输出:
//digitalWrite(ledPin, HIGH); // 点亮LED,数字输出语句 //digitalWrite(ledPin, LOW); // 熄灭LED
digitalWrite(pin, value)
函数用于向数字引脚写入高电平(HIGH
)或低电平(LOW
),从而控制连接在该引脚上的设备,如点亮或熄灭LED。- 模拟输出:
//analogWrite(ledPin, 0);// 熄灭 analogWrite(ledPin, 180);// 点亮LED
analogWrite(pin, value)
函数用于在支持PWM(脉宽调制)的引脚上输出模拟信号,value
范围通常是0 - 255,可用于调节LED亮度等。模拟输入
const int potPin = A0;// 模拟输入引脚 int val; // 变量用于存储模拟输入值 val = analogRead(potPin); // 读取模拟输入引脚的值
通过
analogRead(pin)
函数可以读取模拟输入引脚的值,返回值范围一般是0 - 1023,可用于读取电位器等模拟传感器的数据。串口通信
Serial.begin(9600); // 初始化串口通信,波特率为9600 Serial.println(val); // 打印模拟输入值到串口监视器 Serial.print("sum = ");//不换行
Serial.begin(baudRate)
用于初始化串口通信,baudRate
为波特率,常见值有9600、115200等。Serial.println(data)
用于将数据打印到串口监视器,并换行。Serial.print(data)
用于将数据打印到串口监视器,不换行。
变量与表达式
int a, b;//创建两个局部变量a和b a = 10; // 赋值语句,=赋值符号,将10赋值给变量a b = 20; // 将20赋值给变量b int sum = a + b; // 计算a和b的和,并存储在sum中 //a+b是一个表达式,表示将a和b的值相加 //a*b是一个表达式,表示将a和b的值相乘 //a-b是一个表达式,表示将a和b的值相减 //a/b是一个表达式,表示将a和b的值相除
可以在Arduino中定义变量来存储数据,使用赋值运算符
=
为变量赋值,通过+
、-
、*
、/
等运算符构成表达式进行数学运算。完整示例代码
- 示例1:简单控制LED亮度
const int ledPin = 3;// LED引脚,定义为常量 void setup() { pinMode(ledPin, OUTPUT); // 设置LED引脚为输出模式 } void loop() { analogWrite(ledPin, 180);// 点亮LED,设置亮度 // 可在此处添加延时等其他操作,若不添加,LED将一直保持此亮度 }
- 示例2:通过电位器控制LED亮度并串口打印数据
const int ledPin = 3;// LED引脚 const int potPin = A0;// 模拟输入引脚,连接电位器 int val; // 用于存储模拟输入值 void setup() { pinMode(ledPin, OUTPUT); // 设置LED引脚为输出模式 pinMode(potPin, INPUT); // 设置模拟输入引脚为输入模式 Serial.begin(9600); // 初始化串口通信,波特率为9600 } void loop() { val = analogRead(potPin); // 读取电位器的值 Serial.println(val); // 打印电位器值到串口监视器 analogWrite(ledPin, val / 4);// 根据电位器值调节LED亮度 delay(10); // 延时10毫秒,稳定读数 }
- 示例3:计算并打印两数之和
void setup() { Serial.begin(9600); // 初始化串口通信,波特率为9600 int a, b; a = 10; b = 20; int sum = a + b; // 计算两数之和 Serial.print("sum = "); Serial.println(sum); // 打印结果到串口监视器 } void loop() { // 此示例中loop函数为空,因为主要功能在setup中已完成 }
通过学习这些代码和相关知识,能够初步掌握Arduino的基本编程方法,实现简单的输入输出控制和数据处理。在实际应用中,可以根据需求进一步扩展和优化程序,就像汤飞凡、钟南山等科学家一样,凭借钻研能力,不断深入探索,解决更多复杂的问题,创造出更有价值的成果。同时,也应学习亚里士多德追求真理的精神,在编程过程中不断思考,优化代码逻辑,提高程序的效率和稳定性。
- 1