智能小车(一):Arduino介绍
星期六, 10月 12, 2024 | 5分钟阅读 | 更新于 星期日, 12月 8, 2024
历史回顾
概要
Arduino 是一个非常受欢迎的开源电子平台,特别适合想要学习嵌入式系统和单片机开发的初学者。它拥有丰富的硬件资源和一个简单易用的编程环境,使得很多复杂的项目变得易于实现。本篇博客将带领大家通过Arduino Nano开发板点亮LED灯,体验Arduino平台的简单与强大。
安全须知
Arduino Nano开发板
Arduino 是一个基于易用硬件和软件的开源平台。它包括一系列的硬件开发板(如Arduino Nano、Arduino Uno等)和一个集成开发环境(IDE),用于编写和上传代码到开发板。通过Arduino平台,您可以实现对传感器、显示器、马达等各种外设的控制,创建各种电子项目。
Arduino Nano 是一种小型的Arduino开发板,功能丰富且便携。它基于ATmega328微控制器,拥有14个数字输入/输出引脚、8个模拟输入引脚,并通过USB接口连接电脑。Arduino Nano的大小仅为45x18mm,非常适合空间有限的项目。
编程IDE: Arduino
Arduino IDE(集成开发环境)是一种用来编写、编译和上传代码的免费软件。它支持多种Arduino开发板,包括Arduino Nano。Arduino IDE使用一种基于C++的语言,简化了复杂的嵌入式编程,初学者也能快速上手。
点亮LED小灯
代码展示
const int LedPin = 10; //Led引脚定义
int LedState = LOW; //Led初始状态
unsigned long PreviousMillis = 0; //当前时间状态
const long Interval = 500; //Led状态改变的时间
void setup() {
pinMode(LedPin, OUTPUT); //设置Led引脚为输出模式
}
void Led(void){
unsigned long currentMillis = millis(); //获取当前时间
if (currentMillis - PreviousMillis >= Interval){ //检查时间间隔是否达到
PreviousMillis = currentMillis; //更新最后一次改变的时间
LedState = !LedState; //改变Led状态
digitalWrite(LedPin, LedState); //将新的状态输出到Led引脚
}
}
void loop() {
Led(); //在循环中反复调用Led函数,实现Led的闪烁
}
代码详解
- LedPin定义:
const int LedPin = 10;
,这行代码将Arduino Nano的第10号引脚设置为LED灯的控制引脚。你可以将LED的一端连接到这个引脚,另一端连接到GND(接地)。 - 状态变量:
int LedState = LOW;
定义了一个变量 LedState 来存储LED灯的当前状态。LOW 代表关闭,HIGH 代表打开。 - 计时功能:我们使用
millis()
函数获取自Arduino运行以来的时间(以毫秒为单位),并通过比较当前时间与之前记录的时间,来实现每隔500毫秒(0.5秒)切换LED灯的状态。 - 定时控制:if
(currentMillis - PreviousMillis >= Interval)
这行代码负责检查是否已经经过了500毫秒。若满足条件,则改变LED的状态(亮或灭)。 digitalWrite()
函数:digitalWrite(LedPin, LedState);
是用于控制LED灯的关键函数,通过它,我们将状态输出到指定引脚,使LED亮起或熄灭。
代码运行
- 硬件连接:连接开发板与电脑,跳线连接设置为下载模式
- 上传代码:打开Arduino IDE,将上述代码复制到编辑器中,选择正确的开发板类型和端口,然后点击“上传”按钮,代码将被上传到Arduino Nano。
- 观察效果:上传完成后,LED灯将会每隔0.5秒闪烁一次,成功完成您的第一个Arduino项目!
问题
setup()
函数和loop()
函数作为arduino驱动代码的固定函数,有什么作用?
输入量读取
代码展示
int LeftObstacleAvoidancePin = 15; //左侧避障引脚
int RightObstacleAvoidancePin = 16; //右侧避障引脚
int RightTracingPin = 17; //右侧循迹引脚
int LeftTracingPin = 6; //左侧循迹引脚
int LeftObstacleAvoidance; //左侧避障
int RightObstacleAvoidance; //右侧避障
int LeftTracing; //左侧寻迹
int RightTracing; //右侧寻迹
void setup() {
pinMode(LeftTracingPin, INPUT); // 左侧循迹传感器设置为输入模式
pinMode(RightTracingPin, INPUT); // 右侧循迹传感器设置为输入模式
pinMode(LeftObstacleAvoidancePin, INPUT); // 左侧避障传感器设置为输入模式
pinMode(RightObstacleAvoidancePin, INPUT); // 右侧避障传感器设置为输入模式
Serial.begin(9600); // 初始化串口通讯,波特率为9600,用于输出数据
}
void loop() {
LeftTracing = digitalRead(LeftTracingPin); //获得左侧循迹数据
RightTracing = digitalRead(RightTracingPin);//获得右侧循迹数据
LeftObstacleAvoidance = analogRead(LeftObstacleAvoidancePin); //读取左侧避障数据
RightObstacleAvoidance = analogRead(RightObstacleAvoidancePin); //读取右侧避障数据
Serial.print("左侧循迹:");
Serial.print(LeftTracing);
Serial.print("右侧循迹");
Serial.print(RightTracing);
Serial.print("左侧避障");
Serial.print(LeftObstacleAvoidance);
Serial.print("右侧避障");
Serial.println(RightObstacleAvoidance);
}
代码详解
- 引脚定义
LeftObstacleAvoidancePin
、RightObstacleAvoidancePin
:分别用于连接左、右避障传感器,这些传感器会返回模拟信号,表示与障碍物的距离。RightTracingPin
、LeftTracingPin
:分别用于连接左右循迹传感器,返回的是数字量,表示是否检测到黑线(1或0)。
- 设置输入模式:在
setup()
函数中,使用pinMode()
函数将每个引脚设置为输入模式,以便Arduino能够从传感器读取数据。 - 读取传感器数据,在
loop()
函数中,读取传感器数据:digitalRead()
用于读取循迹传感器的数字信号,返回0或1,表示传感器检测到的状态。analogRead()
用于读取避障传感器的模拟信号,返回0到1023之间的值,表示距离传感器检测到的距离。
- 输出数据到串口监视器:通过
Serial.print()
和Serial.println()
函数,将传感器的状态输出到串口监视器,便于调试和查看数据
代码运行
- 硬件连接:连接开发板与电脑,跳线连接设置为下载模式
- 上传代码:打开Arduino IDE,将上述代码复制到编辑器中,选择正确的开发板类型和端口,然后点击“上传”按钮,代码将被上传到Arduino Nano。
- 观察效果:上传完成后,串口查看器可以查看到循迹传感器和避障传感器的信号数值。
总结
通过这篇博客,我们介绍了Arduino平台的基础知识,重点介绍了Arduino Nano开发板和Arduino IDE编程环境,并展示了如何通过一段简单的代码控制LED灯的亮灭。如果您是刚接触单片机开发的初学者,希望这次小实验能点燃您对嵌入式开发的兴趣!