Funpack3-2,使用EV54Y39A制作手指数量辨识器
该项目使用了EV54Y39A,实现了手指数量辨识器的设计,它的主要功能为:伸出不同数量的手指在板卡上挥动,识别出有几根手指。
标签
Funpack活动
ADC
开发板
StreakingJerry
更新2024-06-04
40

项目描述

本项目使用了PIC0IOT-WA开发板(EV54Y39A),实现了手指数量辨识器的设计。利用板卡上集成了光照传感器,将板卡平放后,伸出不同数量的手指在板卡上挥动,识别出有几根手指。

软件流程图及各功能对应的主要代码片段及说明

程序开发使用的是官方的MPLAB X IDE,使用这个IDE配置管脚和外设非常方便。以往使用PIC的单片机要去看寄存器,但现在使用IDE中的MMC就可以直接进行配置。


安装好IDE,插上开发板后,新建一个项目,然后IDE会自动带我们来到MCC界面。如果没有自动进来,也可以手动点击工具栏上的MCC按钮。进来后在左边的Device Resources中找到我们需要使用的外设,点击外设前的绿色加号进行添加。这个项目中我们需要添加两个外设,一个是ADC,另一个是UART。添加完成后外设会显示在Project Resources中。


image.png


ADC的默认TAD配置会不满足要求,当添加ADC外设后,就会自动跳出相应警告信息。因此,我们还需要多做一步,在ADC1设置中,把Conversion Clock从默认的1改成2。image.png


而UART外设的目的是为了打印信息。因此我们也需要额外设置一下,将printf重定向到UART。

image.png


接下来我们需要给添加好的外设配置对应的管脚,根据原理图可以知道,debugger使用的是UART1,对应PC8和PC9;光传感器引脚是PB12。点开Pin Manager后,点击对应管脚的功能处加锁,相当于锁定了管脚和功能。最后我们可以给ADC1设置一个别称,可以让代码可读性增加。同时不要忘记TX输出引脚默认要输入高电平。做完这一系列操作后,点击Generate,就可以自动将所有的配置信息写入代码中。

image.png

image.png

这里多提一句,如果想要使用调试器,板载调试器接在了PB10和PB11上,而软件中的默认配置是PB0和PB1。因此,我们需要把它切换过来。

image.png


现在我们就可以回到project页面编写代码了。打开main.c文件,写入下列代码,上传板子,就这么简单。外设具体的使用方法都写在了MCC Generated Files里面的头文件中,使用了什么方法,记得也要#include对应的头文件。

/**
Generated main.c file from MPLAB Code Configurator

@Company
Microchip Technology Inc.

@File Name
main.c

@Summary
This is the generated main.c using PIC24 / dsPIC33 / PIC32MM MCUs.

@Description
This source file provides main entry point for system initialization and application code development.
Generation Information :
Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4
Device : PIC24FJ128GA705
The generated drivers are tested against the following:
Compiler : XC16 v2.10
MPLAB : MPLAB X v6.05
*/

/*
(c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this
software and any derivatives exclusively with Microchip products.

THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED
WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A
PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION
WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION.

IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE
FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN
ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.

MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE
TERMS.
*/

/**
Section: Included Files
*/
#include "mcc_generated_files/system.h"
#include "mcc_generated_files/adc1.h"

/*
Main application
*/
int main(void) {
// initialize the device
SYSTEM_Initialize();
int i, j = 0;
int conversion = 0;
int state = 0;
int count = 0;
ADC1_Initialize();

while (1) {
count = 0;
state = 0;
for (j = 0; j < 2000; j++) {
ADC1_Enable();
ADC1_ChannelSelect(SENSOR);
ADC1_SoftwareTriggerEnable();
//Provide Delay
for (i = 0; i < 1000; i++) {
}
ADC1_SoftwareTriggerDisable();
while (!ADC1_IsConversionComplete(SENSOR));
conversion = ADC1_ConversionResultGet(SENSOR);
ADC1_Disable();
if (state > 5) {
if (conversion > 300) {
state = 0;
count++;
}
} else {
if (conversion < 200) {
state++;
}
}
}
printf("Number of Finger: %*d \r\n", 5, count);
}
return 1;
}
/**
End of File
*/

image.png

代码主要内容是循环读取ADC光传感器的读数,当低于某一阈值时,说明有物体遮挡,并记录遮挡次数。最终在一段时间的读取过后,将记录到的遮挡次数打印出来,这样当手指在传感器上挥过时,就可以打印出手指的个数。经过实验,读取2000次是一个比较适中的值。

image.png

功能展示及说明

打开一个串口监视器,连接到板子,就可以看到对应输出的信息。这时候我们挥动手指,就可以看到对应的读数。记得如果环境中光线不强烈,导致手指遮住后对比度不够大的话,可以用手机的摄像头或台灯放在板子上方进行补光。

f6f782a5e9a883ea6f160a232dbd686.jpg

image.png


对本活动的心得体会

​这次活动很有意思,MCC让我体验到了一种更加便捷的嵌入式开发过程。本来还为无法使用arduino而苦恼,但转念一想参加活动的意义不正是可以有机会去尝试一下各个不同的平台。希望活动越办越好。

附件下载
pic_iot_wa.X.rar
团队介绍
个人
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号