arduino学习例程

这篇博客介绍了 Arduino 的基本操作,从点亮和闪烁 LED 开始,逐步讲解了流水灯、LED 移动等效果的实现。还涉及到了如何使用 analogWrite() 函数实现呼吸灯效果,以及使用 ESP32 的 LEDC 输出 PWM 信号。内容适合 Arduino 入门学习者,通过实例代码帮助理解 PWM 输出和控制。
摘要由CSDN通过智能技术生成
  1. 点亮一颗 LED
    因此,如果我们想要点亮这颗 LED 的话,只需要先设定相关引脚为输出模式,然后给这个引脚赋值一个高电平即可。
    // 设置 LED 引脚int led_pin = 12;
    void setup() {
    // 设定引脚为输出模式
    pinMode(led_pin, OUTPUT);
    // 点亮 LED
    digitalWrite(led_pin, HIGH);}
    void loop() {
    }
    通过 IDE 编写上述代码,然后运行,此时会看到电路中的 LED 灯被点亮了。

2. 闪烁的 LED 灯

我们已经成功点亮一颗 LED 了,接下来,可以尝试一下稍微复杂一点的逻辑,比如让这颗 LED 闪烁。
实现 LED 闪烁的原理很简单,就是在 loop 函数中使用延时函数 delay。先设置高电平,延时 X 秒,再设置低电平,延时 X 秒,之后就不断循环该语句即可。
在之前的 初识 Arduino 编程语言 中,我们学习了 loop 函数的用法,如果我们想要让灯泡一直闪烁,则需要在 loop 函数中不断改变 LED 状态。
// 设置 LED 引脚int led_pin = 12;
void setup() {
pinMode(led_pin, OUTPUT);} // 设定引脚为输出模式

void loop() {

digitalWrite(led_pin, HIGH);// 点亮 LED
delay(1000); // 等待一段时间

digitalWrite(led_pin, LOW); // 关闭 LED

delay(1000);} // 等待一段时间
运行程序,LED 就闪烁了。
软件程序设计

1. 正常流水灯

因为我们要用到多个 GPIO 引脚,所以,我们最好把所有的 GPIO 引脚放在一个数组中,然后遍历这个数组
// 定义 GPIO 引脚数组int pin_list[5] = {13, 12, 14, 27, 26};// 获取数组长度int size = sizeof(pin_list) / sizeof(pin_list[0]);// 设定 GPIO 引脚为输出模式

void setup() {
for (int i=0; i<size;i++) {
pinMode(pin_list[i], OUTPUT);
}}
void loop() {// 将所有引脚设置为高电平
for (int i=0;i<size;i++) {
digitalWrite(pin_list[i], HIGH);
delay(50);
}
// 将所有引脚设置为低电平
for (int i=0;i<size;i++) {
digitalWrite(pin_list[i], LOW);
delay(50);
}}

2. 反复流水灯

我们还可以对该程序进行微调,比如之前是依次改变流水灯的状态,现在,修改为让流水灯往复亮。
// 定义 GPIO 引脚数组int pin_list[5] = {13, 12, 14, 27, 26};// 获取数组长度int size = sizeof(pin_list) / sizeof(pin_list[0]);
void setup() {
// 设定 GPIO 引脚为输出模式
for (int i=0; i<size;i++) {
pinMode(pin_list[i], OUTPUT);
}}
void loop() {
// 将所有引脚设置为高电平
for (int i=0;i<size;i++) {
digitalWrite(pin_list[i], HIGH);
delay(50);
}
// 将所有引脚设置为低电平
for (int i=size-1;i>=0;i–) {
digitalWrite(pin_list[i], LOW);
delay(50);
}}

3. LED 移动

让 LED 实现平移的效果是这样实现的,每次在我点亮这颗 LED 的时候,同时把上一颗 LED 的状态改为低电平,并且当索引值为 0 时,让最后一颗 LED 状态改为低电平代码如下:
// 定义 GPIO 引脚数组int pin_list[5] = {13, 12, 14, 27, 26};// 获取数组长度int size = sizeof(pin_list) / sizeof(pin_list[0]);
void setup() {
// 设定 GPIO 引脚为输出模式
for (int i=0; i<size;i++) {
pinMode(pin_list[i], OUTPUT);
}}
void loop() {
// 将所有引脚设置为高电平
for (int i=0;i<size;i++) {
digitalWrite(pin_list[i], HIGH);
if (i > 0){
digitalWrite(pin_list[i-1], LOW);
}else {
digitalWrite(pin_list[size-1], LOW);
}
delay(250);

}}

软件程序设计
设计这个程序时,我们需要使用二维数组。
如果我们想让这个数码管某一引脚亮起来,那么我们需要给对应的引脚设置一个低电平。如果我们想要显示一个数字时,就需要让多个 LED 同时亮,比如数字 1 需要 b、c 引脚给低电平,其余引脚给高电平。程序可以这样写:
// 定义输出引脚并把所有引脚存到数组中int pin_a = 4;int pin_b = 5;int pin_c =

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值