3. 按键操作蜂鸣器

鲁班猫扩展板板载3个用户按键和1个蜂鸣器:

../_images/show-board-buzzer_key.png

三个按键均使用XL9535扩展芯片上的扩展IO,分别是P0_3、P0_4、P0_5,野火在驱动层已经将这些IO设置为输入:

../_images/show-circuit-key.png

蜂鸣器也是使用XL9535扩展芯片上的扩展IO,分别是P0_6:

../_images/show-circuit-buzzer.png

以鲁班猫1为例,执行如下命令打开配置文件,并开启XL9535设备树插件:

1
sudo vi /boot/uEnv/uEnv.txt
../_images/show-dtbo11.png

重启板卡后,执行如下命令可以发现3个被注册为KEY的IO:

1
sudo gpioinfo
../_images/show-operation-gpioinfo1.png

执行如下命令查看按键对应的输入事件:

1
ls /dev/input/by-path/ -l
../_images/show-operation-bypath1.png

如上图,keys对应/dev/input/event9,驱动层将3个按键事件都汇总到一个event事件中。

执行如下命令后,按下任意按键,查看按键的原始输入信息:

1
sudo hexdump /dev/input/event9
../_images/show-operation-inputevent.png

可以执行如下命令手动测试蜂鸣器:

1
2
3
4
5
#使能蜂鸣器
gpioset 6 6=1

#关闭蜂鸣器
gpioset 6 6=0

代码测试

本次代码测试应用了3个板载按键和蜂鸣器,任意按键按下,蜂鸣器工作,按键松开后,蜂鸣器停止工作。

python代码测试

python测试代码为:lubancat_rk_code_storage/expansion_board/key_buzzer/key_buzzer.py

将程序拷贝到板卡,执行如下命令运行程序:

1
2
# 运行程序,其中输入参数 /dev/input/eventX 要按照实际情况填写
sudo python key_buzzer.py /dev/input/event9

c代码测试

c测试代码为:lubancat_rk_code_storage/expansion_board/key_buzzer/key_buzzer.c

将程序拷贝到板卡,执行如下命令编译、运行程序:

1
2
3
4
5
# 编译程序
sudo gcc -o key_buzzer key_buzzer.c -lgpiod

# 运行程序,其中输入参数 /dev/input/eventX 要按照实际情况填写
sudo ./key_buzzer /dev/input/event9