#1 2017-06-05 11:31:39

CyberVoice
Учасник
Зареєстрований: 2017-04-22
Повідомлень: 12

810 слов и звуков для любого проекта. Профессиональная озвучка!

cv032hd_ard.jpg
Звуковой модуль с записью 810 слов и звуков, озвученных профессиональным диктором. Модуль специально разработан для голосового меню, поэтому не имеет недостатков, как в других звуковых модулях. Однопроводное управление, легко состыкуется с любым устройством, имеет режим отладки. Автоподстройка под скорость передачи управляющей команды. Возможность поочерёдного проигрывания до 15 слов (звуков) от одной команды - нормированные задержки между словами. Конкурирующие цены при заказе оптимизированных конфигураций. Набор слов может быть из таблицы, под заказ или свой. Подробнее на сайте

Неактивний

#2 2017-06-05 12:58:52

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: 810 слов и звуков для любого проекта. Профессиональная озвучка!

Для примера решил сделать говорящие часы. Не бог весть, что, но понять, как работать с этим модулем вполне можно. Для начала, из перечня семплов модуля, выбрал необходимые и для удобства создал свою таблицу звуков.

ed4f971s-960.jpg

В таблице сделал перевод значений в десятичные значения.

/*
**********	Pin - D -	**********
Arduino 00 – ATmega pin 02/0 – RXD **
Arduino 01 – ATmega pin 03/1 – TXD ** выход на кибервойс
Arduino 02 – ATmega pin 04/2 – 
Arduino 03 – ATmega pin 05/3 – 
Arduino 04 – ATmega pin 06/4 – 
Arduino 05 – ATmega pin 11/5 – 
Arduino 06 – ATmega pin 12/6 – 
Arduino 07 – ATmega pin 13/7 – 
**********	Pin - B -	**********
Arduino 08 – ATmega pin 14/0 – кнопка включения звука
Arduino 09 – ATmega pin 15/1 – кнопка регулировки громкости
Arduino 10 – ATmega pin 16/2 – CS	**
Arduino 11 – ATmega pin 17/3 – MOSI	**
Arduino 12 – ATmega pin 18/4 – MISO	**
Arduino 13 – ATmega pin 19/5 – CLK	**
Arduino RC – ATmega pin 09/6 – ( ZQ )
Arduino RC – ATmega pin 10/7 – ( ZQ )
**********	Pin - C -	**********
Arduino 14_A0 – ATmega pin 23/0 – 
Arduino 15_A1 – ATmega pin 24/1 – 
Arduino 16_A2 – ATmega pin 25/2 – 
Arduino 17_A3 – ATmega pin 26/3 – 
Arduino 18_A4 – ATmega pin 27/4 –  LCD-RTC: SDA 
Arduino 19_A5 – ATmega pin 28/5 –  LCD-RTC: SCL
****************************************************
*/

#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
RTC_DS1307 rtc;
char daysOfTheWeek[7][4] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
LiquidCrystal_I2C lcd(0x27,16,2);  

String String00 = "";
String String01 = "";
byte Sec, Min, Hrs, Day, Mnt; 
int Yer;
byte vS0, vM0, vH0, vS1, vM1, vH1, Hv, Mv; 
boolean voise = true;
boolean volume = true;
byte db, vlm;

void setup() {
//	DDRD = B11111000; 			// назначает выводы со 0 по 2 входными с 3 по 7 выходными
//	PORTD = B00000000;			// устанавливает LOW на цифровых выводах с 0 по 7 
		DDRB = B000000;			// назначает вывод с 8 по 13 входными
		PORTB = B111111;		// устанавливает HIGH на выводах с 8 по 13
//			DDRC = B000000;		// назначает выводы с 14 по 19 входными
//			PORTC = B011111;	// устанавливает HIGH на выводах с 14 по 19 (на 19 LOW)
  Serial.begin(9600);
  rtc.begin();
  lcd.init();	lcd.backlight();
  lcd.clear();  
	}
	
void loop() { 
DateTime now = rtc.now();
    Yer = now.year();
		Mnt = now.month();
			Day = now.day();
    Hrs = now.hour();
		Min = now.minute();
			Sec = now.second();
String00 = "";	
	String00 += ("    ");
	if (InRange(Hrs)) {String00 += ("0");} String00 += (Hrs); String00 += (":");	
	if (InRange(Min)) {String00 += ("0");} String00 += (Min); String00 += (":");	
	if (InRange(Sec)) {String00 += ("0");} String00 += (Sec);	
String01 = "";	
	if (InRange(Day)) {String01 += ("0");} String01 += (Day); String01 += (".");	
	if (InRange(Mnt)) {String01 += ("0");} String01 += (Mnt); String01 += (".");	
	String01 += (Yer);	String01 += ("   "); String01 += (daysOfTheWeek[now.dayOfTheWeek()]);
LCDinf ();		
// если на Arduino 08 – ATmega pin 14/0 лог 0
if (((PINB&(1<<0)) == 0) && (voise == true)) { voise = false; delay(500); Voise (); } 	
if (((PINB&(1<<0)) != 0) && (voise == false)) { voise = true; }
// если на Arduino 09 – ATmega pin 15/1 лог 0
if (((PINB&(1<<1)) == 0) && (volume == true)) { volume = false; delay(500); Volume (); } 	
if (((PINB&(1<<1)) != 0) && (volume == false)) { volume = true; }
	}	

void Volume () {
if (db > 15) { db = 0; }
if (db == 0) { vlm = 143; }
	if (db == 3) { vlm = 142; }
		if (db == 6) { vlm = 141; }
			if (db == 9) { vlm = 140; }
				if (db == 12) { vlm = 137; }
					if (db == 15) { vlm = 136; }
	delay(50);	
//	*****	синхро байт 
Serial.write(85);	//	55  
delay (5);
//	*****	команда изменения громкости 	
	Serial.write(vlm);	delay (5);	
//	*****	команда на завершение передачи 	
Serial.write(0);
delay (10);			// Stop		
  lcd.clear(); 
String00 = "";	
	String00 += (" volume  -");
	if (InRange(db)) {String00 += ("0");} String00 += (db); String00 += (" db");	
String01 = "";	LCDinf ();	delay (1500);   lcd.clear(); 
db = db + 3;
	}	
	
void Voise () {
// **********  число часов  **********
Hv = 116;

vH0 = Hrs;	vS0 = 255;	vH1 = 0;	
	if (Hrs > 20) { vH0 = 20; vS0 = 0; vH1 = (Hrs - 20); }
// **********  "ЧАСОВ"  **********	
	if (Hrs == 21) { Hv = 114; }
	if (Hrs == 23 || Hrs == 22 || (Hrs >= 2 && Hrs <= 4)) {	Hv = 115; }
// **********  число минут	**********
Mv = 119;

vM0 = Min; vS1 = 255; vM1 = 0;
	if (Min == 1) { vM0 = 37; }
	if (Min == 2) { vM0 = 39; }
	if (Min == 30) { vM0 = 21; }	
	if (Min == 40) { vM0 = 22; }	
	if (Min == 50) { vM0 = 23; }	
	if (Min > 20 && Min < 30) { vM0 = 20; vS1 = 0; vM1 = (Min - 20);
				if (vM1 == 1) { vM1 = 37; Mv = 118; }
					if (vM1 == 2) { vM1 = 39; Mv = 118; } }
	if (Min > 30 && Min < 40) { vM0 = 21; vS1 = 0; vM1 = (Min - 30);
				if (vM1 == 1) { vM1 = 37; Mv = 117; }
					if (vM1 == 2) { vM1 = 39; Mv = 118;} }	
	if (Min > 40 && Min < 50) { vM0 = 22; vS1 = 0; vM1 = (Min - 40);
				if (vM1 == 1) { vM1 = 37; Mv = 117; }
					if (vM1 == 2) { vM1 = 39; Mv = 118; } }
	if (Min > 50) { vM0 = 23; vS1 = 0; vM1 = (Min - 50);
				if (vM1 == 1) { vM1 = 37; Mv = 117; }
					if (vM1 == 2) { vM1 = 39; Mv = 118; } }
// **********  "МИНУТ"	**********
	if ((Min == 1)) { Mv = 117; }
	if ((Min >= 2 && Min <= 4) || (vM1 == 3) || (vM1 == 4)) { Mv = 118; }
// **************************************************	
// **************************************************
// время vH0 vH1 часов vM0 vM1 минут  =  7 семплов	
//	*****	синхро байт 
Serial.write(85);	//	55  
delay (5);
//	*****	количество семплов для воспроизведения 
Serial.write(7);	//	07
delay (5);			// Tbyte	
	
// "время"	
Serial.write(1);	delay (5);
Serial.write(9);	delay (5);
		// * часы *	
	Serial.write(0);	delay (5);
	Serial.write(vH0);	delay (5);	
		// * часы после 20 *	
	Serial.write(vS0);	delay (5);
	Serial.write(vH1);	delay (5);		
// "часов"	
Serial.write(0);	delay (5);
Serial.write(Hv);	delay (5);	
		// * минуты *
	Serial.write(0);	delay (5);
	Serial.write(vM0);	delay (5);	
		// * минуты после 20 *
	Serial.write(vS1);	delay (5);
	Serial.write(vM1);	delay (5);		
// "минут"	
	Serial.write(0);	delay (5);
	Serial.write(Mv);	delay (5);		
//	*****	команда на завершение передачи 
Serial.write(0);
delay (10);			// Stop	
voise = false; 
	}
	
void LCDinf () {
	lcd.setCursor(0,0);	lcd.print(String00);
	lcd.setCursor(0,1);	lcd.print(String01);
	String00 = ""; String01 = "";	}
	
bool InRange(int value) { return (value >= 0) && (value < 10); }	

Управляются часы двумя кнопками:
— запускает голосовое воспроизведение текущего времени (часы и минуты)
— устанавливает уровень громкости воспроизводимого сигнала (шесть значений)

Можно посмотреть, как это все работает:


Это просто пример !

Кому нужны такие часы могут сами добавить в программу функции коррекции времени и будильник …

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму