Итак, магнитола пришла!
Как и писал, будет установлена вместо штатной ЗА планшетом.
Интерфейс рулевого управления в ней цифровой. За ссылку на описание протокола проводного пульта на Clarion спасибо
Alex_St!
http://www.wheelremote.ru/useful.shtml?w_alpine
Написал для Ардуино скетч для реализации протокола (пока только функция посылки пакета). Провод управления от магнитолы можно подключать напрямую к цифровому выходу Arduino. Чуть позже доделаю все остальное, выложу полный скетч и печатку.
Код:
#define REMOTE_PIN 13
unsigned long time=0;
unsigned int last_time=0;
void setup()
{
pinMode(REMOTE_PIN, OUTPUT);
Serial.begin (115200);
}
void loop()
{
write(0x6086, 0x1B); //Для примера команда увеличения громкости каждые 100мс
delay(100);
// write(0x6086, 0x1D);
// delay(1000);
}
void write(int adress, byte command) //Выдача команды управления магнитоле
{
digitalWrite(REMOTE_PIN, HIGH);
time=micros();
last_time=8960;
while ((micros()-time)<last_time) {}
digitalWrite(REMOTE_PIN, LOW) ;
time=micros();
last_time=4460;
write_byte(adress&0xFF);
write_byte((adress>>8)&0xFF);
write_byte(command);
write_byte(command^0xFF);
while ((micros()-time)<last_time) {}
digitalWrite(REMOTE_PIN, HIGH);
delayMicroseconds(552);
digitalWrite(REMOTE_PIN, LOW);
}
void write_byte(byte BYTE) //Посылка байта магнитоле
{
boolean m[8];
for (byte i=0; i<8; i++)
{
if (((BYTE&(1<<i))>>i)==1)
m[i]=1;
else m[i]=0;
}
for (byte i=0; i<8; i++)
{
write_bit(m[i]);
}
}
void write_bit(boolean BIT) //Посылка бита магнитоле
{
if (BIT==1)
{
while ((micros()-time)<last_time) {}
digitalWrite(REMOTE_PIN, HIGH);
delayMicroseconds(552);
digitalWrite(REMOTE_PIN, LOW);
time=micros();
last_time=1682;
}
else
{
while ((micros()-time)<last_time) {}
digitalWrite(REMOTE_PIN, HIGH);
delayMicroseconds(552);
digitalWrite(REMOTE_PIN, LOW);
time=micros();
last_time=552;
}
}