pixhawk蜂鸣器声音文件修改

pixhawk是一项十分优秀的开源飞控项目,其中蜂鸣器在这个项目中起着提示飞控状态的作用,由于pixhawk蜂鸣器声音过于单调,于是博主便想改变一下pixhawk的一些提示声音。

pixhawk蜂鸣器声音文件的位置 Firmware/src/drivers/stm32/tone_alarm/tone_alarm.cpp文件中

{
	// enable debug() calls
	//_debug_enabled = true;
	_default_tunes[TONE_STARTUP_TUNE] = "MFT240L8 O4aO5dc O4aO5dc O4aO5dc L16dcdcdcdc";		// startup tune
	_default_tunes[TONE_ERROR_TUNE] = "MBT200a8a8a8PaaaP";						// ERROR tone
	_default_tunes[TONE_NOTIFY_POSITIVE_TUNE] = "MFT200e8a8a";					// Notify Positive tone
	_default_tunes[TONE_NOTIFY_NEUTRAL_TUNE] = "MFT200e8e";						// Notify Neutral tone
	_default_tunes[TONE_NOTIFY_NEGATIVE_TUNE] = "MFT200e8c8e8c8e8c8";				// Notify Negative tone
	_default_tunes[TONE_ARMING_WARNING_TUNE] = "MNT75L1O2G";					//arming warning
	_default_tunes[TONE_BATTERY_WARNING_SLOW_TUNE] = "MBNT100a8";					//battery warning slow
	_default_tunes[TONE_BATTERY_WARNING_FAST_TUNE] = "MBNT255a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8";	//battery warning fast
	_default_tunes[TONE_GPS_WARNING_TUNE] = "MFT255L4AAAL1F#";					//gps warning slow
	_default_tunes[TONE_ARMING_FAILURE_TUNE] = "MFT255L4<<<BAP";
	_default_tunes[TONE_PARACHUTE_RELEASE_TUNE] = "MFT255L16agagagag";			// parachute release
	_default_tunes[TONE_EKF_WARNING_TUNE] = "MFT255L8ddd#d#eeff";				// ekf warning
	_default_tunes[TONE_BARO_WARNING_TUNE] = "MFT255L4gf#fed#d";				// baro warning
	_default_tunes[TONE_SINGLE_BEEP_TUNE] = "MFT100a8";                             // single beep
	_default_tunes[TONE_HOME_SET] = "MFT100L4>G#6A#6B#4";

	_tune_names[TONE_STARTUP_TUNE] = "startup";	    // startup tune
	_tune_names[TONE_ERROR_TUNE] = "error";		    // ERROR tone
	_tune_names[TONE_NOTIFY_POSITIVE_TUNE] = "positive";	// Notify Positive tone
	_tune_names[TONE_NOTIFY_NEUTRAL_TUNE] = "neutral";		// Notify Neutral tone
	_tune_names[TONE_NOTIFY_NEGATIVE_TUNE] = "negative";		// Notify Negative tone
	_tune_names[TONE_ARMING_WARNING_TUNE] = "arming";		// arming warning
	_tune_names[TONE_BATTERY_WARNING_SLOW_TUNE] = "slow_bat";	// battery warning slow
	_tune_names[TONE_BATTERY_WARNING_FAST_TUNE] = "fast_bat";	// battery warning fast
	_tune_names[TONE_GPS_WARNING_TUNE] = "gps_warning";	            // gps warning
	_tune_names[TONE_ARMING_FAILURE_TUNE] = "arming_failure";            //fail to arm
	_tune_names[TONE_PARACHUTE_RELEASE_TUNE] = "parachute_release";	// parachute release
	_tune_names[TONE_EKF_WARNING_TUNE] = "ekf_warning";				// ekf warning
	_tune_names[TONE_BARO_WARNING_TUNE] = "baro_warning";			// baro warning
	_tune_names[TONE_SINGLE_BEEP_TUNE] = "beep";                    // single beep
	_tune_names[TONE_HOME_SET] = "home_set";
}

其中_default_tunes[]数组中包含了pixhawk所有的蜂鸣器声音,而数组的内容即声音文件由字符串决定。_tune_names的内容为不同声音名称。我们主要修改的是_default_tunes[]的文件内容

乐理知识简介:音符:即音调的高度分为 哆瑞咪发唆啦西 这七个音调在pixahwk代码中分别与 abcdefg 七个字母一依对应注意不区分大小写。哆瑞咪发唆啦西 只是代表音符的高低但并不能代表音符长短。音符的长短用 X分音符表示(X=1,2,4,8,16,32)在pixhawk代码中x一般写在音调后 (如 a4便是以4分音符时长来演奏 ’哆‘ 的音调)若一段音乐设置的音符长度相同则可省略。在源码中默认以4分音符的时长为一拍,当然也可以自己设置以其他音符为一拍设置方法为 Ln(其中n为1,2,4,8,16,32) 如源码中_default_tunes[TONE_STARTUP_TUNE] = "MFT240L8 O4aO5dc O4aO5dc O4aO5dc 便是以8分音符为一拍。当设置某一个音符为一标准拍时,比其大1倍的音符为 1/2 拍 比其小的音符 为 2拍。依次减小增大。如设置4分音符为一拍后。

一拍的具体时间在代码中用Tn进行设置  (30<n<255)Tn的含义为1分钟多少拍,根据音乐节奏可以进行设置。MF将曲调播放一次,MB为循环播放曲调。根据这些命令,便可利用蜂鸣器进行音乐编写。

当然,这里pixhawk仅仅是利用蜂鸣器进行模拟,音乐质量并不高。本文为博主首创,而且博主对pixhawk的研究也只是刚刚入门。还有很多地方需要学习,如果有什么不对的地方请及时联系我,我将进行更正,谢谢。

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值