arduino按钮

news2024/11/17 23:27:06

Arduino - Button Arduino - 按钮

参考:

  • ezButton-按钮库
  • 按钮开关看上拉pull-up电阻、下拉电阻
  • 按键的防抖动处理
    The button is also called pushbutton, tactile button or momentary switch. It is a basic component and widely used in many Arduino projects. It is simple to use. However, it may make the beginners confuse, due to mechanical, physical issues and ways to use it as well. This tutorial makes it easy for the beginners.
    该按钮也称为按钮、触觉按钮或瞬时开关。它是一个基本组件,广泛用于许多Arduino项目。它使用简单。但是,由于机械、物理问题和使用它的方法,它可能会让初学者感到困惑。

※ NOTE THAT: ※ 注意事项:

There are two common troubles that beginners usually get into:
初学者通常会遇到两个常见的麻烦:

How Motion Sensor Works
运动传感器的工作原理

1. Floating input problem:
1.浮动输入问题:

  • *Symptom:* the reading value from the input pin is not matched with the button’s pressing state.
    症状:输入引脚的读数值与按钮的按下状态不匹配。
  • *Cause:* input pin is NOT used pull-up or pull-down resistor.
    原因:输入引脚未使用上拉或下拉电阻。
  • *Solution:* Use pull-up or pull-down resistor. It will be described in this tutorial
    解决方案:使用上拉或下拉电阻。

2. Chattering phenomenon:
2、颤动现象:

It should be considered in only some application that needs to detect exactly number of the pressing.
仅在某些需要检测冲压次数的应用中才应考虑这一点。

  • *Symptom:* Button is pressed one, but Arduino code detects several times.
    症状:按下按钮一次,但Arduino代码检测到多次。
  • *Cause:* Due to mechanical and physical issues, the state of the button (or switch) is quickly toggled between LOW and HIGH several times
    原因:由于机械和物理问题,按钮(或开关)的状态在低电平和高电平之间快速切换多次
  • *Solution:* Debounce. It will be described in Arduino - Button - Debounce tutorial.
    解决方案:去抖动。Arduino - Button - Debounce 教程中对此进行了描述。

About Button 关于按钮

The push button, also referred to as a pushbutton, tactile button, or momentary switch, is a type of switch that closes when the button is pressed and held, and opens when released. There are various types of push buttons, broadly categorized into two groups:
按钮,也称为按钮、触觉按钮或瞬时开关,是一种在按住按钮时关闭,在松开时打开的开关。按钮有多种类型,大致分为两组:

  • PCB-mount push buttons (breadboard-mountable)
    PCB 安装按钮(可安装在试验板上)
  • Panel-mount push buttons 面板安装按钮

Arduino Push button

Pinout 引脚排列

The PCB-mount buttons usually have four pins. PCB 安装按钮通常有四个引脚。

Button Pinout

However, these pins are internally connected in pairs. Therefore, we only need to use two of the four pins, which are NOT internally connected.
但是,这些引脚在内部成对连接。因此,我们只需要使用四个引脚中的两个,它们不是内部连接的。

There are four ways (actually two ways because of symmetry) to connect to button (see image)
有四种方式(由于对称性,实际上是两种方式)连接到按钮(见图)

How To Use Button

We can use only two pins of a button, why does it have four pins?
一个按钮只能用两个引脚,为什么它有四个引脚?

⇒ To make it stand firmly in PCB (board) to resist the pressing force.
⇒ 使其牢固地站在PCB(板)中,以抵抗压力。

The panel-mount buttons usually have two pins. 面板安装按钮通常有两个引脚。

two-pin push button Pinout

How It Works 它是如何工作的

  • When the button is NOT pressed, pin A is NOT connected to pin B
    当未按下按钮时,引脚 A 未连接到引脚 B
  • When the button is pressed, pin A is connected to pin B
    按下按钮时,引脚 A 连接到引脚 B

How Button Works

Arduino - Button Arduino - 按钮

One button’s pin is connected to VCC or GND. The other pin is connected to an Arduino pin.
一个按钮的引脚连接到 VCC 或 GND。另一个引脚连接到Arduino引脚。

By reading the state of Arduino’s pin (configured as input pin), we can detect the button is pressed or NOT.
通过读取Arduino引脚(配置为输入引脚)的状态,我们可以检测按钮是否被按下。

Button State and Pressing State 按钮状态和按下状态

The relation between the button state and the pressing state depends on how we connect the button with Arduino and the setting of the Arduino’s pin.
按钮状态和按压状态之间的关系取决于我们如何将按钮与Arduino连接以及Arduino引脚的设置。

There are two ways to use a button with Arduino:
有两种方法可以将按钮与Arduino一起使用:

  1. One button’s pin is connected to VCC, the other is connected to an Arduino’s pin with a pull-down resistor
    一个按钮的引脚连接到 VCC,另一个通过下拉电阻器连接到 Arduino 的引脚
    • If the button is pressed, Arduino’s pin state is HIGH. If otherwise, Arduino’s pin state is LOW
      如果按下按钮,Arduino的引脚状态为HIGH。否则,Arduino的引脚状态为LOW
    • We MUST use an external resistor.
      我们必须使用外部电阻器。

One button’s pin is connected to GND, the other is connected to an Arduino’s pin with a pull-up resistor
一个按钮的引脚连接到 GND,另一个通过上拉电阻连接到 Arduino 的引脚

  • If the button is pressed, Arduino’s pin state is LOW. If otherwise, Arduino’s pin state is HIGH
    如果按下按钮,Arduino的引脚状态为LOW。否则,Arduino的引脚状态为HIGH
  • We can use either an internal or external resistor. The internal resistor is built inside Arduino, we just need to set via Arduino code.
    我们可以使用内部或外部电阻器。内部电阻器内置在Arduino内部,我们只需要通过Arduino代码进行设置即可。

※ NOTE THAT: ※ 注意事项:

If we do NOT use neither pull-down nor pull-up resistor, the state of the input pin is “floating” when the button is NOT pressed. It means the state can be HIGH or LOW (unstable, unfixed), resulting in the wrong detection.
如果我们既不使用下拉电阻器也不使用上拉电阻器,则在不按下按钮时,输入引脚的状态为“浮动”。这意味着状态可以是 HIGH 或 LOW(不稳定、不固定),从而导致错误的检测。

  • The worst practice: initializes the Arduino pin as an input (by using pinMode(BUTTON_PIN, INPUT)) and does NOT use any external pull-down/pull-up resistor.
    最糟糕的做法:将Arduino引脚初始化为输入(通过使用pinMode(BUTTON_PIN,INPUT)),并且不使用任何外部下拉/上拉电阻。
  • The best practice: initializes the Arduino pin as an internal pull-up input (by using pinMode(BUTTON_PIN, INPUT_PULLUP)). It does NOT need to use any external pull-down/pull-up resistor.
    最佳做法:将Arduino引脚初始化为内部上拉输入(通过使用pinMode(BUTTON_PIN,INPUT_PULLUP))。它不需要使用任何外部下拉/上拉电阻器。

To make it easy for beginners, this tutorial uses the simplest method: initializes the Arduino pin as an internal pull-up input without using the external resistor. The beginners do NOT need to care about how to wire the pull-up/pull-down resistor. The beginners just need to use the Arduino code.
为了方便初学者,本教程使用最简单的方法:在不使用外部电阻的情况下将Arduino引脚初始化为内部上拉输入。初学者无需关心如何接线上拉/下拉电阻器。初学者只需要使用Arduino代码即可。

Wiring Diagram 接线图

  • Wiring Diagram between Arduino and PCB-mount button
    Arduino和PCB安装按钮之间的接线图

Arduino Button Wiring Diagram

  • Wiring Diagram between Arduino and panel-mount button
    Arduino和面板安装按钮之间的接线图

Arduino two-pin push button Wiring Diagram

Arduino two-pin button Wiring Diagram

How To Program For Button 如何为按钮编程

  • Initializes the Arduino pin as an internal pull-up input by using pinMode() function. For example, pin 7:
    使用 pinMode() 函数将 Arduino 引脚初始化为内部上拉输入。例如,引脚 7:
pinMode(7, INPUT_PULLUP); 
  • Reads the state of the Arduino pin by using digitalRead() function.
    使用 digitalRead() 函数读取 Arduino 引脚的状态。
int buttonState = digitalRead(BUTTON_PIN); 

※ NOTE THAT: ※ 注意事项:

There are two wide-used use cases:
有两个广泛使用的用例:

  • The first: If the input state is HIGH, do something. If the input state is LOW, do another thing in reverse.
    第一个:如果输入状态为 HIGH,则执行某些操作。如果输入状态为 LOW,则反向执行另一项操作。
  • The second: If the input state is changed from LOW to HIGH (or HIGH to LOW), do something.
    第二种:如果输入状态从 LOW 更改为 HIGH(或 HIGH 更改为 LOW),请执行某些操作。

Depending on the application, we choose one of them. For example, in case of using a button to control an LED:
根据应用,我们选择其中之一。例如,在使用按钮控制 LED 的情况下:

  • If we want the LED to be ON when the button is pressed and OFF when the button is NOT pressed, we SHOULD use the first use case.
    如果我们希望 LED 在按下按钮时亮起,在未按下按钮时熄灭,我们应该使用第一个用例。
  • If we want the LED to be toggle between ON and OFF each time we press the button, we SHOULD use the second use case.
    如果我们希望每次按下按钮时 LED 在 ON 和 OFF 之间切换,我们应该使用第二个用例。
How to detect the state change from LOW to HIGH 如何检测从低到高的状态变化
// constants won't change. They're used here to set pin numbers:
const int BUTTON_PIN = 7; // the number of the pushbutton pin

// Variables will change:
int lastState = HIGH; // the previous state from the input pin
int currentState;    // the current reading from the input pin

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  // initialize the pushbutton pin as an pull-up input
  // the pull-up input pin will be HIGH when the switch is open and LOW when the switch is closed.
  pinMode(BUTTON_PIN, INPUT_PULLUP);
}

void loop() {
  // read the state of the switch/button:
  currentState = digitalRead(BUTTON_PIN);

  if(lastState == LOW && currentState == HIGH)
    Serial.println("The state changed from LOW to HIGH");

  // save the last state
  lastState = currentState;
}

Arduino Code Arduino代码

1

// constants won't change. They're used here to set pin numbers:
const int BUTTON_PIN = 7;       // the number of the pushbutton pin

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  // initialize the pushbutton pin as an pull-up input
  // the pull-up input pin will be HIGH when the switch is open and LOW when the switch is closed.
  pinMode(BUTTON_PIN, INPUT_PULLUP);
}

void loop() {
  // read the state of the switch/button:
  int buttonState = digitalRead(BUTTON_PIN);

  // print out the button's state 
  Serial.println(buttonState);
}

Modifying Arduino Code 修改Arduino代码

Let’s modify the code to detect the press and release events
让我们修改代码以检测新闻和发布事件

Quick Steps 快速步骤

  • Modify the code as below
    修改代码如下
/*

 * Created by ArduinoGetStarted.com
   *
 * This example code is in the public domain
   *
 * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-button
   */

// constants won't change. They're used here to set pin numbers:
const int BUTTON_PIN = 7;       // the number of the pushbutton pin

// Variables will change:
int lastState = LOW;  // the previous state from the input pin
int currentState;                // the current reading from the input pin

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  // initialize the pushbutton pin as an pull-up input
  // the pull-up input pin will be HIGH when the switch is open and LOW when the switch is closed.
  pinMode(BUTTON_PIN, INPUT_PULLUP);
}

void loop() {
  // read the state of the switch/button:
  currentState = digitalRead(BUTTON_PIN);

  if(lastState == HIGH && currentState == LOW)
    Serial.println("The button is pressed");
  else if(lastState == LOW && currentState == HIGH)
    Serial.println("The button is released");

  // save the the last state
  lastState = currentState;
}

※ NOTE THAT: ※ 注意事项:

Even you pressed and released the button only once, the output in Serial Monitor may show several pressed and release events. This is the normal behavior of the button. This behavior is called the “chattering phenomenon”. You can learn more in Arduino - Button Debounce tutorial.
即使您只按下和松开一次按钮,串行监视器中的输出也可能显示多个按下和松开事件。这是按钮的正常行为。这种行为被称为“颤动现象”。您可以在 Arduino - Button Debounce 教程中了解更多信息。

※ NOTE THAT: ※ 注意事项:

To make it much easier for beginners, especially when using multiple buttons, we created a library, called ezButton. You can learn about ezButton library here.
为了让初学者更容易,尤其是在使用多个按钮时,我们创建了一个名为 ezButton 的库。您可以在此处了解 ezButton 库。

Challenge Yourself 挑战自我

  • Turn on LED when button is pressed and turn off LED when button is NOT pressed.
    按下按钮时打开 LED,未按下按钮时关闭 LED。
  • Toggle LED between ON and OFF each time the button is pressed.
    每次按下按钮时,在 ON 和 OFF 之间切换 LED。

Additional Knowledge 其他知识

When should and should NOT we use a pull-down/pull-up resistor for an input pin?
什么时候应该对输入引脚使用下拉/上拉电阻?

  • If the sensor has either closed (connected to VCC or GND) or open (NOT connected to anything) states, you need a pull-up or pull-down resistor to make these states become two states: LOW and HIGH. For example, push-button, switch, magnetic contact switch (door sensor)…
    如果传感器处于闭合(连接到 VCC 或 GND)或开路(未连接到任何设备)状态,则需要一个上拉或下拉电阻器才能使这些状态变为两种状态:LOW 和 HIGH。例如,按钮、开关、磁接触开关(门传感器)…

  • If the sensor has two defined voltage levels (LOW and HIGH), you do NOT need a pull-up or pull-down resistor. For example, motion sensor, touch sensor …
    如果传感器有两个定义的电压电平(低电平和高电平),则不需要上拉或下拉电阻。例如,运动传感器、触摸传感器…

Function References 函数参考

  • pinMode()

  • digitalRead()

  • Serial

  • Arduino - Button - Debounce
    Arduino - 按钮 - 去抖动

  • Arduino - Button - Long Press Short Press
    Arduino - 按钮 - 长按短按

  • Arduino multiple Button Arduino多按钮

  • Arduino - Switch Arduino - 交换机

  • Arduino - Limit Switch
    Arduino - 限位开关

  • Arduino - DIP Switch
    Arduino - 拨码开关

  • Arduino - Button - LED
    Arduino - 按钮 - LED

  • Arduino - Button - Relay
    Arduino - 按钮 - 继电器

  • Arduino - Button Toggle LED
    Arduino - 按钮切换 LED

  • Arduino - Button Toggle Relay
    Arduino - 按钮拨动继电器

  • Arduino - Button - Piezo Buzzer
    Arduino - 按钮 - 压电蜂鸣器

  • Arduino - Button - Servo Motor
    Arduino - 按钮 - 伺服电机

  • Arduino - Button Count - OLED
    Arduino - 按钮数 - OLED

  • Arduino - Button Count - LCD
    Arduino - 按钮数 - LCD

  • Arduino - Button Controls Electromagnetic Lock
    Arduino - 按钮控制电磁锁

在这里插入图片描述
Arduino Code - Button Toggles Relay With Debouncing
Why do we need debouncing? ⇒ see Arduino - Button Debounce tutorial

/*
 * Created by ArduinoGetStarted.com
 *
 * This example code is in the public domain
 *
 * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-button-toggle-relay
 */

#include <ezButton.h>

// constants won't change
const int BUTTON_PIN = 7; // Arduino pin connected to button's pin
const int RELAY_PIN  = 3; // Arduino pin connected to relay's pin

ezButton button(BUTTON_PIN);  // create ezButton object that attach to pin 7;

// variables will change:
int relayState = LOW;   // the current state of relay

void setup() {
  Serial.begin(9600);         // initialize serial
  pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode
  button.setDebounceTime(50); // set debounce time to 50 milliseconds
}

void loop() {
  button.loop(); // MUST call the loop() function first

  if(button.isPressed()) {
    Serial.println("The button is pressed");

    // toggle state of relay
    relayState = !relayState;

    // control relay arccoding to the toggled state
    digitalWrite(RELAY_PIN, relayState); 
  }
}

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

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

相关文章

06 - matlab m_map地学绘图工具基础函数 - 绘制海岸线

06 - matlab m_map地学绘图工具基础函数 - 绘制海岸线 0. 引言1. 关于m_coast2. 关于m_gshhs3. 关于m_gshhs_c、m_gshhs_I、m_gshhs_i、m_gshhs_h、m_gshhs_f4. 关于m_shaperead5. 结语 0. 引言 本篇介绍下m_map中添加绘制海岸线的一系列函数及其用法&#xff0c;主要函数包括m…

分享一个解决 EF 性能低的思路,通过 Python 访问心跳侦测 API 保持 EF 在线

前言 .NET FrameWork EF&#xff08;Entity Framework&#xff09;是一个很优秀的 ORM 框架&#xff0c;对于提高工作效率很有帮助&#xff0c;但由于底层原因&#xff0c;在程序启动时&#xff0c;EF 需要初始化和加载模型及其对应的数据库元数据等等&#xff0c;涉及到数据库…

分布式数据库垂直分片如何计算?

在复习分布式数据库这一部分时&#xff0c;发现垂直分片较难理解&#xff0c;上网上查找资料&#xff0c;也发现找不到&#xff0c;固在考试结束后将自己的理解记录下来。 垂直分片的计算总体上分为三个步骤;1、属性亲和度矩阵AA的计算&#xff1b;2、聚类亲和度CA矩阵的计算&a…

“了解MySQL中的enum枚举数据类型“

目录 # 开篇 1. 创建包含枚举类型的表 2. 插入枚举类型的数据 3. 查询包含枚举类型的表 4. 更新枚举类型的数据 5. 使用枚举类型的好处 注意事项 示例总结 附加 # 开篇 在数据库中&#xff0c;枚举&#xff08;ENUM&#xff09;是一种数据类型&#xff0c;用于存储一组…

vue3 运用高德地图 自定义弹框 为信息窗体 添加 new AMaps.value.InfoWindow 添加事件

效果图 划过散点的时候出现每个三点位置的数据提示 点击具体散点获取展示信息弹框&#xff0c;并为其添加点击事件 注意点&#xff1a; 1 即使是用的vue&#xff0c;也不能使用click为窗体添加点击事件&#xff0c;需要使用onclick&#xff0c; &#xff08;原因&#xff1a…

Android 13 创建静态快捷方式shortcuts

参考 创建快捷方式 原生系统上&#xff0c;长按应用图标显示快捷方式&#xff0c;点击快捷方式就打开应用的某个页面。 给自己的应用也加一下。 1.清单文件添加 在应用的主页面添加如下&#xff0c;shortcuts 就是要配置的文件。 <meta-dataandroid:name"android.…

01 Swift 基础语法(变量,常量,注释,整数,浮点数,元组)

Swift 介绍 Swift 是一门用于开发 iOS、macOS、watchOS 和 tvOS 应用的新编程语言。它以安全、快速和互动的特点而著称。Swift 提供了代码预览&#xff08;playgrounds&#xff09;功能&#xff0c;使程序员可以在不编译和运行应用程序的情况下&#xff0c;实时运行 Swift 代码…

多模态-大模型:MLLM综述(适用初学)

文章目录 前言一、多模态模型基础知识二、多模态指令调优&#xff08;M-IT&#xff09;1.MLLM基础2.模态对齐3.数据获取4.模态桥接 三、多模态上下文学习&#xff08;M-ICL&#xff09;三、多模态思维链 (M-CoT)四、LLM辅助视觉推理1.训练范式2. LLM功能 五、一些思考总结 前言…

索引的分类和回表查询——Java全栈知识(29)

索引的分类和回表查询 Mysql 的索引按照类型可以分为以下几类&#xff0c;但是我们使用的 InnoDB 只支持主键索引&#xff0c;唯一索引&#xff0c;普通索引&#xff0c;并不支持全文索引。 1、聚集索引和二级索引 InnoDB 可以将索引分为两类分别是聚集索引和二级索引&…

模板匹配算法:基于模板相关性匹配的手写数字识别

1 前言 得益于硬件技术的发展&#xff0c;基于深度学习的各种识别方法如火如荼&#xff0c;在各种应用场景中都取得很好的效果。本人入行深度学习领域若干年&#xff0c;做过很多项目的工程化评估&#xff0c;对于神经网络是如何工作的也解释不清楚&#xff0c;只是知道这样做是…

如何借用物联网快速实现高标准农田信息化

如何借用物联网快速实现高标准农田信息化 高标准农田信息化&#xff0c;作为现代农业发展的重要基石&#xff0c;是指在建设高产、稳产、节水、环保的农田基础上&#xff0c;深度融合现代信息技术&#xff0c;实现农田管理的精准化、智能化和高效化。物联网&#xff08;Intern…

[Angew]:调整单原子 Pt1/CeO2催化剂中铂的局部环境以实现稳定的低温 CO 氧化

通过热冲击合成调整孤立 Pt2+的局部环境,开发出一种用于 CO 氧化的高活性和坚固的单原子 Pt1/CeO2催化剂(见图)。惰性气氛中的超快冲击波在非对称 Pt1O4结构中产生 Pt 单原子,从而大大增强了低温活性,并且在氧化条件下仍能保持活性。 摘要:通过原子捕获(AT,800C空气中…

pycharm在pytorch环境的使用

前言 有时我们使用jupyter感觉不习惯&#xff0c;想使用编译器进行相关任务。在安装好pytorch环境下&#xff0c;我们可以使用pycharm等编译器进行完成任务等操作。 安装pycharm不做赘述。配置安装好pytorch环境可以参考我前一篇博客&#xff1a; 深度学习工具jupyter创建并检…

基于Java考研助手网站设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

海南聚广众达电子商务咨询有限公司抖音开店怎么样?

在数字化浪潮汹涌的当下&#xff0c;电商行业正迎来前所未有的发展机遇。作为抖音电商服务领域的佼佼者&#xff0c;海南聚广众达电子商务咨询有限公司凭借其专业的服务团队和前瞻的战略眼光&#xff0c;成为了众多品牌和商家在抖音平台上实现业务增长的重要合作伙伴。今天&…

毫米波移动通信系统中的波束赋形—模数混合的波束赋形架构

模数混合的波束赋形将波束赋形分为了模拟波束赋形与数字波束赋形两部分&#xff0c;其模拟部分通过移相器实现&#xff0c;数字部分通过基带预编码实现&#xff0c;&#xff0c;其结构如图2所示。当射频链路数目NRF为1时&#xff0c;认为其是一种特殊的模数混合的波束赋形。 此…

linux企业级CDN/100万并发架构设计/企业故障案例、网站优化架构原则

高薪思想&#xff1a;财富来源于信息差 什么是cdn&#xff1f; cdn全称是contenct delivery network内容分发网络 cdn是一套分布式&#xff0c;缓存&#xff0c;集群&#xff0c;范围可以是全球或全国&#xff0c;运行的实质是通过智能DNS获取用户的来源地域以及上网线路 为…

perfect-scrollbar缩小浏览器窗口滚动条无线滚动的bug

https://github.com/mdbootstrap/perfect-scrollbar/issues/153

【tcomat】聊聊tomcat是如何打破双亲委派模型进行类加载的

双亲委派模型 对于JVM类加载器来说&#xff0c;其实就是如下的code&#xff0c;JDK提供的三个类加载器&#xff0c;每个类加载器都加载自己范围内的类。Boot\EXT\APP 三个。双亲委派一句话就是&#xff0c;先让老爸处理&#xff0c;老爸处理不了&#xff0c;给爷爷。爷爷处理不…

java数据结构-链表经典习题

前言 上一篇讲解了链表的基本操作详解&#xff0c;接下来练习一下链表的应用。 目录 1.删除链表中等于给定值 val 的所有节点。 题解思路 2.反转一个单链表 思路分析 画图分析 代码实现 3.链表的中间结点 思路分析 画图分析 代码实现 4.链表中倒数最后k个结点 第一解决…