物联网之流水LED灯、正常流水灯、反复流水灯、移动流水灯

news2024/11/23 6:54:21

MENU

  • 硬件电路设计
  • 软件程序设计
    • 正常流水LED灯
    • 反复流水LED灯
    • 移动流水LED灯


硬件电路设计

材料名称数量
直插式LED
1kΩ电阻
杜邦线(跳线)若干
面包板1

每一个LED的正极与开发板一个GPIO引脚相连,并串联一个电阻,负极接GND。

方式一

当然也可以选择只使用一个电阻。

方式二


软件程序设计

正常流水LED灯

因为要用到多个GPIO引脚,所以最好把所有的GPIO引脚放在一个数组中,然后遍历数组。

// 定义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);
  }
}

反复流水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);
    delay(50);
  }
  // 将所有引脚设置为低电平
  for (int i = size - 1; i >= 0; i--) {
    digitalWrite(pin_list[i], LOW);
    delay(50);
  }
}

移动流水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);
  }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DELTA_IA-ASD_ASDA-A2简明教程

该文章仅供参考&#xff0c;编写人不对任何实验设备、人员及测量结果负责&#xff01;&#xff01;&#xff01; 0 引言 文章主要介绍电机的硬件连接、软件配置、转动调试以及软件控制。文章中提到的内容在产品手册中都有说明&#xff0c;强烈建议在操作前通读产品手册&#…

1-17 平滑处理——中值滤波 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 cv2.medianBlur函数用于对图像进行中值滤波。中值滤波是一种去噪声的技术&#xff0c;可以有效地去除图像中的盐和胡椒噪声。函数的两个参数如下&#xff1a; 三、运行现象 四、完整代码贴出 一、提前准备 1、树莓派4B 及 64位系统 2、提前…

【2024 版】最新 kali linux 入门及常用简单工具介绍(非常详细)

一、介绍 kali Linux Kali Linux 是一个基于 Debian 的 Linux 发行版&#xff0c;主要用于数字取证和渗透测试。它预装了大量的安全审计和渗透测试工具&#xff0c;被广泛应用于网络安全领域。 &#xff08;一&#xff09;特点 工具丰富&#xff1a;集成了数百种用于渗透测试…

华为eNSP:NAT Server(端口映射)

一、拓扑图 二、配置过程 此处省略设备地址以及路由配置过程 1、服务器开启ftp服务 2、路由器配置nat server [r4]int g0/0/2#进入流量出接口 [r4-GigabitEthernet0/0/2]nat server protocol tcp global 192.168.3.11 ftp inside 192.168.2.1 ftp# …

Java数组(详解版)

数组的定义&#xff1a; 什么是数组&#xff1a; 数组&#xff1a;可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。 1. 数组中存放的元素其类型相同 2. 数组的空间是连在一起的 3. 每个空间有自己的编号&#xff0c;其实位置的编号为 0 &#xff0c;即数组…

Nuxt3入门:过渡效果(第5节)

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 Nuxt 利用 Vue 的 <Transition> 组件在页面和布局之间应用过渡效果。 一、页面过渡效果 你可以启用页面过渡效果&#xff0c;以便对所有页面应用自动过渡效果。 nuxt.config.js export defaul…

冒泡排序——基于Java的实现

简介 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;适用于小规模数据集。其基本思想是通过重复遍历待排序的数组&#xff0c;比较相邻的元素并交换它们的位置&#xff0c;以此将较大的元素逐步“冒泡”到数组的末尾。算法的名称源于其运行过程…

动手学习RAG: 向量模型

在世界百年未有之变局与个人自暴自弃的间隙中&#xff0c;我们学一点RAG。 RAG是一种独特的应用&#xff0c;“一周写demo&#xff0c;优化搞半年”&#xff0c;我甚至听说它能破解幻术。 为了理解其优化中的关键一环&#xff0c;我们先看下文本向量。文本向量除了是RAG检索的…

# 键盘字母上有下标数字,输入时怎么一键去掉,关闭键盘上的下标数字。‌

键盘字母上有下标数字&#xff0c;输入时怎么一键去掉&#xff0c;关闭键盘上的下标数字。‌ 一、问题描述&#xff1a; 如下图&#xff0c;有的笔记本电脑键盘上&#xff0c;没有数字小键盘&#xff0c;数字小键盘会和字母混和在一起&#xff0c;这样打字时&#xff0c;不容…

AI在医学领域:MASL多模态辅助诊断声带麻痹

声带麻痹&#xff08;Vocal Cord Paralysis, VP&#xff09;&#xff0c;也称为喉瘫痪&#xff0c;是指由于支配声带的神经受损导致声带运动障碍的疾病。这种状况可以是单侧或双侧的&#xff0c;通常由脑部、颈部、胸部的肿瘤、外伤、炎症&#xff0c;以及各种全身疾病引起。这…

复数随机变量(信号)的方差和协方差矩阵的计算

怎么计算复数随机变量的方差和协方差矩阵&#xff1f; 使得其与MATLAB中var函数和cov函数的结果一致。 前言 复信号在信号处理中随处可见&#xff0c;关于复信号&#xff08;复随机变量&#xff09;的方差和协方差矩阵该如何计算呢&#xff1f;本文给出了复信号的方差和协方差矩…

什么是大数据、有什么用以及学习内容

目录 1.什么是大数据&#xff1f; 2.大数据有什么用&#xff1f; 2.1商业与营销&#xff1a; 2.2医疗与健康&#xff1a; 2.3金融服务&#xff1a; 2.4政府与公共服务&#xff1a; 2.5交通与物流&#xff1a; 2.6教育与个性化学习&#xff1a; 3.学习大数据需要学习哪…

C++笔试强训12、13、14

文章目录 笔试强训12一、选择题1-5题6-10题 二、编程题题目一题目二 笔试强训13一、选择题1-5题6-10题 二、编程题题目一题目二 笔试强训14一、选择题1-5题6-10题 二、编程题题目一题目二 笔试强训12 一、选择题 1-5题 引用&#xff1a;是一个别名&#xff0c;与其被引用的实…

认知杂谈54

I I 内容摘要&#xff1a; 这篇内容主要有以下几个要点&#xff1a;首先&#xff0c;沟通不在一个调时可学习人际交往心理学知识、线上课程及关注名师来改善。其次&#xff0c;挑房子、工作、搭档和人生伴侣要谨慎&#xff0c;找心灵相通能共同进步的人。再者&#xff0c;远离…

AI周报(9.1-9.7)

AI应用-Tidal 引领海洋养殖革命 Tidal团队&#xff0c;一个源自Alphabet X的创新项目&#xff0c;今年七月顺利从X实验室毕业&#xff0c;成为一家独立的公司。Tidal正在通过人工智能技术改变海洋养殖&#xff0c;特别是鲑鱼养殖。Tidal的总部位于挪威特隆赫姆&#xff0c;他们…

Java-数据结构-栈和队列-Stack和Queue (o゚▽゚)o

文本目录&#xff1a; ❄️一、栈(Stack)&#xff1a; ▶ 1、栈的概念&#xff1a; ▶ 2、栈的使用和自实现&#xff1a; ☑ 1&#xff09;、Stack(): ☑ 2&#xff09;、push(E e): ☑ 3&#xff09;、empty(): ☑ 4&#xff09;、peek(E e): ☑ 5&#xff09;、pop(E e): …

将添加功能的抽屉剥离,在父组件调用思路

一、新建组件 新建AddRoleEditerDrawer.vue<template><div><el-drawer v-model"dialog" title"添加角色" :before-close"handleClose" direction"rtl" colse"cancelForm"class"demo-drawer" moda…

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车&#xff0c;并使用通过跨平台的方式进行ROS2和UE5仿真的通讯&#xff0c;达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础&#xff0c;Nav2相关的学习教程可以参考本人的其他博…

MQ-2烟雾传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 mq2.h文件 mq2.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 MQ-2气体传感器是一种常用的气体传感器&#xff0c;用于检测空气中的烟雾浓度。工作原理是基于半导…

App Store最低版本要求汇总

1&#xff0c;自此日期起&#xff1a; 2024 年 4 月 29 日 自 2024 年 4 月 29 日起&#xff0c;上传到 App Store Connect 的 App 必须是使用 Xcode 15 为 iOS 17、iPadOS 17、Apple tvOS 17 或 watchOS 10 构建的 App。将 iOS App 提交至 App Store - Apple Developer 2&…