这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 电子测光表DIY完成贴

共1条 1/1 1 跳转至

电子测光表DIY完成贴

菜鸟
2024-12-02 14:17:11     打赏

1.概述

电子测光表是摄影中常用的辅助工具,用于测量光线的强度和亮度。它可以帮助摄影师在拍摄时选择合适的曝光参数,从而获得更好的照片效果。电子测光表通常由一个显示屏、一个测光元件和一个电池组成。显示屏用于显示测量结果,测光元件用于测量光线强度,电池为设备提供电源。

框图.png

2.功能

电子测光表的主要功能是测量光线的强度和亮度,并根据测量结果给出曝光建议。通过按键调节光圈、快门速度和ISO感光度,用户可以轻松地调整曝光参数,从而获得更好的照片效果。电子测光表还可以测量光线角度和距离,帮助用户更好地掌握拍摄场景的光线分布。此外,电子测光表还可以蓝牙货WiFi进行无线连接,实现实时测光和自动曝光数据的实时上传(未实现)。

3.软件功能设计

屏幕ui简单设计了一个UI , 页面刚进入滚动显示 "Hello EEPW & DigiKey" 然后进入测光页面

测光的原理根据教程中的描述


image-1.png

初始化代码

要做的功能是初始话按键,初始化屏幕,初始化传感器,初始化菜单

AV = ['1 ','1.4','2','2.8','4','5.6','8','11','16', '22','32']  
TV = [ '1     ', '1/2   ', '1/4   ',  '1/8   ',  '1/15  ',   '1/30  ',   '1/60  ', '1/125 ', '1/250 ', '1/500 ', '1/1000']  
SV = [ '100 ', '200 ',  '400 ', '800 ',  '1600']
i2c = board.STEMMA_I2C()   
sensor = adafruit_bh1750.BH1750(i2c)

按键扫描,键值获取程序

key0 = DigitalInOut(board.BUTTON)  
key1 = DigitalInOut(board.A4)  
key2 = DigitalInOut(board.A5)  
  
def keyInit():  
    key0.direction = Direction.INPUT  
    key0.pull = Pull.UP  
    key1.direction = Direction.INPUT  
    key1.pull = Pull.UP  
    key2.direction = Direction.INPUT  
    key2.pull = Pull.UP  
  
def cameraInfo(old_key_value : int):  
    key_value = old_key_value  
    
    svIdx = 0  
    avIdx = 0  
    showCameraInfo(svIdx, avIdx)  
    while True:  
        key_value=isKeyPressed()  
        if old_key_value != key_value:  
            old_key_value = key_value  

            if key_value == KEY_D0:  
                break  

            elif key_value == KEY_D1:  
                svIdx += 1  
                if len(SV) <= svIdx :  
                    svIdx = 0  
                showCameraInfo(svIdx, avIdx)  

            elif key_value == KEY_D2:  
                avIdx +=1  
                if avIdx >= len(AV):  
                    avIdx = 0  
                showCameraInfo(svIdx, avIdx)

设计一个菜单通过 按钮切换测光表的测光模式 

菜单中有,低,中,高三种模式。

display = board.DISPLAY  

splash = displayio.Group()  
display.root_group = splash  

if mode == 0:  
    text_mode = "Mode High"  
elif mode == 1:  
    text_mode = "Mode Low"  
elif mode == 2:  
    text_mode = "Mode Middle"  
text_mode_area = label.Label(terminalio.FONT, text=text_mode, color=TEXT_COLOR)  
text_mode_group = displayio.Group(  
    scale=FONTSCALE, x=0, y=display.height // 4  
)  
text_mode_group.append(text_mode_area)  
splash.append(text_mode_group)  

text_lux = ("%0.2f" % sensor.lux) + "Lux"  
text_lux_area = label.Label(terminalio.FONT, text=text_lux, color=TEXT_COLOR)  
text_lux_group = displayio.Group(  
    scale=FONTSCALE, x=0, y=display.height // 2  
)  
text_lux_group.append(text_lux_area)  
splash.append(text_lux_group)

完成贴贴图:

image-2.png

image-3.png

image-4.png

以上是实现功能的一些关键代码,由于以前没有用过cpy写过程序,这里参考了论坛里坛友的代码,非常感谢,也感谢EEPW

组织的活动。





关键词: DIY    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]