ESP32(MicroPython) RGB点阵+多功能显示+可交互超声波云台

这篇具有很好参考价值的文章主要介绍了ESP32(MicroPython) RGB点阵+多功能显示+可交互超声波云台。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ESP32 RGB点阵+多功能显示+可交互超声波云台

本程序通过LCD1602显示湿度和距离数据。超声波云台在超声波传感器检测到距离小于15厘米时顺时针转动,距离大于15厘米时逆时针转动实现交互。WS2812点阵每320ms显示随机颜色(每个灯的颜色分开取值),通过五向导航按键控制亮度和开关。

代码如下文章来源地址https://www.toymoban.com/news/detail-514597.html

'''
  舵机-->(22)
  (Trig)-->(5)
  (Echo)-->(18)
  SCL-->16
  SDA-->17
  DS-->27
   WS-->(13)
'''

#导入Pin模块
from machine import Pin
import time
from servo import Servo
from machine import Timer
from hcsr04 import HCSR04
from neopixel import NeoPixel
import random
from machine import ADC
from machine import Pin,I2C
from i2c_lcd import I2cLcd
import dht

#定义HCSR04控制对象
hcsr04=HCSR04(trigger_pin=5, echo_pin=18)
#定义SG90舵机控制对象
servo = Servo(Pin(22))
#定义DHT22控制对象
dht22=dht.DHT22(Pin(27))
#定义RGB控制对象
#控制引脚为13,RGB灯串联5个
pin=13
rgb_num=64
rgb_led=NeoPixel(Pin(pin,Pin.OUT),rgb_num)
# LCD 1602 I2C 地址
DEFAULT_I2C_ADDR = 0x27
# 初始化GPIO口
# def setup():
# global lcd
i2c = I2C(1,sda=Pin(17),scl=Pin(16),freq=400000)
lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16)  # 初始化(设备地址, 背光设置)
#定义按键控制对象
key1=Pin(12,Pin.IN,Pin.PULL_UP)
key2=Pin(14,Pin.IN,Pin.PULL_UP)
key3=Pin(26,Pin.IN,Pin.PULL_UP)
key4=Pin(25,Pin.IN,Pin.PULL_UP)
key5=Pin(33,Pin.IN,Pin.PULL_UP)
key6=Pin(32,Pin.IN,Pin.PULL_UP)

key_en=1
#按键扫描函数
def key_scan():
    global key_en
    if key_en==1 and (key1.value()==0 or key2.value()==0 or key3.value()==0 or key4.value()==0 or
                      key5.value()==0 or key6.value()==0  ):
        time.sleep_ms(10)
        key_en=0
        if key1.value()==0:
            return 1
        elif key2.value()==0:
            return 2
        elif key3.value()==0:
            return 3
        elif key4.value()==0:
            return 4
        elif key5.value()==0:
            return 5
        elif key6.value()==0:
            return 6
    elif (key1.value()==1 and key2.value()==1 and key3.value()==1 and key4.value()==1 and
          key5.value()==1 and key6.value()==1  ) :
        key_en=1
    return 0

brightness=18
delay=40
mode=1
def key_get(): #获取键值并改变变量的值
    global brightness
    global delay
    global mode
    key=key_scan()
    if key==1 and brightness<60 :
        brightness+=6
    elif key==2 and brightness>6 :
        brightness-=6
    elif key==3 and delay<90 :
        delay+=10
    elif key==4 and delay>10 :
        delay-=10
    elif key==5 and mode<1 :
        mode+=1
    elif key==6 and mode>0 :
        mode-=1     

b=0
c=120
g=0
h=0
humi=99
k=0
l=0
m=0
servo.write_angle(c)
#定时器0中断函数
def time0_irq(time0):
    global b
    global c
    global g
    global h
    global k
    global l
    global m
    global humi
    global brightness
    global delay
    global mode
    key_get()
    distance=hcsr04.distance_cm()
    if distance>15 and c<=120:  
        c+=2
        servo.write_angle(c)
    if distance<15 and distance>=0 and c>=60:
        c-=2
        servo.write_angle(c)
    g+=1
    m+=1
    if g==8 : #每8个周期RGB灯随机变色,屏幕刷新
        g=0
        if mode==1 :
            for i in range(rgb_num):
                d=random.randint(0,brightness)
                e=random.randint(0,brightness)
                f=random.randint(0,brightness)
                rgb_led[i]=(d, e, f)
            rgb_led.write()
        if mode==0 :
            for i in range(rgb_num):
                rgb_led[i]=(0, 0, 0)
            rgb_led.write()
        lcd.putstr("humidity=%.1f"%humi)       
        lcd.putstr("%  ")
        lcd.putstr("distance=%3d"%distance)
        lcd.putstr("cm  ")

    if m==45: #每45个周期测量湿度
        m=0
        dht22.measure()  #调用DHT类库中测量数据的函数
        humi = dht22.humidity()
       
#程序入口
if __name__=="__main__":
    time0=Timer(0)  #创建time0定时器对象
    time0.init(period=40,mode=Timer.PERIODIC,callback=time0_irq)
    while True:
        pass

到了这里,关于ESP32(MicroPython) RGB点阵+多功能显示+可交互超声波云台的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 多功能透明屏,在智能家居领域中,有哪些功能特点?显示、连接

    多功能透明屏是一种新型的显示技术,它能够在透明的表面上显示图像和视频,并且具有多种功能。 这种屏幕可以应用于各种领域,如商业广告、智能家居、教育等,为用户提供更加便捷和多样化的体验。 首先,多功能透明屏可以用于商业广告。传统的广告牌通常是单一的

    2024年02月09日
    浏览(21)
  • ESP32(MicroPython) 矩阵键盘电子琴+RGB灯

     本程序相比上一个矩阵键盘电子琴程序增加了一个矩阵键盘,并把三个矩阵键盘的同一行相连,扫描周期缩短到40ms。增加RGB灯带,每个周期刷新一个灯(随机颜色)。 代码如下 #导入Pin模块 from machine import Pin import time from machine import PWM from neopixel import NeoPixel import random #扬声

    2024年02月09日
    浏览(15)
  • 基于STM32的智能门锁/智能门禁多功能系统

    本次设计是基于STM32F103C8T6(以下C8T6等同)开发的智能锁,支持多种方式对系统进行操作:蓝牙、指纹、RFID刷卡、4x4键盘输入,拥有友好的蓝牙收发界面和LCD交互界面。 蓝牙:作为总系统的管理员,有主管理和次管理,主管理只能有一个,副管理员可以有多个。主管理员拥有

    2024年02月08日
    浏览(21)
  • 【Proteus仿真】【STM32单片机】多功能智能台灯

    本项目使用Proteus8仿真STM32单片机控制器,使用LCD1604液晶、按键、蜂鸣器、语音识别模块、PCF8591 ADC模块、DHT11温湿度传感器、光线传感器、台灯、人体红外传感器等。 主要功能: 系统运行后,LCD1604液晶显示温湿度和光线强度、时间日期,系统工作模式;系统默认为自动模式

    2024年02月07日
    浏览(30)
  • 2021校赛基于stm32f103多功能台灯

    起源 又到了一学期一次的校内电子设计大赛,又到了激动人心的时刻每次电子设计大赛都会出现各种大佬展现他们的作品,对于我这种菜鸟也只能默默观望,但是呢,积极参与还是要有的,记得上一次参加做的基于51的避障小车直接买的套件焊好 然后在烧入程序就直接上战场

    2023年04月20日
    浏览(21)
  • 硬件课程设计:基于STM32的多功能播放器之MP3音乐播放

    3.1.1 设计思路         音乐播放是手机等电子产品最常见的功能,也是最具娱乐性的功能,在该模块中,我先从SD卡中读取已存放的MP3音乐文件,然后将读取的字节流依次送人VS1053中进行解码和播放,同时从VS1053相关的寄存器中读取音乐播放时间,在LCD上实时显示歌曲信息。

    2023年04月08日
    浏览(15)
  • 基于STM32的多功能门禁系统(AS608指纹识别、密码解锁、刷卡解锁)

    目录 一、项目功能 二、视频 三、原理图 4、材料选择 5、部分程序 1、AS608指纹解锁;可以录入、删除、验证指纹; 2、密码解锁;可以密码验证、修改密码和保存密码; 3、刷卡解锁; 4、OLED液晶显示; 基于STM32的多功能门禁系统(AS608指纹识别、密码解锁、刷卡解锁) AS608指纹

    2024年02月12日
    浏览(20)
  • 基于stm32作品设计:多功能氛围灯、手机APP无线控制ws2812,MCU无线升级程序

    作品哔哩哔哩视频:https://www.bilibili.com/video/BV1Yb4y1a7AQ#reply5536921990 资料链接: 蓝牙彩灯v1.01资料链接: CSDN: https://download.csdn.net/download/mbs520/25149435 百度网盘: https://pan.baidu.com/s/14Vout7Q2P6JBDZCCd8Gm6w 提取码:b7it 蓝牙彩灯v1.03资料链接: https://download.csdn.net/download/mbs520/25150035 取

    2024年02月09日
    浏览(17)
  • ESP32(MicroPython) 四足机器人(五)功能补充

    本次更新增加了前后倾斜(每次动作交换前部和后部高度)、蹲起与抬脚动作,均位于用于连续执行动作的function函数中,但实测抬脚动作需要先启动function函数的另一项功能才能正常开启,代码检查无误,应该是MicroPython固件的bug。另外,对于判断功能,增加了elif语句的使用

    2024年02月15日
    浏览(19)
  • 微信小程序 - 超详细小程序接入腾讯地图的完整流程,提供地图显示、IP 属地定位、地理位置名称、获取经纬度等超多功能示例(可一键复制并运行的功能源代码,详细的注释及常见问题汇总)小白直接上手!

    网上的教程代码太乱了,第一次接触的朋友极其难搞,更别说把功能改造移植到自己的项目中去。 本文站在小白的角度, 实现了微信小程序开发中,集成腾讯地图的详细流程及使用方法教程,提供了地图显示、IP 属地定位、当前定位的地理位置名称、当前定位的经纬度等等

    2024年02月16日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包