roboforum.ruТехнический форум по робототехнике. |
|
|
Хуан Тортик писал(а):
Зеленый: горит все время, пока работает контроллер
Красный(сигнализирует о препятствии): зажигается при появлении сигнала от TSOPа, тушится при его исчезновении
// vim:set ts=4 sw=4 et:
#include <io.h> // -> <tiny26.h>
#include <delay.h>
int main( void )
{
//конфигурация портов
DDRA = 0b11101111;
DDRB = 0b11111111;
PORTA = 0b11011111;
PORTB = 0b00000000;
while( 1 )
{
//цикл подачи пачки импульсов ик светодиодом
for( char i = 0; i < 30; i++ )
{
delay_us(14); // задержка 14 микросекунд, чтобы получилась частота примерно 36 кГц
PORTB ^= 0x01; // начало импульса
}
PORTB &= ~0x01;
if( !PINA.4 ) // проверка: если на ноге PA4 (к ней TSOP подключен) ноль (есть сигнал)
PORTA.7 = 0; // то зажигаем красный светик
else // если нет сигнала
PORTA.7 = 1; // то красный светик не зажигаем/тушим после последнего включения
delay_us( 1000 ); //пауза между пачками импульсов
}
return 0;
}
int tsop = 8; //tsop на разъёме 8
int irLed = 11; //ик-диод на разъёме 11
int Led = 13; //обычный диод на разъёме 13
int i, del=4, pause=14, num=10, val=0; /*переменные для: счётчик, время импульса, количество импульсов между пачками, количество импульсов в пачке, переменная для хранения сигнала с тсопа*/
void setup() //установка режима работы разъёмов.
{
pinMode (irLed, OUTPUT); // разъём 11 на вывод
pinMode(Led, OUTPUT); //разъём 13 на вывод
pinMode(tsop, INPUT); // разъём 8 на ввод
}
void loop() //постоянно повторяющийся код
{
for(i=0; i<num; i++) //цикл пофторяеца столько раз, сколько нужно импульсов
{
digitalWrite(irLed, HIGH); /зажигаем ик-диод/
delay(del); //ждём 0,004 секунды
digitalWrite(irLed, LOW); //гасим ик-диод
delay(del+1); // ждём 0,005 секунды
}
val=digitalRead(tsop); //считываем значение сигнала тсопа.
if (val==HIGH)
{
digitalWrite(Led, HIGH); //если сигнал высокий - то есть припятствия нет, то зажигаем диод
}
else
{
digitalWrite(Led, LOW); //если сигнал низкий - то есть препятствие есть, гасим диод
}
delay(pause*del); //ждём столько времени, сколько займёт пауза между пачками.
}
bersekter писал(а):Как я понимаю это 20 милиампер. Ииии... как расчитать нужный резистор???
Вернуться в Новичкам или основы основ роботостроения.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18