Skip to main content

Grove-LED 按钮

Grove - LED 按钮由 Grove - 黄色按钮、Grove - 蓝色 LED 按钮和 Grove - 红色 LED 按钮组成。这款按钮稳定可靠,使用寿命长达10万次。

由于内置了LED,您可以将其应用于许多有趣的项目中,使用LED显示按钮的状态真的很有用。我们采用高质量的N型场效应管(N-Channel MOSFET)来控制LED,确保高速切换和低功耗。总而言之,您想要一些真正出色的按钮吗?这里就有……

版本

产品版本变更内容发布日期
Grove-LED 按钮初始版2018年6月

功能特点

  • 长久的使用寿命
  • 易于使用
  • Grove 数字接口

规格参数

项目数值
工作电压3.3V/5V
无负载操作寿命100,000次
LED额定电流50mA
按下电阻^1^<100mΩ
释放电阻^2^>100MΩ
尺寸L: 40mm W: 20mm H: 13mm
重量4.3g
包装尺寸L: 140mm W: 90mm H: 10mm
毛重11g

:::提示 1,2- 如果您想测量电阻,请将按键帽从板上取下。否则,您将得到的值是板的等效电阻值,而不是按键帽的真实电阻值。 :::

硬件概述

引脚映射

原理图

SIG1 是LED控制信号,默认值为低电平,因此N型场效应管(N-Channel MOSFET)关闭,LED也熄灭。当SIG1变为高电平时,N型场效应管导通,LED亮起。

SIG2 连接到按钮引脚。由于有上拉电阻,SIG2的默认值为高电平。当您按下按钮时,电压被拉低,SIG2也变为低电平。

支持的平台

Arduino树莓派

入门指南

:::提示 在这一部分,我们以Grove - 红色LED按钮为例。以下部分也适用于黄色和蓝色LED按钮。 :::

与Arduino互动

硬件

所需材料

Seeeduino V4.2基础盾板Grove- 红色LED按钮
enter image description hereenter image description hereenter image description here
立即获取立即获取立即获取
  • 步骤 1. 将Grove-红色LED按钮连接到Grove-基础盾板的D3端口。

  • 步骤 2. 将Grove-基础盾板插入Seeeduino。

  • 步骤 3. 通过USB线将Seeeduino连接到电脑。

:::注意 如果我们没有Grove基础盾板,我们也可以直接将这个模块连接到Seeeduino,如下所示。 :::

SeeeduinoGrove- 红色LED按钮
5V红色线
GND黑色线
SIG2白色线
SIG1黄色线

软件

:::注意如果你是第一次使用Arduino,我们强烈建议你在开始前先查看Arduino入门指南

  • 步骤 1. 打开Arduino IDE并创建一个新文件,然后将以下代码复制到新文件中。
#include "Arduino.h"

//1: toggle mode, 2: follow mode
#define LED_MODE 1

const int ledPin = 3; // the number of the LED pin, D3
const int buttonPin = 4; // the number of the pushbutton pin, D4
const boolean breathMode = true; // if or not the led lights as breath mode when it's on

// Variables will change:
int ledState = LOW; // the current state of the output pin
int ledFadeValue = 0;
int ledFadeStep = 5;
int ledFadeInterval = 20; //milliseconds
int buttonState; // the current reading from the input pin
int lastButtonState = HIGH; // the previous reading from the input pin

unsigned long lastDebounceTime = 0; // the last time the output pin was toggled
unsigned long debounceDelay = 50; // the debounce time; increase if the output flickers
unsigned long lastLedFadeTime = 0;

void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState);
}

void loop() {
int reading = digitalRead(buttonPin);

// If the switch changed, due to noise or pressing:
if (reading != lastButtonState) {
// reset the debouncing timer
lastDebounceTime = millis();
}

if ((millis() - lastDebounceTime) > debounceDelay) {
// whatever the reading is at, it's been there for longer
// than the debounce delay, so take it as the actual current state:

// if the button state has changed:
if (reading != buttonState) {
buttonState = reading;

#if LED_MODE == 1
if (buttonState == LOW) { //button is pressed
ledState = !ledState;
ledFadeValue = 0;
lastLedFadeTime = millis();
}
#else
if (buttonState == LOW) { //button is pressed
ledState = HIGH;
ledFadeValue = 0;
lastLedFadeTime = millis();
} else { //button is released
ledState = LOW;
}
#endif
}
}

// set the LED:
if (breathMode && ledState != LOW) {
if (millis() - lastLedFadeTime > ledFadeInterval) {
lastLedFadeTime = millis();
analogWrite(ledPin, ledFadeValue);
ledFadeValue += ledFadeStep;
if (ledFadeValue > 255){
ledFadeValue = 255 - ledFadeStep;
ledFadeStep = -ledFadeStep;
} else if (ledFadeValue < 0) {
ledFadeValue = 0;
ledFadeStep = -ledFadeStep;
}
}
} else {
digitalWrite(ledPin, ledState);
}

lastButtonState = reading;
}

:::提示 在这个演示中,我们选择了模式1,即切换模式。你可以将第4行的#define LED_MODE 1改为#define LED_MODE 2来使用跟随模式。 :::

  • 步骤 2. 上传演示程序。如果你不知道如何上传代码,请查看如何上传代码

  • 步骤 3. 现在,试着按下你的按钮,你会看到LED灯以渐亮渐灭的效果亮起。

它应该是这样的:

与Raspberry Pi互动

硬件

  • 步骤 1. 本项目所需物品:
Raspberry piGrove Base Hat for RasPiGrove - 红色LED按钮
enter image description hereenter image description hereenter image description here
立即获取立即获取立即获取
  • 步骤 2. 将Grove Base Hat插入Raspberry Pi。
  • 步骤 3. 将红色LED按钮连接到Base Hat的D5端口。
  • 步骤 4. 通过USB线将Raspberry Pi连接到电脑。

:::注意 在步骤3中,你可以将LED按钮连接到任何GPIO端口,但请确保你使用与相应端口号对应的命令。 :::

软件

:::警告 如果你使用的是运行Raspberrypi OS >= Bullseye的Raspberry Pi,你必须仅使用Python3来执行此命令行。 :::

  • 步骤 1. 按照设置软件来配置开发环境。
  • 步骤 2. 通过克隆grove.py库来下载源文件。
sudo pip3 install Seeed-grove.py
cd ~
git clone https://github.com/Seeed-Studio/grove.py

  • 步骤 3. 执行以下命令来运行代码。
cd grove.py/grove
sudo python3 grove_ryb_led_button.py 5

以下是 grove_ryb_led_button.py 代码。


import time
from grove.button import Button
from grove.factory import Factory

class GroveLedButton(object):
def __init__(self, pin):
# High = light on
self.__led = Factory.getOneLed("GPIO-HIGH", pin)
# Low = pressed
self.__btn = Factory.getButton("GPIO-LOW", pin + 1)
self.__on_event = None
self.__btn.on_event(self, GroveLedButton.__handle_event)

@property
def on_event(self):
return self.__on_event

@on_event.setter
def on_event(self, callback):
if not callable(callback):
return
self.__on_event = callback

def __handle_event(self, evt):
# print("event index:{} event:{} pressed:{}".format(evt['index'], evt['code'], evt['presesed']))
if callable(self.__on_event):
self.__on_event(evt['index'], evt['code'], evt['time'])
return

self.__led.brightness = self.__led.MAX_BRIGHT
event = evt['code']
if event & Button.EV_SINGLE_CLICK:
self.__led.light(True)
print("turn on LED")
elif event & Button.EV_DOUBLE_CLICK:
self.__led.blink()
print("blink LED")
elif event & Button.EV_LONG_PRESS:
self.__led.light(False)
print("turn off LED")


Grove = GroveLedButton

def main():
from grove.helper import SlotHelper
sh = SlotHelper(SlotHelper.GPIO)
pin = sh.argv2pin()

ledbtn = GroveLedButton(pin)

# remove ''' pairs below to begin your experiment
'''
# define a customized event handle your self
def cust_on_event(index, event, tm):
print("event with code {}, time {}".format(event, tm))

ledbtn.on_event = cust_on_event
'''
while True:
time.sleep(1)


if __name__ == '__main__':
main()


:::成功提示 如果一切顺利,当你按下按钮时,LED会亮起;长按时,LED会熄灭。如果你双击LED按钮,LED将会闪烁。 :::


pi@raspberrypi:~/grove.py/grove $ python3 grove_ryb_led_button.py 5
Hat Name = 'Grove Base Hat RPi'
turn on LED
turn on LED
blink LED
turn on LED
turn off LED
^CTraceback (most recent call last):
File "grove_ryb_led_button.py", line 101, in <module>
main()
File "grove_ryb_led_button.py", line 97, in main
time.sleep(1)
KeyboardInterrupt

你可以通过简单地按下 ++ctrl+c++ 来退出这个程序。

原理图在线查看器

## 资源

技术支持与产品讨论


感谢您选择我们的产品!我们在这里为您提供各种支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同偏好和需求。
Loading Comments...