再次态度表态
:坛子里大佬很多,对小白的我很友好,只要花些时间还是很好学习。
从坛子里断断续续 ,不间断的代码堆积和逻辑整合终于完成了粗糙的模型功能,嗨~谁叫我菜呢,不过还好我喜欢折腾下
过程贴中完成了光强读取,剩下就是配置计算公式的数组,包括两个配置变量,一个传感器读取值参数:第一个是光圈变量,另外一个是ISO变量,最后就是传感器LUX值。通过网上学习和总结最终的快门结算公式类似如下:
result = (math.pow(N, 2) * 250) / LUX * ISO
print(result)
代码
km1 = (math.pow(my_f_guangquan_daxiao[f_guangquan_daxiao_lest_state_num],2)*250) / ((guangxian.lux + 0.000001) * my_iso[iso_lest_state_num])
#print("快门值为=",km1)按键配置通过不断轮询进行选择参数,红按钮选择光圈大小,蓝色按钮选择iso配置
while True:
current_time = time.localtime() # 定义时间方法
formatted_time = "{:02d}:{:02d}:{:02d}".format(current_time.tm_hour, current_time.tm_min, current_time.tm_sec)
#print("%.2f Lux" % guangxian.lux) # 向控制台打印lux数据
# 蓝色按键控制iso值
anjian_lan_state = anjian_lan.value # 获取蓝色按键当前按键状态
if anjian_lan_state != last_anjian_lan_state: # 检测到按键状态改变
#time.sleep(debounce_delay) # 进行延时消抖
anjian_lan_state != anjian_lan.value # 再次获取按键状态确认
if anjian_lan_state != last_anjian_lan_state: # 如果状态确实改变了
if anjian_lan_state == False: # 按键按下(变为低电平)
led.value = True # 为led赋值高电平,让led亮起
print("蓝键按下了")
iso_lest_state_num += 1 # iso列表索引加1,选择下一个元素
if iso_lest_state_num == len(my_iso): # 判断是否未达到列表末尾
if iso_lest_state_num >= 7:
iso_lest_state_num = 0
print("清空iso_lest_one_num列表的位置计数,重新开始")
print("当前iso数字为:",my_iso[iso_lest_state_num],"在列表的第",iso_lest_state_num,"位")
else: # 按键松开(变回高电平)
print("蓝键被松开了")
# 可添加按键松开相关操作代码
led.value = False # 取消led亮起状态
last_anjian_lan_state = anjian_lan_state # 更新上一次按键状态记录
anjian_hong_state = anjian_hong.value # 获取红色按键当前按键状态
if anjian_hong_state != last_anjian_hong_state: # 检测到按键状态改变
#time.sleep(debounce_delay) # 进行延时消抖
anjian_hong_state != anjian_hong.value # 再次获取按键状态确认
if anjian_hong_state != last_anjian_hong_state: # 如果状态确实改变了
if anjian_hong_state == False: # 按键按下(变为低电平)
led.value = True # 为led赋值高电平,让led亮起
print("红色键按下了")
f_guangquan_daxiao_lest_state_num += 1 # f 光圈列表索引加1,选择下一个元素
if f_guangquan_daxiao_lest_state_num == len(my_f_guangquan_daxiao): # 判断是否未达到列表末尾
if f_guangquan_daxiao_lest_state_num >= 7:
f_guangquan_daxiao_lest_state_num = 0
print("清空f_guangquan_daxiao_lest_state_num列表的位置计数,重新开始")
print("当前光圈大小为:",my_f_guangquan_daxiao[f_guangquan_daxiao_lest_state_num],"在列表的第",f_guangquan_daxiao_lest_state_num,"位")
else: # 按键松开(变回高电平)
print("红色键被松开了")
# 可添加按键松开相关操作代码
led.value = False # 取消led亮起状态
last_anjian_hong_state = anjian_hong_state # 更新上一次按键状态记录
button_state = button.value # 获取当前按键状态
if button_state != last_button_state: # 检测到按键状态改变
#time.sleep(debounce_delay) # 进行延时消抖
button_state = button.value # 再次获取按键状态确认
if button_state!= last_button_state: # 如果状态确实改变了
if button_state == False: # 按键按下(变为低电平)
led.value = True # 为led赋值高电平
print("\nboot按键被按下了") # 输出信息
# 这里可以添加按键按下后要执行的具体操作代码,比如切换显示组等
button_kz += 1 # button_kz boot按键控制计数加1
print("这是按下的第",button_kz,"次")
#motor_servo.throttle = -1
kacha()
if button_kz != 0: # 如果boot按键的计数控制不等于0
display.root_group = group_2 # 切换到显示组2
else: # 按键松开(变回高电平)
print("boot按键被松开了")
# 可添加按键松开相关操作代码
#button_kz = 0 # 清空boot按键计数控制
motor_servo.throttle = 0
led.value = False # 取消led亮起状态舵机部分因为很少接触,参考大佬和一些资料,简单的控制代码
pwm = pwmio.PWMOut(board.D10, frequency=50) # 给D10口设置pwmio输出50m赫兹 motor_servo = servo.ContinuousServo(pwm) motor_servo.throttle = 0 # 取值范围 -1 ~ 1,负1正转,正1逆时针旋转 def kacha(): # 定义一个舵机按快门的动作 motor_servo.throttle = -1 time.sleep(0.54) motor_servo.throttle = 1 time.sleep(0.48) motor_servo.throttle = 0
最后的效果图片 快门KM, F 光圈 DJ 电机控制次数,对应快门按钮执行

视频地址如下:
通过百度网盘分享的文件:67-Thirsty Lizzy.mp4
链接:https://pan.baidu.com/s/1SNyH38f4cATQXFfAGQWZAA
提取码:oi3o
EETV视频链接:https://v.eepw.com.cn/video/play/id/16179
年底了突然工作比较忙,先争取完成基础功能,等过完年底不忙了继续研究下蓝牙无线控制部分的代码。
感谢电子产品世界EEPW和digikey 平台,让我有机会接触软件部分的控制,开启新的世界。常来论坛,常来常新~

我要赚赏金
