目录
导包:
import sensor, lcd, utime
from Maix import GPIO
from fpioa_manager import fm
注册引脚:
'''
【pin】芯片外部 IO
【function】芯片功能
【force】=True 则强制注册,清除之前的注册记录
'''
fm.register(pin,function,force=False)
fm.register(16, fm.fpioa.GPIOHS0, force=True)
fm.register(18, fm.fpioa.GPIOHS1, force=True)
构造GPIO口的对象:
'''
【ID】内部 GPIO 编号
【MODE】 GPIO 模式;
GPIO.IN :输入模式
GPIO.OUT :输出模式
【PULL】 GPIO.PULL_UP :上拉
GPIO.PULL_DOWN :下拉
GPIO.PULL_NONE :无
【value】GPIO 初始化电平
1:高电平
0:低电平
'''
GPIO(ID,MODE,PULL,VALUE)
KEY1=GPIO(GPIO.GPIOHS0, GPIO.IN, GPIO.PULL_UP)
KEY2=GPIO(GPIO.GPIOHS1, GPIO.IN, GPIO.PULL_UP)
例程:
'''
main.py
说明:通过按键1按下进行拍照拍照并保存到SD卡,同时在LCD上显示一段时间,按键2切换摄像头模式。
注意:按键2需外接。
'''
import sensor, lcd, utime
from Maix import GPIO
from fpioa_manager import fm
#注册KEY的外部IO
fm.register(16, fm.fpioa.GPIOHS0, force=True)
fm.register(18, fm.fpioa.GPIOHS1, force=True)
#构建KEY对象
KEY1=GPIO(GPIO.GPIOHS0, GPIO.IN, GPIO.PULL_UP)
KEY2=GPIO(GPIO.GPIOHS1, GPIO.IN, GPIO.PULL_UP)
#摄像头初始化
sensor.reset() # Initialize the camera sensor.
sensor.set_pixformat(sensor.RGB565) # or sensor.GRAYSCALE
sensor.set_framesize(sensor.QVGA) # or sensor.QVGA (or others)
sensor.skip_frames(30) # Let new settings take affect.
flag=1
sensor.set_vflip(flag) #摄像头后置模式
#LCD初始化
lcd.init()
key_num = 0 #按键标志位
name_num = 0 #照片名字
##############################################
# 按键和其回调函数
##############################################
def fun1(KEY1):
global key_num
utime.sleep_ms(10) #消除抖动
if KEY1.value()==0: #确认按键被按下
key_num = 1
def fun2(KEY2):
global key_num
utime.sleep_ms(10) #消除抖动
if KEY2.value()==0: #确认按键被按下
key_num = 2
#开启中断,下降沿触发
KEY1.irq(fun1, GPIO.IRQ_FALLING)
KEY2.irq(fun2, GPIO.IRQ_FALLING)
while True:
lcd.display(sensor.snapshot()) # LCD实时显示
if key_num==1: #按键1被按下
key_num = 0 #清空按键标志位
#拍照并保存
lcd.display(sensor.snapshot().save("/sd/"+str(name_num)+".jpg"))
name_num=name_num+1 #名字编码加1
print("Done! Reset the camera to see the saved image.")
lcd.draw_string(100,100,"Tu_Pian_Yi_Bao_Cun!!!",lcd.RED,lcd.WHITE)
#延时3秒,观看拍摄图片
utime.sleep_ms(3000)
elif key_num==2:#更换摄像头模式
key_num=0
if flag==1:
flag=0
sensor.set_vflip(flag)
elif flag==0:
flag=1
sensor.set_vflip(flag)