arduino-esp32--按键,输入模式设置 03

在这里插入图片描述
注意管脚号。上面的GPIO2接的是板载的LED。我们用一根杜邦线,一个接GPIO15,一个先不接,后面需要的时候,快碰一下GND,相当于接地,类似按键的效果了。
在这里插入图片描述


打开案例代码,稍微阅读一下,然后修改一下。
在这里插入图片描述
在这里插入图片描述
注意,将上面的管脚修改,对应自己的设计。
我们打算是IO15是按键,IO2是板载LED灯。
所以修改。

注意如何设置输入输出模式,OUTPUT和INPUT。
如何读取某个管脚的电平状态。

/*
  Button

  Turns on and off a light emitting diode(LED) connected to digital pin 13,
  when pressing a pushbutton attached to pin 2.

  The circuit:
  - LED attached from pin 13 to ground through 220 ohm resistor
  - pushbutton attached to pin 2 from +5V
  - 10K resistor attached to pin 2 from ground

  - Note: on most Arduinos there is already an LED on the board
    attached to pin 13.

  created 2005
  by DojoDave <http://www.0j0.org>
  modified 30 Aug 2011
  by Tom Igoe

  This example code is in the public domain.

  https://www.arduino.cc/en/Tutorial/BuiltInExamples/Button
*/

// constants won't change. They're used here to set pin numbers:
const int buttonPin = 15;     // the number of the pushbutton pin
const int ledPin =  2;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  } else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

将上面的代码编译,下载。

用杜邦线,接GPIO15,一个碰一下GND,看下LED灯有没有变化。

ArduinoESP32平台中,通过结合数字输入(如按键)和计时器功能,可以实现通过按键控制时钟时间的操作。以下是一个基本的步骤描述: 1. **硬件准备**: - 你需要至少一个按键连接到ESP32的GPIO端口,通常是数字输入类型,例如数字Pin 2。 2. **软件配置**: - 初始化按键检测,例如使用`pinMode()`函数设置按键输入模式。 - 创建一个定时器任务,比如每分钟检查一次时间。这需要定义一个函数(如`checkTime()`),该函数在定时器回调时执行。 ```c void setup() { pinMode(buttonPin, INPUT_PULLUP); // 按键默认高阻抗,设置为拉高 TimerHandle_t timer = createTimer(TIMER_0, 60000); // 每分钟执行一次,60000毫秒即一分钟 attachInterrupt(digitalPinToInterrupt(buttonPin), updateTime, FALLING); // 按键按下时调用updateTime函数 } ``` 3. **时间管理函数**: ```c void updateTime() { uint32_t currentTime = millis(); // 获取当前时间 // 根据需要,例如通过WiFi连接获取实际时间并更新本地时间 if (shouldUpdateTime(currentTime)) { updateClock(currentTime); } } void updateClock(uint32_t newTime) { // 使用newTime更新ESP32的系统时间 // 如果需要显示到LCD或其他界面,也可以相应地更新显示内容 } ``` 4. **更新时间逻辑**: - 在`updateTime`函数中,判断是否满足按键按下后的操作条件(比如按了一定次数或保持一定时间)。 5. **结束语**:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值