产品概述

midi单片机 单片机编程中软定时器应用实例1——多路LED的闪烁

小编 2024-11-24 产品概述 23 0

单片机编程中软定时器应用实例1——多路LED的闪烁

【单片机高级编程之软定时器的实现】 文中介绍了软定时器的实现,本文及后面几篇将介绍其应用实例,一来帮大家扩展应用思路,二来通过不同的实例更好的了解软定时器的用法及性能。

本文介绍利用软定时器实现三路LED的快闪,慢闪,常亮,关闭,将多种控制封装成一个简单的接口,让你能放心而优雅的调用。

硬件电路:

电路采用GPIO直驱方式,当GPIO输出低LED亮,输出高LED灭。

软件实现:

1.定义三颗灯

typedef enum{

LED1=0,

LED2,

LED3,

LED_MAX,

}led_t;

2.定义四种状态

typedef enum{

LED_OFF=0x00,

LED_FLASH_SLOW=0x10,

LED_FLASH_QUICK=0x20,

LED_ON=0x30,

}ledCtrl_t;

3.灯的开关函数,根据原理图来设置相应GPIO的输出电平

static void _ledSwitch(led_t led,u8 on)

{

if(led >= LED_MAX)return;

switch(led){

case LED1:

GP3 = on?0:1;

break;

case LED2:

GP5 = on?0:1;

break;

case LED3:

GP0 = on?0:1;

break;

}

}

4.封装的LED控制函数,供程序员调用

static void led_ctrl(u32 para)

{

static u8 flag=0; 保存LED上一次的状态,8bit对应8个LED

static u8 _tID[LED_MAX]={INVALID_ID,INVALID_ID,INVALID_ID,INVALID_ID};软定时器ID

ledCtrl_t _ledCtrl=(para&0xf0);从para中取出LED控制指令

led_t _led=(para&0x0f);从para中取出LED

switch(_ledCtrl){

case LED_OFF:

timer_delete(&_tID[_led]);删除可能开启的定时器

_ledSwitch(_led,0);关闭LED

break;

case LED_FLASH_SLOW:

case LED_FLASH_QUICK:

timer_start(&_tID[_led],MODE_SINGLE,LED_FLASH_QUICK?100:800,led_ctrl,para );启动定时器让GPIO翻转,快闪时100ms翻转一次,慢闪时800ms翻转一次,此处翻转时间可根据实际需要更改 ! 参数para继续传递给回调函数下次使用

_ledSwitch(_led,(flag>>_led)&0x1);

if((flag>>_led)&0x1) flag &= ~(1<<_led);

else flag |= (1<<_led);

break;

case LED_ON:

timer_delete(&_tID[_led]);删除可能开启的定时器

_ledSwitch(_led,1);打开LED

break;

}

}

5.初始化GPIO和软定时器

6.调用led_ctrl接口如下

led_ctrl(LEDx|LED_FLASH_SLOW);LEDx慢闪

led_ctrl(LEDx|LED_FLASH_QUICK);LEDx快闪

led_ctrl(LEDx|LED_ON);打开LEDx

led_ctrl(LEDx|LED_OFF);关闭LEDx

程序员想要改变LED灯的状态,随时可调用led_ctrl,它封装了所有的控制细节,不用担心定时器的开关和状态冲突问题,调用后立即生效。

简单的实例今天就说到这里,感兴趣的小伙伴可参考本文动手实现,有任何问题随时留言或私信小编。如果您觉得还不错,记得回来点赞评论关注转发哦~~ 下一篇【单片机编程中软定时器应用实例2——MIDI音乐播放】 ,敬请期待!!

取一缕光做琴弦,交互式光感电子古筝亮相

文 | 卢旸“将光学传感器等新媒体技术运用到创意乐器的研发中,能够为舞台增添新奇色彩。”上海视觉艺术学院教师、同济大学设计创意学院声音实验室成员王玉以传统乐器古筝为原型系统,结合新媒体交互设计和音乐科技创新技术,建立了一种有效可行的面向新媒体光感乐器的设计框架,最终形成新媒体乐器装置“交互式光感电子古筝”。近日,交互式光感电子古筝亮相于上海设计之都十周年开幕式、上海科技节等活动,为观众呈现了全新的视听体验。 探究古筝电声化与新媒体化方式

王玉演奏交互式光感电子古筝在大型舞台演出之中,民族乐器由于构造的局限性,声音共鸣响度难以得到最优化的放大。传统扩音技术如果运用不当,则难以完美呈现民族乐器的音色表现效果。电声化民族乐器,在某些方面的运用更占优势。电声化技术与相关电子效果器结合,产生更为新颖的音色,为民族音乐的创新发展提供灵感。“为了适应变幻多样的音乐风格与舞台表现的新形式,得到更好的呈现效果,越来越多的民族乐器加入到电声化与新媒体化的进程之中。传统乐器古筝便是其中之一。”2018年初,王玉以古筝为研究对象,从民族乐器电声化及新媒体交互设计的角度,探究古筝新媒体化的实现方式及其相关科学技术原理的应用。她将光学传感器技术用于古筝的新媒体创意设计之中,创新研发交互式光感电子古筝。2019年,《新媒体乐器的交互设计研究——以光感古筝为例》项目入选上海市“晨光计划”项目,其相关展演也获得上海文化发展基金会“上海文化艺术资助项目”等资助。与激光交互实现演奏

王玉在2019上海科技节指导小观众弹拨光感电子古筝

交互式光感电子古筝有21对激光传感器,模拟古筝的21根琴弦。演奏者通过手指遮挡激光感应弦,实现拨弦演奏。古筝设置有弯音轮控制滑音,12位的拨码开关实现转调。在演奏技法上,交互式光感电子古筝可以实现传统古筝的拨弦与扫弦等,也可以通过弯音轮控制滑音,实现复音滑音、烟雾演奏的创新演奏法。交互式光感电子古筝通过预先调制的采样音色库和连接的音响系统进行发声,操控简单,即使没有音乐基础的初学者也能轻松上手。其演奏的力度通过拨弦的速度控制。演奏者拨动激光感应弦的速度越快,演奏力度越大。触弦深度是交互式光感电子古筝的创新维度。遮挡光线的深浅也能够影响声音表现。目前,激光模拟触弦深度方面仍需进一步开发。由于激光的可塑性,也可以通过烟雾触发激光感应弦来演奏。交互式光感电子古筝将新媒体交互与乐器体验设计相结合,为新媒体艺术家提供更智能、易操控、表现力佳的展现平台,先后在上海设计之都十周年开幕式、上海科技节“AI之音:人工智能音乐艺术专场”、环同济设计周开幕式等活动登台,演奏《聚·慧》《AI乐之城》等作品,在IEMC国际电子音乐大赛、CSMT全国声音与音乐技术会议、丹尼奖国际电子音乐比赛等获得奖项。“演奏光对所有人来说都是全新的尝试。新媒体乐器设计让演奏的过程变得创新而有趣。”接下来,王玉将在乐器外形、交互机制、触弦深度等方面改进光感电子古筝,增强其实用性、美观性,以期实现市场应用。颠覆传统乐器概念

目前,国内关于新媒体创意乐器设计方面的研究与发明专利较少,缺乏系统研究模型的建立,具体的应用案例较少,在新媒体技术、音乐科技与乐器文化结合方面亟需一个可供研究的新媒体乐器原型系统作为研究载体。国外对于光感技术运用于乐器设计的相关研究也不是很多。“曾有艺术家设计研发光感竖琴,但其演奏体验与交互控制方面还不是很完善。”王玉介绍,与光感竖琴不同,交互式光感电子古筝不仅将光作为一种媒介置于新媒体乐器的开发设计之中,并将光的演奏触控信号转变为通用的MIDI信息,这是该装置的核心创新点,其实质是以古筝为原型系统的光感类MIDI触控传感器,核心为单片机电路系统,用于处理采集到的光感信号并进行转化。在交互的反馈过程中,光感电子古筝不仅可以通过MIDI信息作为桥梁,连接各类音色库进行声音反馈,还可以将演奏的MIDI信息传送至上位端的视觉软硬件系统,将演奏旋律及不同的演奏法等做视觉效果的设计,演奏时,实时进行声音可视化的反馈。它甚至可以将激光演奏信号转换的MIDI信息输送至AI作曲系统及AI视觉图像系统,进行实时的音乐生成与视觉生成反馈,其反馈的结果是多样性的。音乐与科技的结合往往创造出神奇的结果。把光感信息转化成MIDI信息,使得新媒体乐器的展现拥有更多可能性。“我们无法预判AI音乐与视觉反馈系统会给出什么样的旋律与视觉效果,演出中,与新媒体乐器的交互过程常常给人带来惊喜。新媒体乐器的创意设计不是为了还原传统乐器,而是要拓展乐器新的表现形式,提供更为多样的展现维度。”王玉毕业于上海音乐学院音乐工程系,致力于音乐科技、媒体与交互、录音艺术方向的研究。她希望以光感电子古筝拓展传统乐器的表现、新媒体乐器交互设计的新形式及其应用领域,为新媒体乐器的创新设计提供借鉴和参考。

- THE END -

“星标” 音乐周报 微信公众号

不错过 每条推送

Q:想订阅《音乐周报》?

A:发这里 yyzb1979@163.com

A:请点击下拉菜单“广告合作”。

相关问答

用c语言在 单片机 AT89C51编写音乐程序,求程序,求求你们了-ZOL问答

把程序写到单片机内,需要写片器,也叫编程器,仿真机也可以(⊙o⊙)哇,学到了...虽然不是真正的MIDI编程,但能让你快速理解基本原理,并且对后续深入学习打下基础...

猜你喜欢