Спасибо за скетч, но судя по коду не совсем верно получается , длительность полупериода 60 мкс этоочень много , если частота приемника 38кГц то длительность на полупериод с учетом исполняемого кода должна примерно равнятся 9мкс
Спасибо за скетч, но судя по коду не совсем верно получается , длительность полупериода 60 мкс этоочень много , если частота приемника 38кГц то длительность на полупериод с учетом исполняемого кода должна примерно равнятся 9мкс
Последний раз редактировалось Chip; 27.10.2009 в 02:51.
Nissan Almera N16 продана
Последний раз редактировалось Chip; 27.10.2009 в 01:27.
Вот набросал код для ИК приемника на 38кГц
по позже допишу , чтобы была помехозащищенность
PHP код:
//http://compcar.ru
byte tsop = 11; //ИК приемник
byte irLed = 10; //ик-светодиод
byte Led = 13; //осветодиод(L) на плате
byte i; // счётчик
byte num=16; //число периодов несущей 38кГц в посылаемом пакете
byte impulse=8; // длительность полупериода
byte val=1; //переменная для хранения сигнала с ИК приемника
void setup()
{
pinMode (irLed, OUTPUT); // разъём 10 на вывод
pinMode(Led, OUTPUT); //разъём 13 на вывод
pinMode(tsop, INPUT); // разъём 11 на ввод
Serial.begin(115200);
}
void loop()
{
cli(); //запретить все прерывания
for(i=0; i<num; i++) //цикл несущей
{
digitalWrite(irLed, HIGH); //зажигаем ик-диод
delayMicroseconds(impulse); //положительный полупериод
digitalWrite(irLed, LOW); //гасим ик-диод
delayMicroseconds(impulse-1); //выравниваем скважность периода
}
digitalWrite(Led,(digitalRead(tsop)==LOW) ? HIGH:LOW); //если сигнал низкий то зажигаем светодиод
sei(); //разрешить прерывания
delayMicroseconds(impulse*3*num); //пауза между пакетами.
}
Последний раз редактировалось Chip; 27.10.2009 в 21:37.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)