Робот 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. Изучайте В вашем случае интересно производить захват внешних импульсов и измерять время между ними, таким образом можно будет судить о частоте входящих импульсов
|
|
| |
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 Это частотомер, с исходниками на Баском авр, я думаю это то что ты ищешь
|
|
| |
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)-назад. Поставить задержку или как там это называют, чтоб видеть начало и канец каманды. Ну а дальше сам додумаешься
|
|
| |
|