内容介绍
内容介绍
任务要求
使用MPLAB开发,尝试让部分管脚实现触摸功能,可搭配触摸扩展面板,并通过按键和滑动实现呼吸灯速率切换,可自行设计触摸板
任务思路
本次使用的板卡是SAME51J20A Curiosity Nano ,实现呼吸灯的功能使用定时器实现呼吸灯模拟,通过触摸按键上的排针模拟触摸板的左滑和右滑实现对板卡的呼吸灯进行滑动。
逻辑框图
实现准备
软件准备:使用MPLAB X IDE
创建MCC管脚准备
添加TC0和touch,配置我们的定时器的数值。
touch的库需要我们的CM中下载,才能找到并且使用。
触摸引脚选择
这里选择相近的引脚,方便实现我们的引脚的选择。
准备工作基本完成,接下来进行代码实现。
软件代码
可视化的框图可以一键帮我添加配置,轻松实现复杂框架的搭建。
这里是实现左滑和右滑的逻辑判断,来实现调节我们占空比的数值
void process_touch_input()
{
static const uint8_t RIGHT_SLIDE_FLAG = 0x08;
static const uint8_t LEFT_SLIDE_FLAG = 0x08;
if (KEY_TOUCHED_MASK == (get_scroller_state(0) & KEY_TOUCHED_MASK))
{
if (qtm_scroller_data1[0].right_hyst & RIGHT_SLIDE_FLAG)
{
speedLevel = (speedLevel < 4) ? speedLevel + 1 : 4;
}
else if (qtm_scroller_data1[0].left_hyst & LEFT_SLIDE_FLAG)
{
speedLevel = (speedLevel > 0) ? speedLevel - 1 : 0;
}
}
}
在主函数中我们先需要开启定时器和定时器中断,实现我们的数据的读取,之后在线程中进行滑动的逻辑帕努但
int main(void)
{
SYS_Initialize(NULL);
TC0_TimerCallbackRegister(pwm_timer_callback, 0);
TC0_TimerStart();
while (true)
{
SYS_Tasks();
touch_process();
if (measurement_done_touch)
{
measurement_done_touch = false;
process_touch_input();
}
}
return EXIT_FAILURE;
}
实现呼吸灯的关键就是通过定时器模拟PWM的效果的中断回调函数
void pwm_timer_callback(TC_TIMER_STATUS status, uintptr_t context)
{
const uint16_t PWM_PERIOD = 200;
const uint16_t MIN_DUTY = 20;
// 每200次计数完成一个PWM周期
if (++timerCounter >= PWM_PERIOD) {
timerCounter = 0;
}
// PWM占空比更新控制
static uint16_t updateCounter;
if (updateCounter++ >= pwmUpdateIntervals[speedLevel])
{
updateCounter = 0;
// 自动调整占空比方向
if (pwmDuty >= PWM_PERIOD) dutyStep = -1;
else if (pwmDuty <= MIN_DUTY) dutyStep = 1;
pwmDuty += dutyStep;
}
// 输出PWM信号
(timerCounter > pwmDuty) ? LED_Clear() : LED_Set();
}
实现效果
实现效果的呼吸灯亮度在实时变化,这里简单的图片无法完全展示,如果有需要可以查看一下b站使用的效果演示。
总结归纳
一开始尝试的自己画板,想实现触摸板来实现呼吸灯的效果,由于使用杜邦线,其中引脚的干扰容易误触发,后续就改成直接在板子上的引脚实现功能,其中的管脚轻松实现触摸的功能。二是软件的下载加载太久了,一旦有什么需要下载的库至少下载半小时体验很不好。也最后感谢硬禾学堂,能让我体验到不同的板卡开发的过程。
附件下载
touch.zip
团队介绍
个人
评论
0 / 100
查看更多
猜你喜欢
Funpack4-2 - 基于SAME51与CAP1203触摸模块实现触摸控制呼吸灯该项目使用了Microchip的SAME51J20A Curiosity Nano与Sparkfun的CAP1203触摸扩展板,实现了触摸点触与触摸滑动两种模式控制呼吸灯速率的的设计,它的主要功能为:触摸板上的3个按键分别对应“快”、“中”与“慢”三种呼吸灯速率。此外,通过左滑、右滑可以提高呼吸灯速率或者降低呼吸灯速率。
playlikework
13
Funpack4-2 -使用SAME51J20A完成呼吸灯效果切换该项目使用了SAME51J20A,实现了呼吸灯效果切换的设计,它的主要功能为:利用Microchip的SAM E51 CURIOSITY NANO EVALUATION KIT核心板作为开发平台,依托MPLAB开发环境,通过按键和滑动实现呼吸灯效果切换。
金玉其中
14
Funpack4-2 -使用SAME51实现呼吸灯速率切换控制该项目使用了SAME51,实现了呼吸灯速率控制的设计,它的主要功能为:使用SAME51实现呼吸灯速率切换控制,通过按键和触摸滑动。
立冬的雪
14