donggan 发表于 2013-3-19 12:43:23

[求助]最小系统tone扬声器错误问题[已解决]

本帖最后由 donggan 于 2013-3-19 21:57 编辑

自制了一个最小系统,之前在mango上正常的tone发声程序(《Arduino入门教程--第八课--用蜂鸣器模拟警报器》)。在最小系统上只能发出几个单调的声音,请问可能是什么原因?

最小系统环境:ATMEGA8A-PU、16M晶振+22p瓷片电容*2、VCC(PIN7)和GND(PIN8)间接了一个104瓷片电容(手上没有独石电容)、没有接PIN 20(AVCC)/21(AREF)/22 (GND)。扬声器正极串联了一个10uf电解电容。(最小系统测试控制LED、读取A0口数据是正常的)

已经测试过VCC和GND之间加不加电容、扬声器的正负极间加不加电容,声音都是不对。可能是什么地方错误呢?

==============分割线=====================
使用第三方库Tone替代tone(),可解决发声不对的问题。见4楼。

donggan 发表于 2013-3-19 21:54:14

使用第三方Tone库发声正确。

代码如下:使用noteplayer.play(i); 代替 tone(4,i); 。发出了正确的警报声音。


#include <Tone.h>

Tone noteplayer;

void setup()
{
    pinMode(4, OUTPUT);
    noteplayer.begin(4);
}

void loop()
{
    int count = sizeof(notes);
    for(int i=200;i<=800;i++)                  //用循环的方式将频率从200HZ 增加到800HZ
    {
       noteplayer.play(i);                            //在四号端口输出频率
       delay(5);                              //该频率维持5毫秒   
    }
    delay(2000);                            //最高频率下维持2秒钟
    for(int i=800;i>=200;i--)
    {
      noteplayer.play(i);
      delay(5);
    }

    noteplayer.stop();
    delay(1000);
}

Tone库


弘毅 发表于 2013-3-19 17:26:35

M8是有这种问题~~~貌似暂时无解,只能换168或者328芯片。

donggan 发表于 2013-3-19 17:34:28

谢谢弘毅{:soso_e179:}。死心了现在就去买328

弘毅 发表于 2013-3-20 08:59:32

{:soso_e103:}居然有这么神奇的第三方库。。。不错不错。。。又学习了

太行摄狼 发表于 2015-1-23 15:36:54

收藏了感谢,找了很久
页: [1]
查看完整版本: [求助]最小系统tone扬声器错误问题[已解决]