Контроль "remote" усилителей средствами ардуино.
Приветствую, уважаемые!
Задача такая.
CarPC. Включать и выключать усилители планирую через ардуино.
Алгоритм таков:
ПК выходит из ждущего режима, ждет инициализации звуковой карты (внешняя USB), отправляет сигнал ардуино, тот включает ключ, управляющий "remote".
Вроде все просто, но. Сигнал ардуино должен получать периодически.
Раз в 10 сек, например. Если сигнал не получен, пин управления переходит в LOW, отключая усилители.
Нужно это на случай зависания ПК.
Помогите со скетчем, плз. Желательно с использованием таймера.
Спасибо!
зы: если было (поиск юзал), просьба не пинать, а наставить тру-линком на путь истинный :)
Re: Контроль "remote" усилителей средствами ардуино.
Может тебе эта тема будет интересна?
Re: Контроль "remote" усилителей средствами ардуино.
Не совсем...
Суть в том, что у меня уже используется прерывание для генерации ШИМ сигнала.
Думаю, к этому прерыванию привязаться.
Вот часть кода. Но что-то я пока не могу нормально согласовать процесс "отправил запрос от контроллера - получил ответ от ПК".
Колдую. :)
PHP код:
void AmpsRemoteContorl()
{
Serial.write(1);
incomingByte = Serial.read();
remoteOn = (incomingByte == 33);
if (remoteOn) digitalWrite(remotePin, HIGH); else digitalWrite(remotePin, LOW);
incomingByte = 0;
//обработчик вашего прерывания
}
//****************обработчик прерывания********************
ISR(TIMER2_OVF_vect)
{
TCNT2 = tcnt2;
remoteCount++;
if (remoteCount == 1000)
{
remoteCount = 0;
AmpsRemoteContorl();
}
Re: Контроль "remote" усилителей средствами ардуино.
Попробуй вот так данные от ПК принимать
Цитата:
if (Serial.available() > 0) {
incomingByte = Serial.read(); }
Re: Контроль "remote" усилителей средствами ардуино.
Вобщем, вот так работает.
Верю, что не очень грамотно, но работает.
Комп каждые 15 сек шлет сигнал, сбрасывая remoteCount в ноль.
Если сигнал не пришел, пин управления устанавливается в LOW.
PHP код:
//****************обработчик прерывания********************
ISR(TIMER2_OVF_vect)
{
TCNT2 = tcnt2;
remoteCount++;
if (remoteCount > 30000)
{
remoteOn = false;
remoteCount = 0;
}
//if (Serial.available() > 0)
incomingByte = Serial.read();
if (incomingByte > 32)
{
switch (incomingByte)
{
case 49: bytes[0] = 25; break;
case 50: bytes[0] = 50; break;
case 51: bytes[0] = 75; break;
case 52: bytes[0] = 100; break;
case 53: bytes[0] = 125; break;
case 54: bytes[0] = 150; break;
case 55: bytes[0] = 175; break;
case 56: bytes[0] = 200; break;
case 57: bytes[0] = 230; break;
case 48: remoteOn = true; remoteCount = 0; break;
};
//if (incomingByte == 50) bytes[0] = 50;
//Serial.write(bytes, 1);
//Serial.write(incomingByte);
//Serial.write(remoteCount);
//Serial.write(10000, DEC);
if (remoteOn) digitalWrite(remotePin, HIGH); else digitalWrite(remotePin, LOW);
}
pwm_time++;
if(bytes[0] > pwm_time) D13_High; else D13_LOW;
}
----------------------------------------------
что-то я погорячился видимо на счет 15 сек...
надо поменьше.
иначе, включение звука произойдет с основательной задержкой, что не айс.
Re: Контроль "remote" усилителей средствами ардуино.
работает криво, как сабля...
отправляем 48, ремоут включается.
отправляем другое значение, ремоут гаснет...
нид хэлп.. :confused:
-----------------------------------
уже не надо :D
опять с типами данных намудрил. :rolleyes:
int - для remoteCount как-то не подходило...
как-то так:
PHP код:
volatile long remoteCount = 0;
Re: Контроль "remote" усилителей средствами ардуино.
Код подполировал. Замечание Chip не оставил без внимания. Все отлично! :)
ШИМ работает, кнопки на руль работают, вкл/выкл усей работает.
Осталось все в машину перенести. :D
Re: Контроль "remote" усилителей средствами ардуино.
Перенес... А тема не понадобилась :eek: :D
Процессор Alpine PXA-H700 все делает сам.
Т.е., у него специальный вывод есть "Rem Out",
который активируется после загрузки процессора.
Проц подключен по оптике через M-Audio Transit.
Никаких посторонних шумов/цыков нет.
ps: вдруг кому-то пригодится? ;)
Re: Контроль "remote" усилителей средствами ардуино.
Блок питания М 4 АТ имеет выход на управление реле РЕМОУТ усилителя и прочей нагрузки.
Re: Контроль "remote" усилителей средствами ардуино.
Мне оно не надо. Нет у меня блоков питания, в обычном смысле. Ноут у меня.
Если внимательно прочитать задачу, то можно еще увидеть контроль зависания ПК. Как М4 реагирует на зависание? А уси остались включенными...и аккум скончалсо ;)