初始化提交
This commit is contained in:
136
arduino-cli/libraries/RL_Voice68/RL_Voice68.cpp
Normal file
136
arduino-cli/libraries/RL_Voice68/RL_Voice68.cpp
Normal file
@@ -0,0 +1,136 @@
|
||||
#include"RL_Voice68.h"
|
||||
|
||||
VOICE_68::VOICE_68(uint8_t pin){
|
||||
|
||||
_pin=pin;
|
||||
|
||||
}
|
||||
|
||||
void VOICE_68::begin(){
|
||||
|
||||
pinMode(_pin, OUTPUT);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void VOICE_68::send_data(uint8_t addr)
|
||||
{ int i; digitalWrite(_pin , LOW);
|
||||
delay(3); //>2ms
|
||||
for (i = 0; i < 8; i++)
|
||||
{ digitalWrite(_pin, HIGH);
|
||||
if (addr & 1) {
|
||||
delayMicroseconds(2400); //>2400us
|
||||
digitalWrite(_pin, LOW);
|
||||
delayMicroseconds(800);
|
||||
} //>800us
|
||||
else {
|
||||
delayMicroseconds(800); //>800us
|
||||
digitalWrite(_pin , LOW);
|
||||
delayMicroseconds(2400);
|
||||
} //>2400us
|
||||
addr >>= 1;
|
||||
} //地址值右移一位
|
||||
digitalWrite(_pin, HIGH);
|
||||
}
|
||||
|
||||
void VOICE_68::set_volume(uint8_t addr){//0Xe0-e7
|
||||
delay(100);
|
||||
send_data(0Xe0+addr);
|
||||
}
|
||||
|
||||
|
||||
void VOICE_68::set_cycle(){//0XF2
|
||||
delay(100);
|
||||
send_data(0XF2);
|
||||
|
||||
}
|
||||
|
||||
void VOICE_68::set_stop(){//0XFE
|
||||
delay(100);
|
||||
send_data(0XFE);
|
||||
|
||||
}
|
||||
|
||||
void VOICE_68::broadcast_num(uint8_t x) {
|
||||
if (x == 0) {
|
||||
send_data(0x2C);
|
||||
delay(200);
|
||||
}
|
||||
else {
|
||||
send_data(0x22+x);
|
||||
delay(200);
|
||||
}
|
||||
}
|
||||
|
||||
void VOICE_68::broadcast_int(uint16_t x){
|
||||
uint8_t ge,shi,bai,qian;
|
||||
|
||||
qian = x / 1000;
|
||||
bai = ((x / 100)) % (10);
|
||||
shi = ((x) % (100)) / 10;
|
||||
ge = (x) % (10);
|
||||
if (qian) {
|
||||
broadcast_num(qian);
|
||||
send_data(0x20);
|
||||
delay(200);
|
||||
}
|
||||
if (bai) {
|
||||
broadcast_num(bai);
|
||||
send_data(0x21);
|
||||
delay(200);
|
||||
}
|
||||
if (shi) {
|
||||
broadcast_num(shi);
|
||||
send_data(0x22);
|
||||
delay(200);
|
||||
}
|
||||
broadcast_num(ge);
|
||||
delay(1000);
|
||||
|
||||
}
|
||||
|
||||
void VOICE_68::broadcast_float(float y){
|
||||
uint8_t ge,shi,bai,qian,xiaoshu1,xiaoshu2;
|
||||
int16_t zhengshu,xiaoshu;
|
||||
|
||||
zhengshu=(int)y;
|
||||
xiaoshu=(int)((y-zhengshu)*100);//放大100倍
|
||||
// Serial.println(xiaoshu);
|
||||
|
||||
qian = zhengshu / 1000;
|
||||
bai = ((zhengshu / 100)) % (10);
|
||||
shi = ((zhengshu) % (100)) / 10;
|
||||
ge = (zhengshu) % (10);
|
||||
|
||||
xiaoshu1=(xiaoshu) /10;
|
||||
xiaoshu2=(xiaoshu) % 10;
|
||||
|
||||
if (qian) {
|
||||
broadcast_num(qian);
|
||||
send_data(0x20);
|
||||
delay(200);
|
||||
}
|
||||
if (bai) {
|
||||
broadcast_num(bai);
|
||||
send_data(0x21);
|
||||
delay(200);
|
||||
}
|
||||
if (shi) {
|
||||
broadcast_num(shi);
|
||||
send_data(0x22);
|
||||
delay(200);
|
||||
}
|
||||
broadcast_num(ge);
|
||||
delay(200);
|
||||
|
||||
if(xiaoshu1|xiaoshu2){
|
||||
send_data(0x1d);
|
||||
delay(200);
|
||||
broadcast_num(xiaoshu1);
|
||||
delay(200);
|
||||
broadcast_num(xiaoshu2);
|
||||
delay(200);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
28
arduino-cli/libraries/RL_Voice68/RL_Voice68.h
Normal file
28
arduino-cli/libraries/RL_Voice68/RL_Voice68.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#ifndef _RL_VOICE_68_H_
|
||||
#define _RL_VOICE_68_H_
|
||||
|
||||
|
||||
#include "Arduino.h"
|
||||
|
||||
class VOICE_68 {
|
||||
public:
|
||||
|
||||
VOICE_68(uint8_t pin);
|
||||
void begin();
|
||||
void send_data(uint8_t addr);
|
||||
void set_volume(uint8_t addr);
|
||||
void set_cycle();
|
||||
void set_stop();
|
||||
void broadcast_num(uint8_t x);
|
||||
void broadcast_int(uint16_t x);
|
||||
void broadcast_float(float y);
|
||||
private:
|
||||
|
||||
uint8_t _pin;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user