Вобщем, вот так работает.
Верю, что не очень грамотно, но работает.
Комп каждые 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 сек...
надо поменьше.
иначе, включение звука произойдет с основательной задержкой, что не айс.