роботы робототехника микроконтроллеры


 Страниц (4): « 1 [2] 3 4 »   

> Описание: управление роботом при помощи пульта от телевизора
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



Пульт вскрыл увидел что там "нормальной микросхеме" вот фото пульта и фото микросхемы
LT1338N на нее дотащит не нашел
http://www.imghost.in/images/bp3...s7puycyypko.jpeg
http://www.imghost.in/images/0i0...ruxu0apfftd.jpeg
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



LT1388 вообще то.
упоминается тут
Можете там где нибудь и поинтересоваться, что за кодировка у этого пульта. Телевизионщики вообще уже по внешнему виду пульта скажут Улыбка

Ну или просто перепробуйте остальные пульты.
 
 Top
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



nest спасибо проглядел Смущение
я поинтересовался, даже если он не rc-5 завтра на барахолке куплю еще несколько пультов разных производителей
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



В архиве программа для ATmega8535. Переделать эту программу под ATtiny2313 выше моих сил Грустный Светодиоды припаивайте к порту А или С.
Скачать файл: rc5.zip
Скачан раз: 351
 
 Top
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



mihailспасибо большое сейчас опробую
(Добавление)
Вот зараза не работает Грустный
Наверно все же этот пульт не RC-5
Сегодня уже утром придется парочку других купить
подключил светодиоды к портам PAO-7 а TSOP к порту PD3
порт AVCC подсоединил к +5в
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



Не знаю, что и сказать. Схема, вроде, соответствует программе. Программу я почти не менял. Правда, после более близкого знакомства с ней, она мне не понравилась. Микроконтроллер точно на 8 мегагерцах работает? TSOP на пульт с большого расстояния реагирует?
(Добавление)
Есть программа для RC5 написанная самими ATMELовцами (AVR410: RC5 IR Remote Control Receiver). Но она на ассемблере рёв в три ручья
 
 Top
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



микроконтроллер выставлен по этим фьюзам
http://myrobot.ru/forum/topic.ph...13&topic=318
на пульт устройство вообще не как не реагирует Грустный
Ничего, может утром разберусь с другими пультами
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



alex91 пишет:
на пульт устройство вообще не как не реагируе
Я имел ввиду свою "универсальную" программу. Расстояние реакции на пульт должно быть большим (метров 5).
alex91, EEPROM записать не забыли?

(Отредактировано автором: 24 Сентября, 2010 - 02:23:15)

 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



Изобрел я велосипед Ухмылка alex91, проверьте. Если работает, напишите. Я из за этого велосипеда уснуть не могу Грустный

/* ************************************
RC5
************************************* */

#include <avr/io.h>
#include <util/delay.h>

int main(void) /* начало основной программы */
{

DDRA = 0xff; /* порт A сконфигурировать как выход */
PORTA = 0x00; /* установить "0" на всех выводах порта A */

DDRD &= (~(1<<3)); /* PD3 сконфигурировать как вход, TSOP */
PORTD |= (1<<3); /* установить "1" на PD3, включаем подтягивающий резистор */

volatile unsigned char byte_high;
volatile unsigned char byte_low;

while(1) /* бесконечный цикл */
{

byte_high = 0;
byte_low = 0;

while( PIND & (1<<3) ); /* проверка TSOP */

_delay_us(200); /* задержка */
if( !(PIND & (1<<3)) ) byte_high += 32;
_delay_us(1778); /* задержка */
if( !(PIND & (1<<3)) ) byte_high += 16;
_delay_us(1778); /* задержка */
if( !(PIND & (1<<3)) ) byte_high += 8;
_delay_us(1778); /* задержка */
if( !(PIND & (1<<3)) ) byte_high += 4;
_delay_us(1778); /* задержка */
if( !(PIND & (1<<3)) ) byte_high += 2;
_delay_us(1778); /* задержка */
if( !(PIND & (1<<3)) ) byte_high += 1;
_delay_us(1778); /* задержка */
if( !(PIND & (1<<3)) ) byte_low += 128;
_delay_us(1778); /* задержка */
if( !(PIND & (1<<3)) ) byte_low += 64;
_delay_us(1778); /* задержка */
if( !(PIND & (1<<3)) ) byte_low += 32;
_delay_us(1778); /* задержка */
if( !(PIND & (1<<3)) ) byte_low += 16;
_delay_us(1778); /* задержка */
if( !(PIND & (1<<3)) ) byte_low += 8;
_delay_us(1778); /* задержка */
if( !(PIND & (1<<3)) ) byte_low += 4;
_delay_us(1778); /* задержка */
if( !(PIND & (1<<3)) ) byte_low += 2;
_delay_us(1778); /* задержка */
if( !(PIND & (1<<3)) ) byte_low += 1;
_delay_ms(40); /* задержка */

PORTA = byte_low; /* вывести младший байт на порт A */

} /* закрывающая скобка бесконечного цикла */

return 0;

} /* закрывающая скобка основной программы */

(Отредактировано автором: 24 Сентября, 2010 - 06:22:07)

 
 Top
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



я вообще привык программировать микроконтроллер программой понипрог
и открываю программу и файл и программирую сразу и flach и eeprom
а от первой программы видит где-та на 7 метров зажигает светодиод
спасибо вам большое сейчас попробую последнюю программу
(Добавление)
работает высший восторг
Работает значит так
если нажимать на кнопку 2 пульта то зажигаются только два светодиода PA3 и PA6

остальные светодиоды включаются если нажать на кнопку 1 и держать тогда светодиоды
PA0-PA7 зажигаются поочередно с большой скоростью
Если нажать на кнопку 0 пульта то также зажигаются PA3 и PA6 и если еще раз нажать то PA3 будет гореть постоянно а PA6 только при нажатии а если держать кнопку 0 они медленно зажигаются поочередно PA0-PA7

(Отредактировано автором: 24 Сентября, 2010 - 12:04:06)

 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



То что есть прогресс - хорошо [очень грустная улыбка]
Работать эта программа должна так:
- если нажать и удерживать кнопку пульта, то должны постоянно гореть несколько светодиодов;
- если кнопку отпустить все светодиоды гаснут;
- разные кнопки пульта дают разную комбинацию светодиодов.

Программа написана по мотивам нижеприведенного описания протокола RC5.
http://www.sbprojects.com/knowledge/ir/rc5.htm

Программа на столько проста и примитивна, что даже не знаю где я там мог ошибиться.

Проверить бы программу пультом гарантированно работающем на RC5. Случайно не можете у друзей одолжить 2-3 пульта от техники Philips Улыбка Желательно разных лет выпуска.

В Makefile проверьте F_CPU = 8000000
Пульт от какой техники?
 
 Top
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



у меня пульт от телевизора vesta model : DT-2126
купил я сегодня пару пультов от тв samsung sony lg
они работают также как и мой
наверно надо было брать по старее
уже у друга попрошу на время его пульты от домашней техники
в принципе при нажатие и удерживании кнопки 1 они все и зажигаются по очереди с большой скоростью и гаснут а ели отпустить светодиоды не гаснут

(Отредактировано автором: 25 Сентября, 2010 - 00:00:05)

 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



Программа для пульта SONY

/* ************************************
Sony SIRC Protocol (12 bit)
************************************* */

#include <avr/io.h>
#include <util/delay.h>

int main(void) /* начало основной программы */
{

DDRA = 0xff; /* порт A сконфигурировать как выход */
PORTA = 0x00; /* установить "0" на всех выводах порта A */

DDRD &= (~(1<<3)); /* PD3 сконфигурировать как вход, TSOP */
PORTD |= (1<<3); /* установить "1" на PD3, включаем подтягивающий резистор */

volatile unsigned char byte_command;
volatile unsigned char byte_address;

while(1) /* бесконечный цикл */
{

byte_command = 0;
byte_address = 0;

while( PIND & (1<<3) ); /* проверка PD3, TSOP */

_delay_us(3700);

/* command bit 1 */
if( !(PIND & (1<<3)) )
{
byte_command |= 0b00000001;
_delay_us(600);
}

/* command bit 2 */
_delay_us(1200);
if( !(PIND & (1<<3)) )
{
byte_command |= 0b00000010;
_delay_us(600);
}

/* command bit 3 */
_delay_us(1200);
if( !(PIND & (1<<3)) )
{
byte_command |= 0b00000100;
_delay_us(600);
}

/* command bit 4 */
_delay_us(1200);
if( !(PIND & (1<<3)) )
{
byte_command |= 0b00001000;
_delay_us(600);
}

/* command bit 5 */
_delay_us(1200);
if( !(PIND & (1<<3)) )
{
byte_command |= 0b00010000;
_delay_us(600);
}

/* command bit 6 */
_delay_us(1200);
if( !(PIND & (1<<3)) )
{
byte_command |= 0b00100000;
_delay_us(600);
}

/* command bit 7 */
_delay_us(1200);
if( !(PIND & (1<<3)) )
{
byte_command |= 0b01000000;
_delay_us(600);
}

/* address bit 1 */
_delay_us(1200);
if( !(PIND & (1<<3)) )
{
byte_address |= 0b00000001;
_delay_us(600);
}

/* address bit 2 */
_delay_us(1200);
if( !(PIND & (1<<3)) )
{
byte_address |= 0b00000010;
_delay_us(600);
}

/* address bit 3 */
_delay_us(1200);
if( !(PIND & (1<<3)) )
{
byte_address |= 0b00000100;
_delay_us(600);
}

/* address bit 4 */
_delay_us(1200);
if( !(PIND & (1<<3)) )
{
byte_address |= 0b00001000;
_delay_us(600);
}

/* address bit 5 */
_delay_us(1200);
if( !(PIND & (1<<3)) )
{
byte_address |= 0b00010000;
_delay_us(600);
}

_delay_ms(18);

PORTA = byte_command; /* вывести байт комманды на порт A */

} /* закрывающая скобка бесконечного цикла */

return 0;

} /* закрывающая скобка основной программы */

Описание протокола http://www.sbprojects.com/knowledge/ir/sirc.htm
(Добавление)
alex91 пишет:
если отпустить светодиоды не гаснут
Правильно. Я в описании программы ошибся Замешательство
 
 Top
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



последняя программа что-то вообще не работает
устройство вообще не реагирует на пульт SONY зато от моего пульта vesta реагирует но работает не понятно как

Может использовать другой способ управление роботом а не rc-5?

(Отредактировано автором: 25 Сентября, 2010 - 14:22:54)

 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



alex91 пишет:
Может использовать другой способ управление роботом а не rc-5?
может.
написать свой кодер и декодер.

да хоть UART сделать на ИК-лучах. Кстати, неплохая идея, так как никаких програмных телодвижений, всё на аппаратном уровне. ... медленновато будет, но пару байтов переслать хватает.

alex91, у вас вообще что за комманды предпологаются?
типа "вперёд-назад-влево-вправо, включить фары" и тому подобное?

какую дальность вам необходимо?
 
 Top
Страниц (4): « 1 [2] 3 4 »
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru