嵌入式人工智能ESP32(2-GPIO之LED与按键)

1、ESP32引脚

ESP32 38脚与30脚的主要区别在于引脚数量和功能。‌选择38脚的ESP32开发板通常能提供更多的功能和更好的扩展性,‌适合需要连接多种传感器和外设以及进行复杂通信的应用。‌而30脚的ESP32开发板则可能更适合简单应用或成本敏感的项目。

SP32的引脚图通常包含芯片的外形轮廓、各个引脚的编号和名称、以及引脚的功能说明。引脚按照功能可以分为几类,包括GPIO(通用输入输出)、ADC(模数转换器)、UART(通用异步收发器)、I2C(双向同步串行总线)、SPI(串行外设接口)等。

1. GPIO引脚:GPIO引脚是ESP32最基本的引脚类型,可以用于数字信号的输入和输出。这些引脚可以通过软件配置为输入模式、输出模式或者中断模式,实现与外部设备的通信和控制。

2. ADC引脚:ADC引脚用于模拟信号的采集,可以将外部的模拟信号转换为数字信号进行处理。ESP32的ADC引脚支持多个通道的采样,可以同时采集多个模拟信号。

3. UART引脚:UART引脚用于串行通信,可以实现与其他设备的异步数据传输。ESP32的UART引脚支持多种波特率和数据位配置,可以满足不同的通信需求。

4. I2C引脚:I2C引脚用于连接I2C总线设备,可以实现主从设备之间的双向数据传输。ESP32的I2C引脚支持多个从设备的连接,可以通过软件配置主从模式、数据传输速率等参数。

 2、ESP32的GPIO引脚

ESP32总共有48个GPIO引脚,但其中只有25个被拆引出到开发板两侧的插头。这些引脚可以分配给各种外围职责,包括:

●    15个ADC通道 -  15个12位SAR ADC的通道。 ADC范围可以在固件中设置为0-1V,0-1.4V,0-2V或0-4V

●    2个UART接口 -  2个UART接口。一个用于串口加载代码。它们具有流控制,并支持IRDA!

●    25个PWM输出 -  25个用于调光LED或控制电动机的PWM引脚通道。

●    2个DAC通道 -  8位DAC可产生真正的模拟电压。

●    SPI、I2C和I2S接口 - 有3个SPI和1个I2C接口,可连接各种传感器和外围设备,如果您想在项目中添加声音,则有两个I2S接口。

●    9个触摸引脚-  9个GPIO具有电容触摸感应。

绿色突出显示的管脚可以使用。黄色突出显示的可以使用,但您需要注意,因为它们可能在启动时有意外行为。不建议将红色突出显示的管脚用作输入或输出。

GPIO34到39是GPIO–仅输入的管脚。这些引脚没有内部上拉或下拉电阻。它们不能用作输出。请注意不要把按键接G34-39.

因此我们把G16接按键,G19、G18、G5、G17接LED1-4,电源接3.3,GND接GND。

3、MicroPython代码

我歪打正着的找了个中文的参考代码网站关于 ESP32 端口的一般信息 —MicroPython中文 1.17 文档

MicroPython让Python进入了微控制器领域,是一项重要的创新,既降低了编程门槛,又提供了良好的硬件控制能力。非常适合各类物联网和智能硬件的开发。但凡学过Python,不要1分钟,什么LED的点亮,闪烁,流水分分钟搞定啊。

from machine import Pin
import time

#LED灯点亮
# P0 = Pin(19, Pin.OUT)  
# P0.value(0)
#==================================================================
#LED灯闪烁
# P0 = Pin(19, Pin.OUT)    # create output pin on GPIO0
# 
# while True:
#     P0.on()                 # set pin to "on" (high) level
#     time.sleep(0.5)
#     P0.off()                # set pin to "off" (low) level
#     time.sleep_ms(500) 
#==================================================================
#LED流水
P0 = Pin(19, Pin.OUT)  
P1 = Pin(18, Pin.OUT)
P2 = Pin(5, Pin.OUT)
P3 = Pin(17, Pin.OUT) 
LED_List = [P0,P1,P2,P3]
def Led_Flow():
    for i in LED_List:
        print(i)
        i.value(0)
        time.sleep(0.1)
    for i in LED_List:
        i.value(1)
    time.sleep(0.1)
       
while True:
    Led_Flow()
    

感觉还是Python简单啊,随心所欲的写写就实现了。

Key1 = Pin(16,Pin.IN,Pin.PULL_UP)
Led0 = Pin(19, Pin.OUT)
state =0
while True:
    if Key1.value()==0:
        time.sleep(0.15)
        if Key1.value()==0:
            state= not state
            Led0.value(state)
    else:
        time.sleep(0.15)

这个是按键实现按一下led灯灭灯亮。基本和树莓派Python实现差不多。

ESP32-C3是一款基于Espressif Systems的低功耗微控制器,常用于物联网(IoT)设备和嵌入式项目中。要使用GPIO控制RGB LED灯的颜色,你需要按照以下步骤操作: 1. **硬件连接**: - 将RGB LED的三个引脚(红、绿、蓝)分别连接到ESP32-C3的GPIO引脚上。通常红色连接到GPIO的P0.13(或根据文档中的具体定义),绿色连接到P0.12,蓝色连接到P0.14。 2. **初始化GPIO**: 在代码中,使用`GPIO}`库将这些GPIO设置为输出模式,以便你可以控制它们的电平。 ```c #include <driver/gpio.h> #define RGB_R_PIN GPIO_NUM_13 #define RGB_G_PIN GPIO_NUM_12 #define RGB_B_PIN GPIO_NUM_14 void gpio_init() { gpio_set_direction(RGB_R_PIN, GPIO_MODE_OUTPUT); gpio_set_direction(RGB_G_PIN, GPIO_MODE_OUTPUT); gpio_set_direction(RGB_B_PIN, GPIO_MODE_OUTPUT); } ``` 3. **设置颜色**: 创建一个函数来设置RGB颜色,通过依次改变三个GPIO的电平(0代表关闭,1代表打开)。 ```c void set_rgb_color(uint8_t r, uint8_t g, uint8_t b) { gpio_write(RGB_R_PIN, r); // 设置红色电平 gpio_write(RGB_G_PIN, g); // 设置绿色电平 gpio_write(RGB_B_PIN, b); // 设置蓝色电平 } ``` 4. **循环更新颜色**: 在主循环中调用`set_rgb_color()`函数,改变RGB值来生成不同颜色。 ```c void loop() { for (int i = 0; i <= 255; i++) { set_rgb_color(i, i, i); // 全彩 vTaskDelay(pdMS_TO_TICKS(50)); // 延迟50毫秒,以减缓闪烁 } } ``` 5. **可能的注意事项**: - 请确保在你的项目中包含了必要的库文件,并且已经初始化了定时器以确保LED颜色的刷新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值