хрембрель релю

Компьютеры, программы, периферия, коммуникации, интернет, программирование и т.п. Ранее назывался Hard-n-Soft.
Сообщение
Автор
Wiz
ШИЗО
Благодарил (а): 45 раз
Поблагодарили: 35 раз

№ 0 Сообщение Wiz » 28 июл 2009 17:58

Подскажите пожалуйста, кто в теме. Мне нужно разробать несложное устройство, которое должно управляться с помощью ЭВМ. Этот девайс будет делать только одно - замыкать и размыкать релю. У меня программа АОН подключена к телефонной линии, и ловит весь звук с телефона. Поэтому радиотрубкой я уже управляю ВинАмпом. Выхожу на улицу, и, переключаю песни в в вине и регулирую громкость. Вот, я хочу с помощью трубки телеуправлять - выключать и включать свет, иные электроприборы. В крайнем случае, можно одной из релю отключить питание всего пилота, так сказать самоуничтожение. Например на улице я вижу, что дело труба - снимаю трубу, перевожу ее в тоновый набор, набираю код, АОН ловит эту тоновую посылку, правильным образом её интерпретирует (Я - это программа), и отключает питание у пилота - ВСЁ, выключается всё, компьютер, принтер, колонки. Вобщем ребята-железячники подскажите, как разработать этот хрембрель релю? СОМ-порта у меня нет, видимо придется через ЛПТ ? Мне только нужно замыкать и размыкать силовые релю. Дело в том, что проблема есть. Эта проблема - я так до сих пор и не понял как работыет транзистор, как его там включать, эммиттером, коллектыром или базой. Серьезно.

Wiz
ШИЗО
Благодарил (а): 45 раз
Поблагодарили: 35 раз

№ 1 Сообщение Wiz » 28 июл 2009 18:03

Ребят, посмотрите как просто управлять вином с помощью телефонной трубы
Может кто-то возьмет на вооружение, как управлять трубой компьютером.


Вот ваш кот:


//***************************************
//***************************************
//***************************************
//***************************************
//***************************************
//***************************************

namespace ToneFFT
{

const gmCount=7;

const DigitCount=12; //число цифр


const N=512; //не менять - иначе менять нужно массив gm[]

/* 0 1 2 3 4 5 6 */
static int gm[gmCount]={ 32, 36, 40, 44, 56, 62, 69}; //68 ???
// 697, 770, 852, 941, 1209, 1336, 1477
const double PI=3.1415926;

static double SIN[gmCount][N];
static double COS[gmCount][N];

struct GARMONYK
{
int a, //
n; //
};

//выделяет гармонику n из массива
static double fft(int n, int N, unsigned char *y)
{
double Asn=0, Acn=0;
for(int i=1; i<N; i++)
{
int Y=y;
Asn+=Y*SIN[n];
Acn+=Y*COS[n];
}

Asn=Asn*2/N;
Acn=Acn*2/N;

return sqrt(Asn*Asn+Acn*Acn);
}

static int digit[DigitCount][3]=
{
{ 3,5, '0' },
{ 0,4, '1' },
{ 0,5, '2' },
{ 0,6, '3' },
{ 1,4, '4' },
{ 1,5, '5' },
{ 1,6, '6' },
{ 2,4, '7' },
{ 2,5, '8' },
{ 2,6, '9' },
{ 3,4, '*' },
{ 3,6, '#' }
};

//инициализация таблиц синусов-косинусов
void DTFM_initSinCosTable()
{
for(int j=0; j<gmCount; j++)
for(int i=0; i<=N; i++)
{
double p=2*PI*gm[j]*i/N;
SIN[j]=sin(p);
COS[j]=cos(p);
}
}

//возвращает цифру тонового набора: 0,1, ...11,12
// (-1) - в случае не определения
//ToneDate - указатель на буфер (512 байт),
//содержащий запись
// на 11025 герц тонового сигнала
char ToneAnalyse(unsigned char *ToneDate)
{

GARMONYK garm[gmCount];

for(int i=0;i<gmCount;i++)
{
garm.a=int(fft(i,N,ToneDate));
garm.n=i;
}

//б®авЁа㥬
for(i=0;i<gmCount;i++)
for(int j=0;j<gmCount;j++)
{
if(garm[j].a<garm.a)
{
GARMONYK temp=garm;
garm=garm[j];
garm[j]=temp;
}
}

int found=0;
for(int j=0; j<DigitCount; j++)
{
int a=digit[j][0],
b=digit[j][1],
a2=garm[0].n,
b2=garm[1].n;
if ( (a == a2 && b==b2) || (a==b2 && b==a2) )
{

if (garm[0].a>13 && garm[1].a>12)
{

found=1;
return j;
}

}
}

//if (!found)

return -1;

}

};

//***************************************
//***************************************
//***************************************
//***************************************
//***************************************
//***************************************



{


//c помощью прямого Фурье выцепляем из звукового буфера ЦИФРУ
char tone=ToneFFT::ToneAnalyse(SwapBuffer);

if (tone>=0 && tone<=9)
{

STRING s="Command Winamp ";
s+=char(tone+'0');
List(s);


NumberToPcm(tone,-1,-1,FALSE); //FASLE- не генер.
//проигрывание одной цифры тоного режима
SoundPlay("output.pcm",13525,2, 0.5);


HWND hwndWinamp = FindWindow("Winamp v1.x",NULL);
if (tone==7)
{
SendMessage(hwndWinamp,WM_COMMAND,40044,0); List("WinAmp: prev track");
} //Previus track
if (tone==9) {SendMessage(hwndWinamp,WM_COMMAND,40048,0); List("WinAmp: next track");} //Next track

//назад на 5 сек
if (tone==4)
{
for(int i=0;i<5;i++)SendMessage(hwndWinamp,WM_COMMAND,40144,0);
List("WinAmp: назад");
}

//вперед на 5 сек
if (tone==6)
{
for(int i=0;i<5;i++)SendMessage(hwndWinamp,WM_COMMAND,40148,0);
List("WinAmp: вперед");
}

if (tone==2)
{
for(int i=0;i<5;i++)SendMessage(hwndWinamp,WM_COMMAND,40058,0);
List("WinAmp: VolumeUp");
}

if (tone==8)
{
for(int i=0;i<5i++)SendMessage(hwndWinamp,WM_COMMAND,40059,0);
List("WinAmp: VolumeDown");
}

}
}

Danila
Благодарил (а): 7 раз
Поблагодарили: 19 раз

№ 2 Сообщение Danila » 29 июл 2009 17:55

0: Wiz:
самое простое - управление через LPT порт. В проге меняешь состояние какого нибудь пина, а к нему через транзистор подключено реле.

Wiz
ШИЗО
Благодарил (а): 45 раз
Поблагодарили: 35 раз

№ 3 Сообщение Wiz » 30 июл 2009 18:40

неужели никому не нужен это хрембрель ?

djdance
Аватара пользователя
Благодарил (а): 1 раз
Поблагодарили: 4 раза

№ 4 Сообщение djdance » 31 июл 2009 11:27

1. плохой кот. Нет корректировки по интервалам и потерям, нет буферизации, нет учета длительности. Реакцию надо делать в отдельном потоке. Без этого всего в общем случае будет большой процент ошибок - проверено.

2. управление. Покупаешь девайс и цепляешь к usb.

Wiz
ШИЗО
Благодарил (а): 45 раз
Поблагодарили: 35 раз

№ 5 Сообщение Wiz » 31 июл 2009 15:40

Дэнс, ну это же ядро системы. При реализации это все учитывается естественно, это я как пример показал. При реализации все доводится до состоянии руля...

Большое спасибо за ссылку!

Дэнс извини...про компостацию моска...ты мне тоже помог..

Вернуться в «Компьютерный форум»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей