Валерос писал(а):Так выложи окончательную схему и код, пожалуйста.
хе
ну раз просите...
ток там собсно кода то и нет никакого
и схемы тоже нету практически
вот код для отправки пачки из 10 импульсов сразу на все 3 ИК диода(на схеме нарисован одинн но можно хоть 10)
- Код: Выделить всё
void send(void)
{
for(i=0;i<14;i++) // количество импульсов минимум 10 но для надёжности я думаю надо больше, но не больше 70 хотя у меня и с 14 всё отлично работает
{
PORTC.2 = 1; // начало импульса
delay_us(14); // задержка чтоб получить 36 кГц
PORTC.2 = 0; // конец импульса
delay_us(14); // пауза между импульсами чтоб получилось 36 кГц
}
}
код для приёма должен быть примерно такой
в таком варианте принимаем сигнал от 3х тсопов
- Код: Выделить всё
void recive(void)
{
x ^= PINC.5; //если x,y или z единиса значит чёто приняли
y ^= PINC.4; //5,4,3 это ноги МК к которым подключены выходы тсопов
z ^= PINC.3;
}
а в мэйне чтото типа этого
- Код: Выделить всё
while(1)
{
void send();
void recive();
delay_us(500); // небольшая задержка чтоб тсоп успел расслабится и переключится в высокое состояние
// после 1 пачки из 10 импульсов надо ждать время равное длинне минимум 14 импульсов тоесть 392 микросекунды минимум
// в даташите правда нарисовано 600 микросекунд... наверно прозапас =)
//----опять можно посылать импульсы и принимать сигнал
void send();
void recive();
}
если после отправки тсоп сработал то на выходе тсопа будет низкий уровень который мы и считаем в x,y,z
для надёжности запускаем второй раз сканирование
и если после второго раза тоже чтото приняли значит стопудово препятствие
иначе просто помеха случайная