【Arduino实验笔记】机械臂篇(二) 开关控制LED灯

news2024/11/28 14:49:12

文章目录

  • 前言
  • 硬件介绍
  • 实物接线图
  • 软件实现
    • 库函数介绍
    • 程序代码
  • 下一篇的目标
  • 总结


前言

本章节介绍如何通过按键控制LED灯,在上一章节中,我们学习了如何控制IO输出电平。而本章节,我们将学会如何读取IO输入的电平。


硬件介绍

观察独立按键,共有四个引脚,其中两组间距较短,而另两组间距较长间距长的两组引脚之间是连接在一起的而短间距引脚之间初始状态是断开的,当按键被按下时,四个引脚被接通,可视作一根导线
在这里插入图片描述

一般情况下,独立按键只需要接两个脚即可使用。其中一个引脚接地,另一个引脚由单片机IO口控制

独立按键的详细介绍请参考另一篇博客《51单片机开关篇》


实物接线图

接线图


软件实现

为了读取引脚输入情况,我们需要借助串口工具。幸运的是,Arduino IDE中集成了串口显示窗口,我们可以十分方便地通过几行代码就实现打印引脚状态


库函数介绍

首先,介绍几个核心库中的函数。详细的移步至官方函数手册。

  • 数字引脚读取
    uint8_t digitalRead(uint8_t pin)
    • pin: 引脚号
    • 返回值: 引脚电平高低
      • 低电平: LOW
      • 高电平: HIGH

串口库Serial)属于内置核心库,无需#include预编译指令包含。本节使用到的函数如下。

  • 串口初始化
    Serial.begin(baud)
    • baud: 波特率,需与串口窗口中保持一致。
  • 串口打印
    Serial.println(chara)
    • chara: 可接收任意类型数据
    • 打印后开启新行

程序代码

// 2022.11.18
// Author:Qiu

#define KEY_PORT 2   // 2号引脚

void setup() {
  // 设置串口波特率
  Serial.begin(9600);
  // 将2号引脚设置为输入上拉
  pinMode(KEY_PORT, INPUT_PULLUP);
  // 将13号引脚设置为输出; 
  // #define LED_BUILTIN 13
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  // 读取2号引脚的状态
  boolean buttonState = digitalRead(KEY_PORT);
  // 在串口窗口打印引脚状态
  Serial.println(buttonState);
  // 判断控制灯:0-按下;1-没按
  if(buttonState){
    // 熄灭,写入低电平
    digitalWrite(LED_BUILTIN, LOW);
  }else{
    // 点亮,写入高电平
    digitalWrite(LED_BUILTIN, HIGH);
  }
  // 读取存在间隔,保证稳定
  delay(1);
}

下一篇的目标

我们希望更加高级的控制LED灯,比如,动态调节它的亮度,而不是简单亮灭。我们下一篇再见!


总结

通过本章,你学会了如何读取数字IO口的高低电平,并借助串口相关函数完成了按键的控制LED的实验。这为未来我们控制机械臂奠定了坚实的基础!

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

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

相关文章

Taurus: 面向机器学习的数据面架构

日益复杂的网络和多样化的工作负载要求网络内置更多的自动化决策能力,通过可编程网络设备在用户面支持机器学习工作负载就是一个可能的选项,本文提出了一种支持用户面推理的架构设计,相对控制面机器学习的性能有数量级的提升。原文: Taurus: …

联想集团财报不及华尔街预期,财务业绩恐将继续恶化

来源:猛兽财经 作者:猛兽财经 华尔街对联想集团财报的预测 在联想集团(00992)公布2024财年第一季度财务业绩之前,华尔街分析师就曾预测,联想集团的收入和利润将实现强劲增长。 具体而言,根据S&…

VB6.0 设置窗体的默认焦点位置在 TextBox 中

文章目录 VB6.0 窗体的加载过程确定指针的焦点位置添加代码效果如下未设置指定焦点已设置焦点 VB6.0 窗体的加载过程 在VB6.0中,窗体(Form)加载时会触发多个事件,这些事件按照特定的顺序执行。下面是窗体加载过程中常见事件的执行…

高忆管理:光刻胶概念强势拉升,同益股份、格林达涨停

光刻胶概念5日盘中强势拉升,截至发稿,同益股份、格林达涨停,波长光电、晶瑞电材涨超7%,容大感光涨逾5%,华懋科技、茂莱光学、苏大维格、南大光电等均走强。 音讯面上,据新加坡《联合早报》网站9月2日报导&…

Android jni引用第三方so动态库和.a静态库并且调用(c)方法

最近花了一周时间来入门学习 Android JNI方面的知识,因为后续的工作很多需要用到c c库,我需要用jni来包装一下c函数,来提供给上次java调用。总之多学点知识对自己有好处。 案例效果: 上文我们讲解了 android studio cmake生成.a…

Python可复用函数的 6 种最佳实践

对于在一个有各种角色的团队中工作的数据科学家来说,编写干净的代码是一项必备的技能,因为: 清晰的代码增强了可读性,使团队成员更容易理解和贡献于代码库。 清晰的代码提高了可维护性,简化了调试、修改和扩展现有代码…

【机组】计算机系统组成课程笔记 第一章 计算机系统概论

1.1 计算机的基本概念 电子计算机是一种不需要人工直接干预,能够自动、高速、准确地对各种信息进行处理和存储的电子设备。 1.1.1 存储程序的工作方式 1. 单一的处理部件 2. 存储单元是定长的线性组织 3. 存储空间的单元直接寻址 4. 使用低级机器语言&#xf…

基于Hugo 搭建个人博客网站

目录 1.环境搭建 2.生成博客 3.设置主题 4.将博客部署到github上 1.环境搭建 1)安装Homebrew brew是一个在 macOS 操作系统上用于管理软件包的包管理器。类似于centos下的yum或者ubuntu下的apt,它允许用户通过命令行安装、更新和管理各种软件工具、…

JavaScript 执行上下文和作用域链

1 执行上下文 执行上下文决定了变量和函数可以访问哪些数据。 一个执行上下文就对应一个仅后台可访问的变量对象,其中保存有该上下文的局部变量、参数和函数声明。 最外层的上下文称为全局上下文。宿主环境不同,全局上下文的关联对象就不同。在浏览器…

在ubuntu20.04上安装arm-linux-gcc 4.4.3

1下载地址 [http://www.friendlyelec.com.cn/download.asp] 2.将 arm-linux-gcc-4.4.3.tar.gz 拷贝到 /bin目录 无法拷贝怎么办? 出现这种情况是 Linux 拷贝文件时权限不够, 运行命令 sudo nautilus, 打开一个具有管理员权限的文件管理器&am…

C# 子类如何访问子类的方法(同一父类)

在继承关系中,子类可以通过创建另一个子类的对象来访问其方法。下面是一个示例,展示了子类如何访问另一个子类的方法: public class Animal {public virtual void Speak(){Console.WriteLine("我是动物。");} }public class Cat :…

直播平台源码开发搭建APP的DASH协议:流媒体技术其中一环

在直播平台源码APP中,有着许许多多、多种多样的功能,比如短视频功能,帮助我们去获取信息,看到全世界用户身边发生的事情或是他们的生活;又比如直播功能,为用户提供了实时的娱乐享受,还让一些用户…

嬴图Ultipa | 实时图计算如何将反洗钱进行到底?

电影《孤注一掷》中,首度曝光了境外网络诈骗全产业链黑幕,而洗钱是最为关键的一环。 王大陆饰演的赌徒阿天将偷和抵押房产凑够的800万元一次性汇入欺诈团伙的博彩账户,由于涉及大额资金流动,警方已经开始监控。令人意外的是&#…

访问局域网内共享文件时报错0x80070043,找不到网络名

我是菜鸡 此篇只为分享一个我遇到的很简单的但是排查了好久的小问题。 我的网络环境是在校园网内, 自己的办公电脑设置了固定IP:10.11.128.236,同事电脑IP为:10.11.128.255 本人需要访问同事在局域网内分享的文件,…

统计学极简入门——数据分布

3. 数据分布 t分布、F分布和卡方分布是统计学中常用的三种概率分布,它们分别用于样本均值的推断、方差的比较和数据的拟合优度检验。 总之这3个分布很有用,首次接触你可能理解不了,但没关系你知道很重要就行了,接着往下看&#…

6.xpath的基本使用

xpath是python做数据解析的库 目录 1 安装 2 解析本地的html文件 2.1 只有一个标签的情况 2.2 有多个标签的情况 3 解析网上的页面 4 xpath表达式 4.1 绝对路径 4.2 两个斜杠表示中间隔了0级或多级 4.3 通过属性查找 4.4 通过索引查找 4.5 获取文本内容…

JavaScript-----运算符与流程控制

目录 前言: 1. 运算符 1.1 算术运算符 1.2 赋值运算符 1.3 比较运算符 1.4 逻辑运算符 2.流程控制 1.1 分支结构 switch语句 1.2 循环结构 while 循环 for循环 循环控制 : 1.3代码示例 前言: 今天我们就开始学习JavaScript里面的运算符和流…

【校招VIP】测试开发之字符串算法

考点介绍: 字符串匹配看起来是个很简单、很成熟的问题,但在很多领域都有着很多的应用,比如模式匹配、特征提取等等。字符串算法是很经典的面试题,既考察了求职者的写用例水平又考察了软件测试求职者的编码水平。 测试开发之字符串…

景联文数据标注:AI大模型在教育和医疗领域的应用

8月31日消息,备受行业瞩目的首批大模型产品获批名单发布,首批通过备案的8家大模型公司分别是:百度(文心一言)、抖音(云雀大模型)、智谱AI(GLM大模型)、中科院&#xff08…

centos7上hive3.1.3安装及配置

1、安装背景; hive是基于hadoop的数据仓库软件,部署运行在linux系统之上,安装之前必须保证hadoop环境运行正常,hive本身不是分布式软件,它的分布式主要是借助hadoop实现,存储是hdfs,计算是mapr…