签到天数: 866 天 [LV.10]以坛为家III
|
本帖最后由 AllBlue 于 2017-1-6 19:29 编辑
arduino 语音报时时钟制作!
arduino UNO+DS1302+lcd1602+OTP语音芯片+8欧0.5W喇叭 制作整点报时时钟!!
准备物品:
控制板:arduino UNO
液晶显示:IIC LCD1602
语音芯片:OTP定制语音芯片 - NY3P系列
喇叭:8Ω0.5W小喇叭
时钟模块:DS1302时钟芯片
IIC LCD1602之前的帖子介绍过用法:点击回看
这里我们介绍下DS1302时钟芯片和 NY3P定制语言芯片的基本用法!
1、DS1302时钟芯片
简介:DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。百度百科详细介绍
典型应用及引脚图:
这里要说一下的是:
* DS1302具有双电源,芯片引脚Vcc2为主电源,Vcc1为后备电源;在主电源断电的情况下,有后背电源的支持,芯片继续工作!如何选择电源呢?DS1302会由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
* 晶振使用的是32.768kHz,它的好坏直接关系到时间的准确度,都说1302准确度不高,找个时间,买个1307跑一次长的,对比看看时间都有多少误差!
手册下载:
库文件下载:
库文件中有两个例程,很好的展示了库的使用,使用前可以先研究下!
2、NY3P 定制语言芯片
该芯片为OTP(One Time Programmable) 语音芯片 OTP(One Time Programable)是指一次性可编程语音芯片,语音只能烧写一次,适合应用在不需要修改语音、语音长度短的场合,从放音的长度上可以分为10秒、21秒、42秒、85秒、170秒、340秒。
语音芯片引脚图:
语音芯片与UNO电路连接:
语音芯片的具体语音内容看下图:
控制方式也很简单,I/O口直接发送脉冲,即可调用相应地址的语音!当然只适合短语音且不需要经常更改的场合!
下面是arduino驱动例程中的主要函数:
[C] 纯文本查看 复制代码 void Broadcast(uint8_t band) {
digitalWrite(rst, HIGH);
delayMicroseconds(200);
digitalWrite(rst, LOW);
delayMicroseconds(200);
int playBand = band;
while (band > 0) {
digitalWrite(data, HIGH);
delayMicroseconds(100);
digitalWrite(data, LOW);
delayMicroseconds(100);
band--;
}
delay(interval * VoiceNum[playBand - 1]);
}
其中 interval 和VoiceNum[]为常量,之前定义好的:
[C] 纯文本查看 复制代码 //经过测试: 400ms*xx为最佳间隔时间
//例如: 0 + delay(400*1); 现在时刻北京时间 + delay(400*4.5); 具体值见数组:VoiceNum
#define interval 400
const float VoiceNum[32] = {
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1.5, 4.5, 1, 1.5, 1, 1.5,
2, 2, 2, 3, 2, 3, 4.5, 4.5
};
卖家给的用户手册:
arduino驱动语音芯片例程:
---------------------------------------------------------------------分隔线--------------------------------------------------------------
下面进入正题!元件模块单独都会使用了,下面就要将他们整合起来!让时间“飞起来”!!!
arduino程序下载:
根据程序引脚定义连接电路,引脚不固定,你可以根据实际情况定义引脚连接电路:
[C++] 纯文本查看 复制代码 const int kCePin = 5; // D5 - DS1302 Chip Enable
const int kIoPin = 6; // D6 - DS1302 Input/Output
const int kSclkPin = 7; // D7 - DS1302 Serial Clock
const int busy = A0; // A0 - 语音芯片 busy引脚
const int data = A1; // A1 - 语音芯片 data引脚
const int rst = A2; // A2 - 语音芯片 reset引脚
程序实现以下功能:
1、串口调整时间,串口直接发送数据,校准时间,数据格式 - "year,month,date, hour,minutes,seconds,day"
例如:"2015,8,13,10,50,50,5" 最后的5表示星期四 ,day对应关系:
Sunday = 1, Monday = 2, Tuesday = 3, Wednesday = 4, Thursday = 5, Friday = 6, Saturday = 7
2、语音整点报时
程序只简答实现时钟功能,你还可以增加,白天报时,晚间不报时!定时闹钟等等!!
赶紧动手制作自己的小钟吧!
马上补拍个简单的视频,整点给大家报个时~~
视频见一楼~~~
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|