roboforum.ru

Технический форум по робототехнике.


Рюшечки для робота

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Рюшечки для робота

Сообщение SSG » 21 июл 2007, 17:01

Давайте поделимся всякими рюшечками - мелкими приятными, пусть почти бесполезными функциями конструкций.
НАПРИМЕР
С целью увеличения интересности подпольно спаянного и в тайне запрограммированного робота использую проигрывание мелодий AVR-кой на пьезопищалку от китайских игрушек или будильников.
Пищалка подключается плюсиком через керамический конденсатор 0,47 мкФ к "+" питания (VCC) а минусовой лапкой - к ноге МК.
Этот традиционный способ, упомянтый еще в книге Предко, наверное обусловлен тем, что старые модели контроллеров могли выдерживать втекающие токи бОльшие, чем вытекающие.
В современных мегах, вроде бы одинаковые (не берусь утверждать на 100%), поэтому можно плюсом пищалки к ноге МК, а минусом через конденсатор - на землю.
Если использовать динамик, нужно будет юзать транзистор.
Частоты нот первой октавы в герцах:
до - 130,8
до# - 138,6
ре - 146,8
ре# - 155,6
ми - 164,8
фа - 174,6
фа# - 185,0
соль - 196,0
соль# - 207,7
ля - 220,0
ля# - 233,1
си - 246,9
Частоты одинаковых нот соседних октав отличаются в два раза. На слух на пищалке более приятно звучат ноты второй и третьей октав.
Генерацию можно осуществить в цикле for (cvarv):
Код: Выделить всёРазвернуть
...
 for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1911);}; //до
 for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1702);}; //ре
 for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1517);}; //ми
 for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1432);}; //фа
 for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1276);}; //соль  
 for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1136);}; //ля
 for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1012);}; //си
...

При этом частоты нужно пересчитать в периоды задержек между инвертированием сигнала на лапке контроллера.
Например для ноты до второй октавы частота равна 130,8*2=261,6 Гц. Период колебаний равен 1/261,6=3,8227 миллисекунд.
Сигнал на ножке МК нужно изменять через промежуток времени в 2 раза меньший, т.е. 3,8227/2=1,911 миллисекунд или
1911 микросекунд.
Выражение в условии выполнения цикла i<100 определяет длительность проигрывания ноты, т.е. число полупериодов колебаний.
Для звучания ноты до 0,5 секунды нужно примерно 0,5/0,001911=262 раза изменить сигнал на лапе, что и следует указать в операторе цикла.
Разработчики cvarv рекомендуют отключать прерывания перед использованием функций задержек delay_us и delay_ms (они используют сторожевой таймер).
Последняя, по-моему, реализована кривовато, т.к. задержи больше, чем задаются, а первая - потому что длительность нельзя передавать как параметр в процедуру (должна быть постоянной), а очень хочется.
Для подачи звуковых сигналов можно использовать и ШИМ, чтобы разгрузить контроллер.
PS. Звук очень удобно юзать для отладки и диагностики.
Аватара пользователя
SSG
 
Сообщения: 1058
Зарегистрирован: 15 янв 2007, 19:23
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК

Сообщение Master » 21 июл 2007, 23:17

На radiokot.ru есть разные мелодии для таких вот писчалок. Тема кажись там называется звонок патриот.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Сообщение SSG » 22 июл 2007, 09:23

Очень удобно переделывать мелодии для старых телефонов, поддерживающих нотную запись мелодий.
Кучка там:
http://sotovaya.com/notes-nokia.html
Аватара пользователя
SSG
 
Сообщения: 1058
Зарегистрирован: 15 янв 2007, 19:23
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК

Сообщение Stillsly » 22 июл 2007, 11:38

господа , а может быть возьмем сразу на уровень выше..скажем из это сделать голосовой модуль для робота..http://pol-sem.narod.ru/polymuson/polymuson.htm  :lol:
Аватара пользователя
Stillsly
 
Сообщения: 50
Зарегистрирован: 04 май 2007, 17:56
Откуда: Москва

Сообщение Myp » 22 июл 2007, 11:42

ковокс никогда не умрёт =)

а вобще это уже не рюшечка к девайсу а отдельный самостоятельный девайс
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение SSG » 22 июл 2007, 19:11

Неплохая ссылочка! А чего, очень даже неплохо, если робот будет ойкать при столкновении с препятствием или ням-ням просить при разрядке аккумулятора.  :)
Аватара пользователя
SSG
 
Сообщения: 1058
Зарегистрирован: 15 янв 2007, 19:23
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК

Сообщение -= Александр =- » 23 июл 2007, 03:29

Вот вам еще ссылочка на затравку: прямой цифровой синтез (ака DDS) на АВР и ковоксе!

http://www.myplace.nu/avr/minidds/index.htm

А голос - это надо чтоб кто-то сел и надиктовал все русскоязычные слоги хотя-бы в двух-трех интонациях (говорится слово и из него вырезается слог) - тогда будет более-менее связная речь. Пишем все это дело на SD подходящего объема - и дело в шляпе!  :wink:
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение Stillsly » 23 июл 2007, 16:06

SSG писал(а):Неплохая ссылочка! А чего, очень даже неплохо, если робот будет ойкать при столкновении с препятствием или ням-ням просить при разрядке аккумулятора.  :)

угу , я уже взял на вооружение схему, а также разные сэмплы-фразы Бэндера Би Родригеза думаю будет весело  :lol:
Аватара пользователя
Stillsly
 
Сообщения: 50
Зарегистрирован: 04 май 2007, 17:56
Откуда: Москва

Re: Рюшечки для робота

Сообщение Radist » 13 фев 2010, 09:44

Вот эта вещица поинтереснее будет, там и исходники есть. Минимум деталей, максимум возможностей.
http://elm-chan.org/works/sd8p/report.html
Аватара пользователя
Radist
 
Сообщения: 2253
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Рюшечки для робота

Сообщение yak-40 » 13 фев 2010, 11:56

SSG писал(а):Давайте поделимся всякими рюшечками

Вот моя рюшечка :)
Мега8+транзистор+динамик от нокии.


Добавлено спустя 8 минут 35 секунд:
Вот ещё одна :)
http://roboforum.ru/viewtopic.php?f=88&t=6729&start=240
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: Рюшечки для робота

Сообщение CiSi » 15 фев 2010, 00:28

"Мурка" - для робота самое то! :)
Еще и упал в конце - вобще круто! :Yahoo!:
Аватара пользователя
CiSi
 
Сообщения: 1027
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: Рюшечки для робота

Сообщение CiSi » 23 фев 2010, 23:44

Код: Выделить всёРазвернуть
void Beep()
{
long i;
for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1911);}; //до
  for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1702);}; //ре
  for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1517);}; //ми
  for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1432);}; //фа
  for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1276);}; //соль 
  for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1136);}; //ля
  for (i=1;i<100;i++) {PORTD.7=~PIND.7; delay_us(1012);}; //си   

while(1);
}

Генерацию осуществляю такой процедурой, но что то неиграет.
Правельно ли я ее произвожу.
Аватара пользователя
CiSi
 
Сообщения: 1027
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: Рюшечки для робота

Сообщение yak-40 » 24 фев 2010, 00:11

Вот код мурки :)
Вызываешь функцию music(); и всё заработает...
Код: Выделить всёРазвернуть
 flash char note[47][2]=
    {
   157,50,
   157,100,
   159,25,
   157,25,
   143,50,
   157,100,
   0,25,
   170,50,   
   191,100,
   202,25,
   191,25,
   202,50,
   227,100,
   0,50,
   114,50,
   114,100,   
   120,25,
   114,25,
   101,50,
   114,100,
   120,25,
   114,25,
   101,100,

   96,50,
   100,50,
   114,50,
   0,25, 
   120,25,
   100,50,
   114,50,
   0,100, 
   114,50,
   127,50,
   143,50,
   152,50,
   127,50,
   143,50,
   0,100,
   152,50,   
   152,50,
   127,50,
   143,50,
   152,50,
   170,100,
   202,25,
   191,25,
   227,100 
   };
   
///////////////////////////////////////////////////////////
music()
{   
      for(i=0; i<23; i++)
        {
        OCR2=note[i][0];
        delay_ms(note[i][1]);     
        }
      OCR2=0;   
}
///////////////////////////////////////////////////////////
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: Рюшечки для робота

Сообщение CiSi » 24 фев 2010, 00:19

Динамик надоно на ножку ШИМ-а заводить, я правильно понял?
Аватара пользователя
CiSi
 
Сообщения: 1027
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: Рюшечки для робота

Сообщение yak-40 » 24 фев 2010, 00:37

На выход второго таймера (ОС2) в Меге8 это PB3.
Настройка таймера 2:
Код: Выделить всёРазвернуть
ASSR=0x00;
TCCR2=0b00011010;
TCNT2=0x00;
OCR2=0x00;
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

След.

Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 29