Суббота, 20.04.2024, 12:15
| RSS
[SEARCH_TITLE]
[SEARCH_FORM]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Архив - только для чтения
Форум » Мастерская » Наши достижения » Робот 007 (Что вы на это скажите)
Робот 007
RoxДата: Вторник, 17.11.2009, 02:15 | Сообщение # 16








Зарегистрирован 17.11.2009
Группа: Новички
Сообщений: 1
Город: Самара
Статус: Offline
Очень прошу, опиши передачу видео, с сеговским девайсом вроде понятно, камера к нему подкл. напрямую? предполагаю что даже разъемы подходят, или я не прав? и еще если не сложно набросай схему передатчика) этот вопрос меня интересует давно, если еще и дальность будет на высоте, то есть много идей, и не только с высокой дальностью, я спелестолог любитель, и дуплоскоп нужен как 3-я рука при пайке на весу)
 
StefanДата: Пятница, 20.11.2009, 13:35 | Сообщение # 17








Язык программированя: Баском. Бейсик
Зарегистрирован 27.03.2009
Группа: Новички
Сообщений: 21
Город: Антрацит
Статус: Offline
Так, с сервой я розабрался. У меня другой вопрос возник, возможно ли сделать так, что бы когда на вход МК поступал сигнал ну допустим 1000 Гц или 10000 Гц и в зависимости какая частота, на определённом выходе МК выходила еденица.
Может кто знает, или встречал чтото похожее, прошу выложить, буду благодарен.
 
pashteetДата: Пятница, 20.11.2009, 15:57 | Сообщение # 18








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
Выдержка из обучалки по баскому:
Code
Подсчет внешних импульсов

Timer0 и Timer1 могут быть настроены на счет внешних импульсов на выводах T0 и T1:  
Config Timer0 = Counter, Prescale = 1|8|64|256|1024, Edge = Rising|Falling
Config Timer1 = Counter, Prescale = 1|8|64|256|1024, Edge = Rising|Falling
Вы можете выбрать счет по фронту или по спаду. Также вы можете задать предделитель для счета. Особенно интересен Timer1, так как он может считать до 65535 перед переполнением.
Имена Timerx, Counterx и Capturex в BASCOM соответствуют именам регистров, поэтому нельзя использовать одноименные переменные в программе, что не есть хорошо.
Когда Timer0 и Timer1 используются для подсчета внешних импульсов, контроллер будет квантовать входы со своей тактовой частотой. Это значит, что для точного подсчета частота следования импульсов не должна превышать половины тактовой частоты. Для безопасности старайтесь подавать импульсы на вход с частотой ниже 40% от тактовой. Так, для кварца 4МГц частота следования импульсов не должна превышать 1,6МГц. Проверьте это на ТТЛ генераторе, подключенном к T1 (Portd.5, 9 нога для AT90S2313):
counter1.bas  
$regfile = "2313def.dat"
$crystal = 4000000

Config Pind.6 = Output
Config Timer1 = Counter , Edge = Falling , Prescale = 1

Stop Counter1

Set Portd.6
Waitms 1000
Reset Portd.6
Waitms 1000

Cls

Do
   Counter1 = 0
   Start Counter1
   Waitms 25
   Stop Counter1
   Cls
   Lcd "Counter1: " ; Counter1
   Waitms 100
Loop

End
В Do-Loop цикле Counter1 очищается и запускается. После задержки 25 мс Counter1 останавливается, и его значение выводится на ЖКИ. Заметьте: отсчет времени командой Waitms не очень точный. Есть более точные способы создания задержек.

Постепенно повышайте частоту импульсов с генератора и следите за тем, что происходит после 1.6 МГц.

Timer1 считает до 65535. Если вам этого мало, вы можете подсчитывать общее число срабатываний таймера в подпрограмме:
counter2.bas  
$regfile = "2313def.dat"
$crystal = 4000000

Config Pind.6 = Output
Config Timer1 = Counter , Edge = Falling , Prescale = 1

Dim Wtime As Byte
Dim Timercounter As Word
Dim Overflcounter As Word
Dim Totalcounter As Long

On Counter1 Uphigh

Wtime = 100
Timercounter = 0
Totalcounter = 0

Enable Interrupts
Enable Counter1

Do
   Set Portd.6
   Waitms Wtime
   Reset Portd.6
   Waitms Wtime
   Cls
   Timercounter = Counter1
   Lcd Timercounter ; " " ; Overflcounter
   Lowerline
   Totalcounter = Overflcounter
   Shift Totalcounter , Left , 16
   Totalcounter = Totalcounter + Timercounter
   Lcd "total: " ; Totalcounter
Loop

Uphigh:
   Incr Overflcounter
Return

End
Здесь заданы три переменные:
Overflowcounter (16-битное слово) хранит количество переполнений Timer1.
Timercounter (16-битное слово) хранит текущее значение Timer1.
. Totalcounter (32-битная Long) хранит значение Overflowcounter, сдвинутое на 16 разрядов влево + значение Timercounter.

Timer1 в режиме захвата

Timer1 может работать в режиме "Capture" (захвата). Это значит, что Timer1 считает тактовые импульсы через предделитель, и, когда на вход ICP (portd.6, 11 нога) приходит импульс, содержимое Timer1 копируется в регистр Input Capture. Таким способом можно точно измерить время между двумя импульсами:  
Config Timer1 - Timer, Prescale = 1|8|64|256|1024, Capture Edge = Rising|Falling
interrupt-timer1-capture.bas  
$regfile = "2313def.dat"
$crystal = 4000000

'Config Pind.6 = Output
Config Timer1 = Timer , Prescale = 64 , Capture Edge = Rising

Dim Wtime As Byte
Dim Timercounter As Word

On Capture1 Captmr

Wtime = 100
Timercounter = 0

Enable Interrupts
Enable Capture1

Do
   'Set Portd.6
   Waitms Wtime
   'Reset Portd.6
   Waitms Wtime
   Cls
   Lcd "pwidth: " ; " " ; Capture1
Loop

Captmr:
   Timercounter = Capture1
   Timer1 = 0
Return

End
В подпрограмме прерывания значение Timer1 (Capture1 - это второе имя этого регистра) копируется в Timercounter. Затем Timer1 очищается. При последующем импульсе на ICP входе цикл повторяется. Следовательно, Timercounter считает время между импульсами на ICP.

Изучайте smile3
В вашем случае интересно производить захват внешних импульсов и измерять время между ними, таким образом можно будет судить о частоте входящих импульсов
 
StefanДата: Вторник, 24.11.2009, 16:41 | Сообщение # 19








Язык программированя: Баском. Бейсик
Зарегистрирован 27.03.2009
Группа: Новички
Сообщений: 21
Город: Антрацит
Статус: Offline
Спасибо, попробую разобраться. О своих достижениях раскажу позже.

Добавлено (24.11.2009, 16:41)
---------------------------------------------
Я почитал всё это дело, и толкомничего не понял. Памогите разобраться.

Как именно написать в прошиве, что бы мк выдал еденицу, если на входе у него частота 1кГц.

ПАМОГИТЕ!!!!!!!!!!!!!!!!!!!!

 
pashteetДата: Понедельник, 07.12.2009, 20:40 | Сообщение # 20








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
ух, кароче наткнулся вот на такую штуку:
http://radioded.ru/index.p....emid=49
Это частотомер, с исходниками на Баском авр, я думаю это то что ты ищешь yes3
 
StefanДата: Вторник, 22.12.2009, 18:22 | Сообщение # 21








Язык программированя: Баском. Бейсик
Зарегистрирован 27.03.2009
Группа: Новички
Сообщений: 21
Город: Антрацит
Статус: Offline
Да я с этими таймерами, щетчиками никак не могу разобратся
 
alsadoДата: Вторник, 02.02.2010, 16:21 | Сообщение # 22








Зарегистрирован 09.01.2010
Группа: Новички
Сообщений: 6
Город: Калинковичи
Статус: Offline
Хороший проект.
 
StefanДата: Воскресенье, 21.02.2010, 21:50 | Сообщение # 23








Язык программированя: Баском. Бейсик
Зарегистрирован 27.03.2009
Группа: Новички
Сообщений: 21
Город: Антрацит
Статус: Offline
я сдесь придумал еще одну заморочку- управление робота голосом. кто небудь сталкивался с таким вопросом. мысль такова - сказал слово едь- он едет, сказал стоп - он остановился.
 
DimsanДата: Понедельник, 22.02.2010, 14:56 | Сообщение # 24








Язык программированя: Си, Делфи
Зарегистрирован 18.06.2009
Группа: Опытные
Сообщений: 252
Город: Херсон
Статус: Offline
Это возможно, но довольно сложно. Тут не то что начинающий, не любой профессионал сможет реализовать распознавание речи.
Как вариант - количество хлопков (или любых других резких прерывистых звуков). 1 хлопок - едем вперёд, 2 - назад и т.д.
 
S-T-A-L-K-E-RДата: Понедельник, 22.02.2010, 19:47 | Сообщение # 25








Язык программированя: Мурманская область
Зарегистрирован 11.06.2009
Группа: Модераторы
Сообщений: 367
Город: Никель
Статус: Offline
Тоже об этом подумал, ведь по сути звук робот слышит как сигнал, а не сам звук. Например, нужно попробовать сделать так: говориш устно: 1 -Это ехать вперед, 1,2 -это стоп. 1,2,3 -это назад. Написать программу, что если на мк с переферии, поступает один(1) сигнал, то нужно ехать вперед, два сигнала(1,2)-назад. Поставить задержку или как там это называют, чтоб видеть начало и канец каманды. Ну а дальше сам додумаешься smile3
 
Форум » Мастерская » Наши достижения » Робот 007 (Что вы на это скажите)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: